#include<stdio.h>
#include<string.h>
#define N 3
#define M 3
struct Student
{ int num;
char name[20];
float score[3];
float total;
}str[N];
main()
{
void inscore (struct Student a[],int i); //函数声明
int i,j;
printf("请按顺序输入学生的学号,姓名,数学、英语、C语言等信息:\n");
for(i=0;i<N;i++)
{ str[i].total=0;
scanf("%d",&str[i].num); //调试时,这里第一次循环的给输入,之后就再也不执行 →问题1
gets(str[i].name); //定义了 str[i].name[20],一定要输够20个字符回车才行→问题2
inscore(str,i);
for (j=0;j<3;j++)
str[i].total=str[i].total+str[i].score[j];
}
for(i=0;i<N;i++)
printf("num.%d%s:数学:%3lf,英语:%3lf,c语言:%3lf,总分:%3lf\n",str[i].num,str[i].name,str[i].score[0],str[i].score[1],str[i].score[2],str[i].total);
}
void inscore(struct Student a[],int i)
{ int j;
for(j=0;j<3;j++)
scanf("%lf",&a[i].score[j]);
}
编译连接0error 0warning,就是粗不来,给跪了
nope
追答回车按少了
还是不行啊,本来用scanf来赋值,只有第1次循环的时候才执行,后来才改成gets,结果还是一样
追答scanf("%1f",&a[i].score[j]);
-->
scanf("%f",&a[i].score[j]);
多了一个1