qq_静听 2019-06-28 12:58 采纳率: 0%
浏览 1788

C语言中结构体数组用 for循环和 scanf 输入 比应输入行数多一行

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;
}

  • 写回答

2条回答 默认 最新

  • catfishlyf 2019-06-28 13:50
    关注

    您好,输入的方法里去掉【\n】就好了

    图片说明

    如果我的回答对您有所帮助,请您采纳,谢谢~~

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算