鱼C论坛

 找回密码
 立即注册
查看: 1038|回复: 3

[已解决]帮忙找错,十分感谢

[复制链接]
发表于 2019-12-17 19:52:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#define N 10
extern int i,xuehao1;
struct fen
{
    float gaoshu1;
    float cyuyan1;
    float tiyu1;
    float yingyu1;
    float zhongguogemingshi1;
};
struct student
{
    char name[10];
    int xuehao;
    float gaoshu;
    float cyuyan ;
    float tiyu ;
    float yingyu;
    float zhongguogemingshi ;
    float average ;
    struct  fen xuefen;
}stu[N];
void found( int n);
float ave(float stu[1].gaoshu,float stu[1].cyuyan,float stu[1].tiyu,float stu[i].yingyu,float stu[i].zhongguogemingshi);
main()
{
    float zongxuefen[N];
    float average[N];
    int xuehao1;
    int j,ave,a=0,b=0,c=0,d=0;
    float t;
    char degree;
    printf("请依次分别输入学生的姓名,高等数学,c语言程序设计,体育,英语,中国革命史成绩");
    for(i=0;i<N;i++)
    {
        scanf("%c",&stu[i].name);
        scanf("%f",&stu[i].gaoshu);
        scanf("%f",&stu[i].cyuyan);
        scanf("%f",&stu[i].tiyu);
        scanf("%f",&stu[i].yingyu);
        scanf("%f",&stu[i].zhongguogemingshi);
    }
    for(i=0;i<N;i++)
    {
        if(stu[i].gaoshu>=60)
            stu[i].xuefen.gaoshu1=5;
        else
            stu[i].xuefen.gaoshu1=0;
        if(stu[i].cyuyan>=60)
            stu[i].xuefen.cyuyan1=3.5;
        else
            stu[i].xuefen.cyuyan1=0;
        if(stu[i].tiyu>=60)
            stu[i].xuefen.tiyu1=2;
        else
            stu[i].xuefen.tiyu1=0;
        if(stu[i].yingyu>=60)
            stu[i].xuefen.yingyu1=3;
        else
            stu[i].xuefen.yingyu1=0;
        if(stu[i].zhongguogemingshi>=60)
            stu[i].xuefen.zhongguogemingshi1=2;
        else
            stu[i].xuefen.zhongguogemingshi1=0;
        average[i]=ave(stu[i].gaoshu,  stu[i].cyuyan,  stu[i].tiyu,  stu[i].yingyu,  stu[i].zhongguogemingshi);
        zongxuefen[1]=stu[i].xuefen.gaoshu1+stu[i].xuefen.cyuyan1+stu[i].xuefen.tiyu1+stu[i].xuefen.yingyu1+stu[i].xuefen.zhongguogemingshi1;

    }

        
        for(i=0;i<N;i++)
        {
           if(ave<60)
              degree='D';
           if(60<=ave&&ave<75)
              degree='C';
           if(75<=ave&&ave<90)
              degree='B';
           if(90<=ave&&ave<=100)
              degree='A';
           switch(degree)
           {
              case 'A':a++;
              case 'B':b++;
              case 'C':c++;
              case 'D':d++;
           }
   

        }
            printf("在分数段0~60的人有%d个\n",d);
            printf("在分数段60~75的人有%d个\n",c);
            printf("在分数段75~90的人有%d个\n",b);
            printf("在分数段90~100的人有%d个\n",a);
            printf("--------------------------------------------------");
            printf("请输入要查找的学生的学号");
            scanf("%d",&xuehao1);
            found(xuehao1);
            for(i=0;i<9;++i)
            {      
                for(j=0;j<9-i;++j)     
                {           
                    if(zongxuefen[j]>zongxuefen[j+1])           
                    {               
                        t=zongxuefen[j];               
                        zongxuefen[j]=zongxuefen[j+1];               
                        zongxuefen[j+1]=t;            
                    }   
                }
            }  
                for(j=0;j<10;++j)
                {
                    printf("%-5d\n ",zongxuefen[j]);      
                     
                }
}
float ave(float stu[i].gaoshu,float  stu[i].cyuyan,float  stu[i].tiyu,float  stu[i].yingyu,float  stu[i].zhongguogemingshi)
{
    float sum;
    sum=(stu[i].gaoshu + stu.cyuyan + stu.tiyu + stu[i].yingyu + stu[i].zhongguogemingshi);
    return sum/5;
}
void found(int xuehao1)
{
    for(i=0;i<N;i++)
    {
        if((xuehao1-stu[i].xuehao)==0)
            printf("名字:%c\n 高数成绩:%f\n c语言成绩:%f\n 体育成绩:%f\n 英语成绩:%f\n 中国革命史:%f\n",stu[i].name,stu[i].gaoshu,stu[i].cyuyan,stu[i].tiyu,stu[i].yingyu,stu[i].zhongguogemingshi);
    }
   
}


