鱼C论坛

 找回密码
 立即注册
查看: 2820|回复: 12

问题求助

[复制链接]
发表于 2022-10-21 14:33:26 | 显示全部楼层 |阅读模式

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

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

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

使用道具 举报

发表于 2022-10-21 15:07:42 | 显示全部楼层
你这个编译能过的去么????
数据类型一团乱, 名字和字符要用char 成绩可以用int,
printf("期末平均成绩为:");
        scanf("%s %s %s %s",&b[0],&b[1],&b[2],&b[3]);  这一句是把成绩按字符串存进去的,里面存的88 99 66 55 这些数字的字符编码,根本就不是这些数值,输出也必定不是你想要的
//////////////////////
int a;
scanf("%c", &a);
printf("%d", a);
输入8,输出可不是8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

能啊,改了之后输出的数是4099,也不符合我写的啊,我写的都是10的倍数,为什么加起来是4099
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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                运行结果还是没有出现名字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 15:27:11 | 显示全部楼层
i<=4已改为i<=3    输入成绩的%c 也改为%d,但结果只有4000,而且名字也没有打印出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 15:38:24 | 显示全部楼层
声明就声明错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 15:59:09 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-21 16:13 编辑

        楼主,好好检查一下这些逻辑,简直乱七八糟,感觉是在写小说,不是在写代码,到底判断和操作的条件各是什么,用文字说出来。
        if(b[i]>90&&c[i]=='Y'){
                g[i][i]=g[i][i]+10000;
         }
        if(b[i]>90&&c[i]=='N'){
                 g[i][i]=g[i][i]+2000;
         }
        if(b[i]>85&&d[i]>80){
                g[i][i]=g[i][i]+4000;
        } 
        if(b[i]>85&&e[i]=='Y'){
                g[i][i]=g[i][i]+1000;
        }
        if(b[i]>80&&f[i]=='Y'){
                g[i][i]=g[i][i]+850;
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 21:47:09 | 显示全部楼层
以改,但还是有问题#include <stdio.h>
int main()
{
        char c[4],e[4],f[4],h[4];//c[],f[],h[],e[]均为输入Y/N
        char A,B,C,D;
        int i,grade[4],goal[4],name[4][5];
        int sum[4]={0};
        printf("          姓名:");  //输入名字
        scanf("%s %s %s %s",name[0],name[1],name[2],name[3]);
        printf("期末平均成绩为:");//输入成绩
        scanf("%d %d %d %d",&grade[0],&grade[1],&grade[2],&grade[3]);
         printf("班级评议成绩为:"); //输入成绩
        scanf("%d %d %d %d",&goal[0],&goal[1],&goal[2],&goal[3]);
        printf("是否获得国家级奖项:Y/N ");//是否获奖
        scanf("%c %c %c %c",&c[0],&c[1],&c[2],&c[3]);
        printf("是否家庭困难:Y/N ");//是否家庭困难
        scanf("%c %c %c %c",f[0],f[1],f[2],f[3]);
       
        printf("是否为班干部:Y/N ");//是否为班干部
        scanf("%c %c %c %c",h[0],h[1],h[2],h[3]);
        for(i=0;i<=3;i++)//得到4个sum
         {
        if(grade[i]>90&&c[i]=='Y'){
                sum[i]=sum[i]+10000;
         }
        if(grade[i]>90&&c[i]=='N'){
                 sum[i]=sum[i]+2000;
         }
        if(grade[i]>85&&goal[i]>80){
                sum[i]=sum[i]+4000;
        }
        if(grade[i]>85&&e[i]=='Y'){
                sum[i]=sum[i]+1000;
        }
        if(grade[i]>80&&f[i]=='Y'){
                sum[i]=sum[i]+850;
        }
}
        int max=sum[0];
        for(i=0;i<=3;i++)//得出最大值
        {
                if(sum[i]>max){
                        max=sum[i];
                       
                }
                        }
                        printf("%d %s",max,name[i]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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就没了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

int main()
{
        char c[4],e[4],f[4],h[4];//c[],f[],h[],e[]均为输入Y/N
        char A,B,C,D;
        int i,grade[4],goal[4],name[4][5];
        int sum[4]={0};
        printf("          姓名:");  //输入名字
        scanf("%s %s %s %s",name[0],name[1],name[2],name[3]);
        printf("期末平均成绩为:");//输入成绩
        scanf("%d %d %d %d",&grade[0],&grade[1],&grade[2],&grade[3]);
         printf("班级评议成绩为:"); //输入成绩
        scanf("%d %d %d %d",&goal[0],&goal[1],&goal[2],&goal[3]);
        printf("是否获得国家级奖项:Y/N ");//是否获奖
        scanf("%c %c %c %c",&c[0],&c[1],&c[2],&c[3]);
        printf("是否家庭困难:Y/N ");//是否家庭困难
        scanf("%c %c %c %c",f[0],f[1],f[2],f[3]);
      
        printf("是否为班干部:Y/N ");//是否为班干部
        scanf("%c %c %c %c",h[0],h[1],h[2],h[3]);
        for(i=0;i<=3;i++)//得到4个sum
         {
        if(grade[i]>90&&c[i]=='Y'){
                sum[i]=sum[i]+10000;
         }
        if(grade[i]>90&&c[i]=='N'){
                 sum[i]=sum[i]+2000;
         }
        if(grade[i]>85&&goal[i]>80){
                sum[i]=sum[i]+4000;
        }
        if(grade[i]>85&&e[i]=='Y'){
                sum[i]=sum[i]+1000;
        }
        if(grade[i]>80&&f[i]=='Y'){
                sum[i]=sum[i]+850;
        }
}
        int max=sum[0];
        for(i=0;i<=3;i++)//得出最大值
        {
                if(sum[i]>max){
                        max=sum[i];
                       
                }
                        }
                        printf("%d %s",max,name[i]);
        return 0;
}      这样呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 22:43:19 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-21 22:44 编辑
你干嘛哈哈哎哟 发表于 2022-10-21 22:18
int main()
{
        char c[4],e[4],f[4],h[4];//c[],f[],h[],e[]均为输入Y/N

#include <stdio.h>

int main(void)
{
        char name[4][256] , c[4] , d[4] , e[4] , f[4] , h[4]                 ;
        int i , grade[4] , goal[4] = {0} , max , sum[4] = {0}                ;
        printf("          姓名:")                                           ;
        scanf("%s%s%s%s", name[0] , name[1] , name[2] , name[3])             ;
        printf("期末平均成绩为:")                                           ;
        scanf("%d%d%d%d", & grade[0] , & grade[1] , & grade[2] , & grade[3]) ;
        printf("班级评议成绩为:") ; //输入成绩 
        scanf("%d%d%d%d", & grade[0] , & goal[1] , & goal[2] , & goal[3])    ;
        printf("是否获得国家级奖项:")                                        ;
        scanf("%c %c %c %c" , & c[0] , & c[1] , & c[2] , & c[3])             ;
        printf("是否家庭困难:")                                             ;
        scanf("%c %c %c %c" , & f[0] , & f[1] , & f[2] , & f[3])             ;
        printf("是否为班干部:Y/N")                                          ;
        scanf("%c %c %c %c" , & h[0] , & h[1] , & h[2] , & h[3])             ;
          
        for(i = 0 ; i < 4 ; i ++) { 
                if(grade[i] > 90 && c[i] == 'Y')  sum[i] += 10000            ;
                if(grade[i] > 90 && c[i] == 'N')  sum[i] += 2000             ;
                if(grade[i] > 85 && goal[i] > 80) sum[i] += 4000             ;
                if(grade[i] > 85 && e[i] == 'Y')  sum[i] += 1000             ;
                if(grade[i] > 80 && f[i] == 'Y')  sum[i] += 850              ;
        }
 
        for(max = 0 , i = 1 ; i < 4 ; i ++) if(sum[i] > sum[max]) max = i    ;
        printf("%d , %s\n" , sum[max] , name[max])                           ;
}
        编译、运行实况:
D:\[00.Exerciese.2022]\C>g++ -o zx zx.c

D:\[00.Exerciese.2022]\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:\[00.Exerciese.2022]\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-22 07:24:59 | 显示全部楼层
建议楼主还是先学习变量吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-23 14:47:16 | 显示全部楼层
发帖请用代码格式
就像这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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