问题求助
#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 为什么打印出来的数字会这么大,而且没有打印出来获得最多钱的人的名字,原来的目的是打印出获得最多钱的人的名字和钱的数目 你这个编译能过的去么????
数据类型一团乱, 名字和字符要用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:07
你这个编译能过的去么????
数据类型一团乱, 名字和字符要用char 成绩可以用int,
printf("期末平均 ...
能啊,改了之后输出的数是4099,也不符合我写的啊,我写的都是10的倍数,为什么加起来是4099
姓名: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 运行结果还是没有出现名字 i<=4已改为i<=3 输入成绩的%c 也改为%d,但结果只有4000,而且名字也没有打印出来 声明就声明错了 本帖最后由 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;
} 以改,但还是有问题#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 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就没了 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: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> 建议楼主还是先学习变量吧 发帖请用代码格式
就像这样
页:
[1]