你干嘛哈哈哎哟 发表于 2022-10-21 14:33:26

问题求助

         #include <stdio.h>
int main()
{
        int a,b,c,d,e,f;
        char A,B,C,D;
        int i;
        int g={0};
        printf("          姓名:");
        scanf("%s %s %s %s",&a,&a,&a,&a);
        printf("期末平均成绩为:");
        scanf("%s %s %s %s",&b,&b,&b,&b);
        printf("是否获得国家级奖项:");
        scanf("%c %c %c %c",c,c,c,c);
        printf("是否家庭困难:");
        scanf("%c %c %c %c",f,f,f,f);
        printf("是否为班干部:Y/N");
        scanf("%c %c %c %c",d,d,d,d);
          
        for(i=0;i<=4;i++){
        if(b>90&&c=='Y'){
                g=g+10000;
       }
        if(b>90&&c=='N'){
               g=g+2000;
       }
        if(b>85&&d>80){
                g=g+4000;
        }
        if(b>85&&e=='Y'){
                g=g+1000;
        }
        if(b>80&&f=='Y'){
                g=g+850;
        }
}
        int max=g;
        for(i=0;i<=4;i++)
        {
                if(g>max){
                        max=g;
                       
                }
                        }
                        printf("%d %s",max,a);
        return 0;
}
姓名:LL JJ KK NN
期末平均成绩为:88 99 66 55
是否获得国家级奖项:Y N Y N
是否家庭困难:Y Y Y Y
是否为班干部:Y/N Y
6487248                                    为什么打印出来的数字会这么大,而且没有打印出来获得最多钱的人的名字,原来的目的是打印出获得最多钱的人的名字和钱的数目

两手空空儿 发表于 2022-10-21 15:07:42

你这个编译能过的去么????
数据类型一团乱, 名字和字符要用char 成绩可以用int,
printf("期末平均成绩为:");
      scanf("%s %s %s %s",&b,&b,&b,&b);这一句是把成绩按字符串存进去的,里面存的88 99 66 55 这些数字的字符编码,根本就不是这些数值,输出也必定不是你想要的
//////////////////////
int a;
scanf("%c", &a);
printf("%d", a);
输入8,输出可不是8

你干嘛哈哈哎哟 发表于 2022-10-21 15:18:29

