沉默不寂寞429 2021-07-07 07:52 采纳率: 50%
浏览 75
已采纳

我最后写出来的代码运行的时候它给我输出几行0是怎么回事

定义一个结构体数组,拟实现下面的表格,表头的属性名字自拟,如姓名可以起名为name、xm、姓名等等,数据内容自拟(不得雷同),请按总分进行排序,以降序的顺序显示出所有的信息。(人数不得少于十人)。

#include<stdio.h>
struct student {
double id;
char name[50];
int e,c,a;
}students[100];

int main()
{
int n,i,a,b;
double sum=0,num=0;
char str[50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf %s %d %d",&students[i].id,&students[i].name,&students[i].e,&students[i].c);
students[i].a=students[i].c+students[i].e;
}

for(a=0;a<n-1;a++)
{
for(b=0;b<n-1-a;b++)
{
if(students[b].a<students[b+1].a)
{
i=students[b].e; //交换英语成绩
students[b].e=students[b+1].e;
students[b+1].e=i;

i=students[b].c;  //交换计算机成绩 
students[b].c=students[b+1].c;
students[b+1].c=i;

i=students[b].a;  //交换计算机成绩 
students[b].a=students[b+1].a;
students[b+1].a=i;

strcpy(str,students[b].name);
strcpy(students[b].name,students[b+1].name);
strcpy(students[b+1].name,str);
memset(str,0,sizeof str);

i=students[b].id;   //交换学号 
students[b].id=students[b+1].id;
students[b+1].id=i;

}
}
}

for(i=0;i<n;i++)
printf("%.0lf %s %d %d %d\n",students[i].id,students[i].name,students[i].e,students[i].c,students[i].a);

}

  • 写回答

2条回答 默认 最新

  • 关注

    你输入students[i].name时,多加了取地址符,因为他是字符数组类型,不需要再加取地址符了这行改成这样就好了

    scanf("%lf %s %d %d",&students[i].id,students[i].name,&students[i].e,&students[i].c);
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件