C语言编程题:根据学生成绩评定等级
发布网友
发布时间:2022-05-27 13:58
我来回答
共3个回答
热心网友
时间:2023-07-22 11:09
就是因为字符型不能接受多于一个字符,才导致输入name时,影响了后面a的接受。
你把name改成字符数组就行了。
#include<stdio.h>
main()
{
int a;
char name[10];
scanf("%s%d",name,&a);/* 这里双引号中的逗号去掉,输入时换行或者空格分隔输入;name改为数组后,&去掉*/
if(a>=90)
printf("%s的成绩为优秀\n",name);
else if(a>=80)
printf("%s的成绩为良好\n",name);
else if(a>=70)
printf("%s的成绩为中等\n",name);
else if(a>=60)
printf("%s的成绩为及格\n",name);
else if(a<60)
printf("%s的成绩为不及格\n",name);
}
还有一个问题,输入的时候要
tom 95
这样用空格分隔;或者
tom
95
这样换行输入。
因为%s输入字符串,认为遇到空格或者换行时输入结束。
而如果用“,”,系统认为是字符串的一部分,所以tom,95就放到name数组中了。
热心网友
时间:2023-07-22 11:09
希望我的回答对你有帮助,可以的话记得采纳哈,谢拉
首先讲char name; //在这里name是字符,不是字符串,所以你没办法输入长名字,建议改为char name[20]; //此时name就是字符串了,可以存放19(20-1)个字节长度的名字
另外有一点要注意的是这个语句:scanf("%s,%d",&name,&a);
在name和a的输入之间要用“,”隔开,因为你这里就是用的就是逗号%s,%d追问您能试一试我程序么 我比如我输tom,95 程序却输出tom,95的成绩为不合格。。。怎么回事啊
热心网友
时间:2023-07-22 11:10
char name;
最好改为:
char name[100];追问您能试一试我程序么 我比如我输tom,95 程序却输出tom,95的成绩为不合格。。。怎么回事啊