写了个C的程序,大伙们,看看我的代码有什么问题?是一个动态构造存放学生信息的结构体数组问题,照着书敲的,运行后输入name后按回车就没有下文了,我真麻了,问了gpt,gpt也说没有问题。ide是vs2022
#include<stdio.h>
#include<stdlib.h>
struct STUDENT
{
char name[20];
int age;
float score;
};
void InputStudent(int len, struct STUDENT* p);
void BubbleSort(int len, struct STUDENT* p);
void OutputStudent(int len, struct STUDENT* p);
int main(void)
{
int len;
struct STUDENT* p = NULL;
printf("请输入学生的个数:");
scanf_s("%d", &len);
p = malloc(len * sizeof * p);
InputStudent(len, p);
BubbleSort(len, p);
OutputStudent(len, p);
free(p);
return 0;
}
void InputStudent(int len, struct STUDENT* p)
{
int i;
for (i = 0; i < len; i++)
{
printf("请输入第%d个学生的信息:\n", i + 1);
printf("name = ");
scanf_s("%s", (p + i)->name);
printf("age = ");
scanf_s("%d", &(p + i)->age);
printf("score = ");
scanf_s("%lf", &(p + i)->score);
}
printf("\n");
return;
}
void BubbleSort(int len, struct STUDENT* p)
{
struct STUDENT buf;
int i, j;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; ++j)
{
if ((p + j)->score < (p + j + 1)->score)
{
buf = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = buf;
}
}
}
return;
}
void OutputStudent(int len, struct STUDENT* p)
{
int i;
printf("按成绩高低输出学生信息:\n\n");
for (i = 0; i < len; i++)
{
printf("第%d个学生的信息是:\n", i+1);
printf("name = %s\n", (p + i)->name);
printf("age = %d\n", (p + i)->age);
printf("score = %lf\n", (p + i)->score);
}
return;
}
提前感谢了,谢谢大伙!
【以下回答由 GPT 生成】
我会尽力帮你解决问题,请提供你的代码,以及你认为可能出错的地方。
【相关推荐】