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);
} 展开
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);
} 展开
展开全部
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
所以程序修改:
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、char a;出错。如果在后面要用%s的话前面应该是一个数组,要不然只能用%c,还有就是如果定义deshichar a[10]。那在后面输入中科不用&
2、输入格式有误
2、输入格式有误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的输入有问题
因为你的语句为scanf("%s %f %f %f",&a,&b,&c,&d);
是以空格为分隔符的
所以
输入时应该这样输入 王森 10 10 10(然后回车)
就应该不会错了吧
刚看了FTD_MU的答案 他是对的 呵呵
因为你的语句为scanf("%s %f %f %f",&a,&b,&c,&d);
是以空格为分隔符的
所以
输入时应该这样输入 王森 10 10 10(然后回车)
就应该不会错了吧
刚看了FTD_MU的答案 他是对的 呵呵
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
名字是字符串,不是字符,你越界了
消息来源:华夏联盟
消息来源:华夏联盟
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询