c语言结构体问题,急啊~~~

来源:百度知道 编辑:UC知道 时间:2024/09/20 16:39:35
#include "stdio.h"
#include "math.h"
#define N 5
struct student
{char name[10];
long number;
char sex;
char department[10];
};
main()
{struct student st[N],r;
int i,j;
printf("name number sex department\n");
for(i=0;i<N;i++)
{scanf("%s %ld %c %s",&st[i].name,&st[i].number,&st[i].sex,&st[i].department);}
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{if(st[j].number>st[j+1].number)
{r=st[j];st[j]=st[j+1];st[j+1]=r;}
}
for(i=0;i<N;i++)
{printf("name %s\nnumber %ld\nsex %c\ndepartment %s\n",st[i].name,&st[i].number,&st[i].sex,&st[i].department);
printf("\n");
}
}
问题补充:输入学生的姓名,学号,性别,院系后,按照学号由小到大输出
为什么每次输入后得到的都是些莫名其妙东西的,比如学号全是无关的负数,性别是乱码等。。

你的输出部分错了:
for(i=0;i<N;i++)
输出就不需要地址运算了,下面都错了。
{printf("name %s\nnumber %ld\nsex %c\ndepartment %s\n",st[i].name,&st[i].number,&st[i].sex,&st[i].department);
printf("\n");
改为:
printf("name %s\nnumber %ld\nsex %c\ndepartment %s\n",st[i].name,st[i].number,st[i].sex,st[i].department);