C语言的简单错误

最多50个学生,分别定义他们的数学语文英文成绩并且显示,程序编译没问题,就是打印的时候的结果不是我想要的,想不明白了
输入成绩的时候,我也是15,88,95(回车这样输入的)帮我看看吧

#include <stdio.h>
void main()
{
struct a
{
int i;//学生人数
double yuwen, shuxue, yingwen;
}aa[50];
int i, k;

printf("输入学生人数");
scanf("%d", &i);

for(k = i; ; k--, i--)
{
scanf("%f,%f,%f", &aa[i].yuwen, &aa[i].shuxue, &aa[i].yingwen);
printf("%f%f%f", aa[i].yuwen, aa[i].shuxue, aa[i].yingwen);
}

}
绝对是自己写的,前面那个a是定义结构体
aa是结构体列表,用来存储50个学生的信息

另外.结果是乱七八糟的东西,我想要的是我输入什么就输出什么,但是输出的是带-号的N长的数字

第1个回答  2020-01-04
main()
{
float
a,b;
float
area;
a=3.2;b=2.7;
area=a*b;
printf("area=%f\n",area);
}
定义实型应该是用float而不是flont
因为a
b
你都定义为了整型(int)所以系统会自动取整!
取整并不是四舍五入!
而是直接把小数部分舍掉!
所以答案才是6.0000
要想得到答案!
把a
b定义为float就好了!
第2个回答  2007-12-14
aa[50];
这指的是用你做是struct a来定义一个a[50]的组数
并不是一个函数 aa[50]


a a[50]
int i, k;

aa[i].yuwen,aa[i].yuwen,aa[i].yuwen 都是错的
是 a[i].yuwen,a[i].yuwen,a[i].yuwen

for(k = i; ; k--, i--)
死循环一个,并没有停顿的部分

一看就知道不知从哪里抄的吧,绝对不是自己写的
第3个回答  2007-12-14
跟你完善了一下 因该是自己编的 要抄的话原来错误太多了
#include <stdio.h>
struct a
{
float yuwen, shuxue, yingwen;
};
void main()
{
struct a aa[50];
int i, k;
printf("输入学生人数\n");
scanf("%d",&k);
for(i=1;i<=k;i++)
{
scanf("%f%f%f",&aa[i].yuwen,&aa[i].shuxue,&aa[i].yingwen);
}
for(i=1;i<=k;i++)
{
printf("%.2f %.2f %.2f\n",aa[i].yuwen,aa[i].shuxue,aa[i].yingwen);//只输出到小数点后2位
}
第4个回答  2020-03-05
你把a和b都定义成float类型,因为你现在系统自动做了类型转换,两个int类型转换为float类型时会丢失精度,所以建议你都定义成float.
第5个回答  2007-12-14
类型问题..
double yuwen, shuxue, yingwen

scanf("%f,%f,%f", &aa[i].yuwen, &aa[i].shuxue, &aa[i].yingwen);
=============================================
#include <stdio.h>

void main()
{
struct a
{
int i;//学生人数
float yuwen;
float shuxue;
float yingwen;
}aa[50];

int i, k;

printf("输入学生人数\n");
scanf("%d", &i);

for(i;i>0 ;i--)
{ printf("输入学生成绩:\n");
scanf("%f,%f,%f", &aa[i-1].yuwen, &aa[i-1].shuxue, &aa[i-1].yingwen);
printf("%f,%f,%f", aa[i-1].yuwen, aa[i-1].shuxue, aa[i-1].yingwen);
printf("\n");
}

}本回答被提问者采纳
相似回答