C语言编程中这个是什么问题? 10

#include"stdio.h"voidmain(){chara;floatb,c,d,e;printf("学生成绩的输入\n\n");printf("请依次输入学生姓... #include "stdio.h"
void main()
{
char a;
float b,c,d,e;
printf(" 学生成绩的输入\n\n");
printf("请依次输入学生姓名及语文、数学、英语成绩:\n");
scanf("%s %f %f %f",&a,&b,&c,&d);
printf("%s的各科成绩分别是语文%.2f,数学%.2f,英语%.2f\n",a,b,c,d);
e=(b+c+d)/3;
printf("平均成绩为:%.2f\n",e);
}
展开
 我来答
chenpan0211
2012-09-05
知道答主
回答量:25
采纳率:0%
帮助的人:11万
展开全部
char a;
scanf("%s %f %f %f",&a,&b,&c,&d);
你的a是字符型的 而你输入%s是字符串,而且不能用&a,就用a就行了;还有输入不要换行 用空格隔开
我帮你纠正一下
char a[20];
scanf("%s %f %f %f",a,&b,&c,&d);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
carsonwho
2012-09-05
知道答主
回答量:55
采纳率:0%
帮助的人:34.2万
展开全部
char a就一个字节的空间,王僧占4个字节
所以程序修改:
#include "stdio.h"
void main()
{
char a[20]; //用char类型数组
float b,c,d,e;
printf(" 学生成绩的输入\n\n");
printf("请依次输入学生姓名及语文、数学、英语成绩:\n");
scanf("%s %f %f %f",a,&b,&c,&d); //此处a前面的&不能用
printf("%s的各科成绩分别是语文%.2f,数学%.2f,英语%.2f\n",a,b,c,d);
e=(b+c+d)/3;
printf("平均成绩为:%.2f\n",e);
}
追问
scanf("%s %f %f %f",a,&b,&c,&d);                        //此处a前面的&不能用
但是我运行时,加不加&都行,什么时候不行啊?
追答
因为a就是他的地址啊,不用再取地址了,所以不能用&。你的可以运行?不可能的
a是数组的首地址,a+1是可以向后移动一个char的,&a是数组整个的地址,&a+1是向后移动char[20]的。举个例子给你看:
#include "stdio.h"
int main()
{
char a[20];
scanf("%s",a);
printf("%s\n",a+1);
printf("%s\n",(char *)(&a+1)-19);
return 0;

}
你输入abcdefg
输出结果是:
bcdefg
bcdefg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
驿落5黄昏
2012-09-05
知道答主
回答量:94
采纳率:0%
帮助的人:34.2万
展开全部
1、char a;出错。如果在后面要用%s的话前面应该是一个数组,要不然只能用%c,还有就是如果定义deshichar a[10]。那在后面输入中科不用&
2、输入格式有误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘零的狐狸
2012-09-05 · TA获得超过1.8万个赞
知道大有可为答主
回答量:9251
采纳率:77%
帮助的人:2279万
展开全部
你的输入有问题
因为你的语句为scanf("%s %f %f %f",&a,&b,&c,&d);
是以空格为分隔符的
所以
输入时应该这样输入 王森 10 10 10(然后回车)
就应该不会错了吧

刚看了FTD_MU的答案 他是对的 呵呵
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
returnwindows
2012-09-07
知道答主
回答量:25
采纳率:0%
帮助的人:8.8万
展开全部
名字是字符串,不是字符,你越界了
消息来源:华夏联盟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式