xvsgesshergdfbd 2021-09-07 13:17 采纳率: 100%
浏览 367
已结题

c++问题:功能: 班级成绩表的程序实现 输入:输入n个学生的:学号,姓名,语文,数学,英语成绩 输出n个学生的三科(语数英)平均成绩,班级单科平均成绩。

#include<string>
using namespace std;

struct student{
 int    id;
    string name[5];
    int chinese;
    int math;
    int english;
  double average;
 }stu[5];
int main( )
{
  int i,n,j;
  int sum[3];
  int ave[3];
  struct student s1;
  printf("输入 n:");
  scanf("%d",&n);
  printf("输入学生学号、姓名、成绩\n");
  for(i=1;i<=n;i++){
    printf("No.%d:",i);
    scanf("% d% s% d% d% d",&s1.id,&s1.name,&s1.chinese,&s1.math,&s1.english);
    s1.average=(s1.math+s1.english+s1.chinese)/3.0;
    printf(" 三科平均成绩:%lf\n",s1.average);
     
 };
 
  for(j = 0;j < n;j++) {
        
        sum[0] += stu[j].chinese;
        sum[1] += stu[j].math;
        sum[2] += stu[j].english;
        ave[0] = sum[0] / 3;
        ave[1] = sum[1] / 3;
        ave[2] = sum[2] / 3;
    }
   printf("语文平均分;%d;数学平均分:%d;英语平均分:%d",ave[0],ave[1],ave[2]);   
 
 return 0;
}```
运行结果:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/898666199036117.png "=600 #left")
  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2021-09-07 13:21
    关注

    错误比较多:
    string name[5];---这不对啊,名字为啥用string数组啊? string name或者 char name[20]就可以了
    scanf("% d% s% d% d% d",&s1.id,&s1.name,&s1.chinese,&s1.math,&s1.english);
    改成
    scanf("%d%s%d%d%d",&s1.id,s1.name,&s1.chinese,&s1.math,&s1.english);

    #include<string>
    using namespace std;
    struct student{
     int    id;
        char name[20];
        int chinese;
        int math;
        int english;
      double average;
     }stu[5];
    int main( )
    {
      int i,n,j;
      int sum[3] = {0};
      float ave[3] = {0};
      printf("输入 n:");
      scanf("%d",&n);
      printf("输入学生学号、姓名、成绩\n");
      for(i=1;i<=n;i++){
        printf("No.%d:",i);
        scanf("%d%s%d%d%d",&stu[i-1].id,&stu[i-1].name,&stu[i-1].chinese,&stu[i-1].math,&stu[i-1].english);
        stu[i-1].average=(stu[i-1].math+stu[i-1].english+stu[i-1].chinese)/3.0;
        printf(" 三科平均成绩:%lf\n",stu[i-1].average);
     };
      for(j = 0;j < n;j++) {
            sum[0] += stu[j].chinese;
            sum[1] += stu[j].math;
            sum[2] += stu[j].english;
        }
            ave[0] = sum[0] / 3.0;
            ave[1] = sum[1] / 3.0;
            ave[2] = sum[2] / 3.0;
       printf("语文平均分;%.1f;数学平均分:%.1f;英语平均分:%.1f",ave[0],ave[1],ave[2]);   
     return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月15日
  • 已采纳回答 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了