C语言中 结构体数组用 for循环和scanf输入 比应输入行数多一行,这是为什么?
3组学生信息的输入,成绩汇总,排序,打印
我只想输3组数据(aa,bb,cc),但必须输4行(多了dd,这行是随便输的)才行,,不懂,求解。
结果和代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
typedef struct {
char name[9];
float score[2];
float total;
} stu;
void shuru(stu*ss){
int i=0;
for(;i<N;i++){
scanf("%s%f%f\n",(ss+i)->name,&((ss+i)->score[0]),&((ss+i)->score[1]));
}
}
void shuchu(stu* ss){
int i=0;
for(;i<N;i++)
printf("%s %f %f %f\n",(ss+i)->name,(ss+i)->score[0],(ss+i)->score[1],(ss+i)->total);
}
void paixv(stu *ss){
int i,j=0;
for(i=0;i<N-1;i++){
for(j=0;j<N-i-1;j++){
if(ss[j].total<=ss[j+1].total){
stu temp=ss[j];
ss[j]=ss[j+1];
ss[j+1]=temp;
}
}
}
}
void huizong(stu* ss){
int i=0;
for(;i<N;i++){
(ss+i)->total=(ss+i)->score[0]+(ss+i)->score[1];
ss[i].total=ss[i].score[0]+ss[i].score[1];
}}
int main()
{
stu ss[N];
int i,j=0;
shuru(ss);
huizong(ss);
paixv(ss);
shuchu(ss);
return 0;
}