C语言编程题:根据学生成绩评定等级

发布网友 发布时间:2022-04-22 10:07

我来回答

3个回答

热心网友 时间:2022-07-10 02:54

就是因为字符型不能接受多于一个字符,才导致输入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数组中了。

热心网友 时间:2022-07-10 02:55

希望我的回答对你有帮助,可以的话记得采纳哈,谢拉
首先讲char name; //在这里name是字符,不是字符串,所以你没办法输入长名字,建议改为char name[20]; //此时name就是字符串了,可以存放19(20-1)个字节长度的名字
另外有一点要注意的是这个语句:scanf("%s,%d",&name,&a);
在name和a的输入之间要用“,”隔开,因为你这里就是用的就是逗号%s,%d追问您能试一试我程序么 我比如我输tom,95 程序却输出tom,95的成绩为不合格。。。怎么回事啊

热心网友 时间:2022-07-10 02:55

char name;

最好改为:
char name[100];追问您能试一试我程序么 我比如我输tom,95 程序却输出tom,95的成绩为不合格。。。怎么回事啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com