最佳答案
2019-12-18 09:42:40
我的编译器使用scanf函数会提示 _CRT_SECURE_NO_WARNINGS 警告,建议我使用新版本的scanf_s函数,原因是这些函数不安全,可能会造成内存泄露等
第一行是宏定义,可以忽略这些警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-17 21:20:49 | 显示全部楼层
目前修改后的代码已经可以运行,你的具体需求没有写明,所以就只帮你修改了一些错误

  1. #define _CRT_SECURE_NO_WARNINGS

  2. #include<stdio.h>
  3. #define N 10
  4. extern int i, xuehao1;
  5. struct fen
  6. {
  7.         float gaoshu1;
  8.         float cyuyan1;
  9.         float tiyu1;
  10.         float yingyu1;
  11.         float zhongguogemingshi1;
  12. };
  13. struct student
  14. {
  15.         char name[10];
  16.         int xuehao;
  17.         float gaoshu;
  18.         float cyuyan;
  19.         float tiyu;
  20.         float yingyu;
  21.         float zhongguogemingshi;
  22.         float average;
  23.         struct  fen xuefen;
  24. };

  25. void found(struct student stu[N],int n);
  26. float ave(struct student stu[N],int i);

  27. int main()
  28. {
  29.         struct student stu[N];
  30.         float zongxuefen[N];
  31.         float average[N];
  32.         int i;
  33.         int xuehao1;
  34.         int j, a = 0, b = 0, c = 0, d = 0;
  35.         float t;
  36.         char degree;
  37.         printf("请依次分别输入学生的姓名,高等数学,c语言程序设计,体育,英语,中国革命史成绩:\n");
  38.         for (i = 0; i < N; i++)
  39.         {
  40.                 scanf("%c", &stu[i].name);
  41.                 scanf("%f", &stu[i].gaoshu);
  42.                 scanf("%f", &stu[i].cyuyan);
  43.                 scanf("%f", &stu[i].tiyu);
  44.                 scanf("%f", &stu[i].yingyu);
  45.                 scanf("%f", &stu[i].zhongguogemingshi);
  46.         }
  47.         for (i = 0; i < N; i++)
  48.         {
  49.                 if (stu[i].gaoshu >= 60)
  50.                         stu[i].xuefen.gaoshu1 = 5;
  51.                 else
  52.                         stu[i].xuefen.gaoshu1 = 0;
  53.                 if (stu[i].cyuyan >= 60)
  54.                         stu[i].xuefen.cyuyan1 = 3.5;
  55.                 else
  56.                         stu[i].xuefen.cyuyan1 = 0;
  57.                 if (stu[i].tiyu >= 60)
  58.                         stu[i].xuefen.tiyu1 = 2;
  59.                 else
  60.                         stu[i].xuefen.tiyu1 = 0;
  61.                 if (stu[i].yingyu >= 60)
  62.                         stu[i].xuefen.yingyu1 = 3;
  63.                 else
  64.                         stu[i].xuefen.yingyu1 = 0;
  65.                 if (stu[i].zhongguogemingshi >= 60)
  66.                         stu[i].xuefen.zhongguogemingshi1 = 2;
  67.                 else
  68.                         stu[i].xuefen.zhongguogemingshi1 = 0;
  69.                 average[i] = ave(stu,i);
  70.                 zongxuefen[1] = stu[i].xuefen.gaoshu1 + stu[i].xuefen.cyuyan1 + stu[i].xuefen.tiyu1 + stu[i].xuefen.yingyu1 + stu[i].xuefen.zhongguogemingshi1;

  71.         }


  72.         for (i = 0; i < N; i++)
  73.         {
  74.                 if (average[i] < 60)
  75.                         degree = 'D';
  76.                 if (60 <= average[i] && average[i] < 75)
  77.                         degree = 'C';
  78.                 if (75 <= average[i] && average[i] < 90)
  79.                         degree = 'B';
  80.                 if (90 <= average[i] && average[i] <= 100)
  81.                         degree = 'A';
  82.                 switch (degree)
  83.                 {
  84.                 case 'A':a++;
  85.                 case 'B':b++;
  86.                 case 'C':c++;
  87.                 case 'D':d++;
  88.                 }


  89.         }
  90.         printf("在分数段0~60的人有%d个\n", d);
  91.         printf("在分数段60~75的人有%d个\n", c);
  92.         printf("在分数段75~90的人有%d个\n", b);
  93.         printf("在分数段90~100的人有%d个\n", a);
  94.         printf("--------------------------------------------------\n");
  95.         printf("请输入要查找的学生的学号:\n");
  96.         scanf("%d", &xuehao1);
  97.         found(stu,xuehao1);
  98.         for (i = 0; i < 9; ++i)
  99.         {
  100.                 for (j = 0; j < 9 - i; ++j)
  101.                 {
  102.                         if (zongxuefen[j] > zongxuefen[j + 1])
  103.                         {
  104.                                 t = zongxuefen[j];
  105.                                 zongxuefen[j] = zongxuefen[j + 1];
  106.                                 zongxuefen[j + 1] = t;
  107.                         }
  108.                 }
  109.         }
  110.         for (j = 0; j < 10; ++j)
  111.         {
  112.                 printf("%-5lf\n ", zongxuefen[j]);

  113.         }

  114.         return 0;
  115. }
  116. float ave(struct student stu[N],int i)
  117. {
  118.         float sum;
  119.         sum = (stu[i].gaoshu + stu[i].cyuyan + stu[i].tiyu + stu[i].yingyu + stu[i].zhongguogemingshi);
  120.         return sum / 5;
  121. }
  122. void found(struct student stu[N],int xuehao1)
  123. {
  124.         int i;
  125.         for (i = 0; i < N; i++)
  126.         {
  127.                 if ((xuehao1 - stu[i].xuehao) == 0)
  128.                         printf("名字:%s\n 高数成绩:%f\n c语言成绩:%f\n 体育成绩:%f\n 英语成绩:%f\n 中国革命史:%f\n", stu[i].name, stu[i].gaoshu, stu[i].cyuyan, stu[i].tiyu, stu[i].yingyu, stu[i].zhongguogemingshi);
  129.         }

  130. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-18 09:29:18 | 显示全部楼层
Tec 发表于 2019-12-17 21:20
目前修改后的代码已经可以运行,你的具体需求没有写明,所以就只帮你修改了一些错误

非常感谢你,我还想问以下第一行的是什么东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-18 09:42:40 | 显示全部楼层    本楼为最佳答案   
我的编译器使用scanf函数会提示 _CRT_SECURE_NO_WARNINGS 警告,建议我使用新版本的scanf_s函数,原因是这些函数不安全,可能会造成内存泄露等
第一行是宏定义,可以忽略这些警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 14:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表