求助,为什么如下代码执行时“sex =name =”会被同时输出?
c吧
全部回复
仅看楼主
level 1
函数的目的是动态构建存放学生信息的结构体数组
#include <stdio.h>
#include <string.h>
#include <malloc.h>
struct Student
{
char sex;
float score;
char name[100];
};
void sort(struct Student * parr,int len);
void output_score(struct Student * parr,int len);
void input_score(struct Student * parr,int len);
int main()
{
int len;
struct Student * parr;
printf("please input the number of students:");
scanf("%d",&len);
parr = (struct Student *) malloc(len * sizeof(struct Student));
input_score(parr,len);
sort(parr,len);
output_score(parr,len);
free(parr);
return 0;
}
void sort(struct Student * parr,int len)
{
int i,j;
struct Student t;
for (i = 0; i < len; ++i)
{
for (j = 0; j < len-1-i; ++j)
{
if(parr[j].score < parr[j+1].score)
{
t = parr[j]; parr[j] = parr[j+1]; parr[j+1] = t;
}
}
}
}
void output_score(struct Student * parr,int len)
{
int i;
for (i = 0; i < len; ++i)
{
printf("the number of %d's information is:\n",i+1);
printf("sex:%c\n",parr[i].sex);
printf("score:%.2f\n",parr[i].score);
printf("name:%s\n",parr[i].name);
}
}
void input_score(struct Student * parr,int len)
{
int i;
for (i = 0; i < len; ++i)
{
printf("please input the number of %d's information\n",i+1);
printf("sex =");
scanf("%c",&parr[i].sex);
printf("name =");
scanf("%s",parr[i].name);
printf("score =");
scanf("%f",&parr[i].score);
}
}
输出结果:
2023年01月06日 01点01分 1
1