两手空空儿 发表于 2022-10-21 15:07
你这个编译能过的去么????
数据类型一团乱, 名字和字符要用char 成绩可以用int,
printf("期末平均 ...

能啊,改了之后输出的数是4099,也不符合我写的啊,我写的都是10的倍数,为什么加起来是4099

你干嘛哈哈哎哟 发表于 2022-10-21 15:20:08

          姓名:ll hh kk mm
期末平均成绩为:99 88 77 66
是否获得国家级奖项:Y/N Y Y Y Y
是否家庭困难:Y/N Y Y Y Y
是否为班干部:Y/N Y Y Y Y
4099                运行结果还是没有出现名字

你干嘛哈哈哎哟 发表于 2022-10-21 15:27:11

i<=4已改为i<=3    输入成绩的%c 也改为%d,但结果只有4000,而且名字也没有打印出来

jhq999 发表于 2022-10-21 15:38:24

声明就声明错了

jackz007 发表于 2022-10-21 15:59:09

本帖最后由 jackz007 于 2022-10-21 16:13 编辑

      楼主,好好检查一下这些逻辑,简直乱七八糟,感觉是在写小说,不是在写代码,到底判断和操作的条件各是什么,用文字说出来。
      if(b>90&&c=='Y'){
                g=g+10000;
         }
      if(b>90&&c=='N'){
               g=g+2000;
         }
      if(b>85&&d>80){
                g=g+4000;
      }
      if(b>85&&e=='Y'){
                g=g+1000;
      }
      if(b>80&&f=='Y'){
                g=g+850;
      }

你干嘛哈哈哎哟 发表于 2022-10-21 21:47:09

以改,但还是有问题#include <stdio.h>
int main()
{
        char c,e,f,h;//c[],f[],h[],e[]均为输入Y/N
        char A,B,C,D;
        int i,grade,goal,name;
        int sum={0};
        printf("          姓名:");//输入名字
        scanf("%s %s %s %s",name,name,name,name);
        printf("期末平均成绩为:");//输入成绩
        scanf("%d %d %d %d",&grade,&grade,&grade,&grade);
       printf("班级评议成绩为:"); //输入成绩
        scanf("%d %d %d %d",&goal,&goal,&goal,&goal);
        printf("是否获得国家级奖项:Y/N ");//是否获奖
        scanf("%c %c %c %c",&c,&c,&c,&c);
        printf("是否家庭困难:Y/N ");//是否家庭困难
        scanf("%c %c %c %c",f,f,f,f);
       
        printf("是否为班干部:Y/N ");//是否为班干部
        scanf("%c %c %c %c",h,h,h,h);
        for(i=0;i<=3;i++)//得到4个sum
       {
        if(grade>90&&c=='Y'){
                sum=sum+10000;
       }
        if(grade>90&&c=='N'){
               sum=sum+2000;
       }
        if(grade>85&&goal>80){
                sum=sum+4000;
        }
        if(grade>85&&e=='Y'){
                sum=sum+1000;
        }
        if(grade>80&&f=='Y'){
                sum=sum+850;
        }
}
        int max=sum;
        for(i=0;i<=3;i++)//得出最大值
        {
                if(sum>max){
                        max=sum;
                       
                }
                        }
                        printf("%d %s",max,name);
        return 0;
}

你干嘛哈哈哎哟 发表于 2022-10-21 21:47:57

本帖最后由 你干嘛哈哈哎哟 于 2022-10-21 22:18 编辑

          姓名:LL JJ KK MM
期末平均成绩为:99 88 77 66
班级评议成绩为:99 88 77 66
是否获得国家级奖项:Y/N Y Y Y Y
是否家庭困难:Y/N
--------------------------------
Process exited after 16.64 seconds with return value 3221225477
请按任意键继续. . .
到了是否家庭困难:Y/N就没了

你干嘛哈哈哎哟 发表于 2022-10-21 22:18:24

jackz007 发表于 2022-10-21 15:59
楼主,好好检查一下这些逻辑,简直乱七八糟,感觉是在写小说,不是在写代码,到底判断和操作的条件 ...

int main()
{
      char c,e,f,h;//c[],f[],h[],e[]均为输入Y/N
      char A,B,C,D;
      int i,grade,goal,name;
      int sum={0};
      printf("          姓名:");//输入名字
      scanf("%s %s %s %s",name,name,name,name);
      printf("期末平均成绩为:");//输入成绩
      scanf("%d %d %d %d",&grade,&grade,&grade,&grade);
         printf("班级评议成绩为:"); //输入成绩
      scanf("%d %d %d %d",&goal,&goal,&goal,&goal);
      printf("是否获得国家级奖项:Y/N ");//是否获奖
      scanf("%c %c %c %c",&c,&c,&c,&c);
      printf("是否家庭困难:Y/N ");//是否家庭困难
      scanf("%c %c %c %c",f,f,f,f);
      
      printf("是否为班干部:Y/N ");//是否为班干部
      scanf("%c %c %c %c",h,h,h,h);
      for(i=0;i<=3;i++)//得到4个sum
         {
      if(grade>90&&c=='Y'){
                sum=sum+10000;
         }
      if(grade>90&&c=='N'){
               sum=sum+2000;
         }
      if(grade>85&&goal>80){
                sum=sum+4000;
      }
      if(grade>85&&e=='Y'){
                sum=sum+1000;
      }
      if(grade>80&&f=='Y'){
                sum=sum+850;
      }
}
      int max=sum;
      for(i=0;i<=3;i++)//得出最大值
      {
                if(sum>max){
                        max=sum;
                     
                }
                        }
                        printf("%d %s",max,name);
      return 0;
}      这样呢

jackz007 发表于 2022-10-21 22:43:19

本帖最后由 jackz007 于 2022-10-21 22:44 编辑

你干嘛哈哈哎哟 发表于 2022-10-21 22:18
int main()
{
      char c,e,f,h;//c[],f[],h[],e[]均为输入Y/N


#include <stdio.h>

int main(void)
{
      char name , c , d , e , f , h               ;
      int i , grade , goal = {0} , max , sum = {0}                ;
      printf("          姓名:")                                           ;
      scanf("%s%s%s%s", name , name , name , name)             ;
      printf("期末平均成绩为:")                                           ;
      scanf("%d%d%d%d", & grade , & grade , & grade , & grade) ;
      printf("班级评议成绩为:") ; //输入成绩
      scanf("%d%d%d%d", & grade , & goal , & goal , & goal)    ;
      printf("是否获得国家级奖项:")                                        ;
      scanf("%c %c %c %c" , & c , & c , & c , & c)             ;
      printf("是否家庭困难:")                                             ;
      scanf("%c %c %c %c" , & f , & f , & f , & f)             ;
      printf("是否为班干部:Y/N")                                          ;
      scanf("%c %c %c %c" , & h , & h , & h , & h)             ;
         
      for(i = 0 ; i < 4 ; i ++) {
                if(grade > 90 && c == 'Y')sum += 10000            ;
                if(grade > 90 && c == 'N')sum += 2000             ;
                if(grade > 85 && goal > 80) sum += 4000             ;
                if(grade > 85 && e == 'Y')sum += 1000             ;
                if(grade > 80 && f == 'Y')sum += 850            ;
      }

      for(max = 0 , i = 1 ; i < 4 ; i ++) if(sum > sum) max = i    ;
      printf("%d , %s\n" , sum , name)                           ;
}
      编译、运行实况:
D:\\C>g++ -o zx zx.c

D:\\C>zx
          姓名:LL JJ KK NN
期末平均成绩为:88 89 66 55
班级评议成绩为:88 99 66 55
是否获得国家级奖项:Y N Y N
是否家庭困难:Y Y Y Y
是否为班干部:Y/NY Y Y Y
4000 , JJ

D:\\C>

jhq999 发表于 2022-10-22 07:24:59

建议楼主还是先学习变量吧

高山 发表于 2022-10-23 14:47:16

发帖请用代码格式
就像这样
页: [1]
查看完整版本: 问题求助