沉默不寂寞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条)

报告相同问题?

悬赏问题

  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle
  • ¥15 2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 问题5. 请设计一份优惠券的投放策略,需要考虑优惠券的数量、优惠券的金额、投放时间段和投放商品种类等因素。求具体的python代码
  • ¥15 有人会搭建生鲜配送自营+平台的管理系统吗
  • ¥15 用matlab写代码
  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模
  • ¥20 用vivado写数字逻辑实验报告撰写,FPGA实验