#include
#include
#include
using namespace std;
int N, i;
struct XUS
{
int xh[500];
char xm[500];
int cj[3];
};
int main()
{
printf("请输入共几名学生");
scanf_s("%d", &N);
struct XUS* x = new struct XUS[N]{};
for (i = 0; i < N; i++) //for (i = 1; i < N + 1; i++) 修改
{
printf("请输入第%d名学生的学号:", i + 1);
scanf("%d", x[i].xh, sizeof(x[i].xh));
printf("请输入第%d名学生的姓名:", i + 1);
scanf_s("%s", x[i].xm, sizeof(x[i].xm));
printf("请输入第%d名学生的成绩:", i + 1);
scanf_s("%d", &x[i].cj[0]);
scanf_s("%d", &x[i].cj[1]);
scanf_s("%d", &x[i].cj[2]);
printf("\n");
}
FILE* fp;
errno_t err; // 修改
err = fopen_s(&fp, "xinxi.txt", "w"); //fopen("xinxi.txt", "w");
if (err != 0) //
{
printf("不能打开文件\n");
return 1; //表示正常退出
}
for (i = 0; i < N; i++) //for (i = 1; i < N + 1; i++)
{
fprintf(fp, "%s ", x[i].xh);
fprintf(fp, "%s ", x[i].xm);
fprintf(fp, "%d ", x[i].cj[0]);
fprintf(fp, "%d ", x[i].cj[1]);
fprintf(fp, "%d ", x[i].cj[2]);
printf("\n");
}
fclose(fp);
printf("排序前\n");
for (i = 0; i < N; i++)
{
printf(" %d %s %d %d %d\n", x[i].xh, x[i].xm, x[i].cj[0], x[i].cj[1], x[i].cj[2]);
}
printf("排序后\n");
sort(x[i].xh, x[i].xh+N);
for (i = 0; i < N; i++)
{
printf(" % s %s %d %d %d\n", x[i].xh, x[i].xm, x[i].cj[0], x[i].cj[1], x[i].cj[2]);
}
return 0;
}
sort是对数组和数组内的元素进行排序。函数定义:
sort(数组名,数组名+元素个数);
但你这里对程序里对sort的调用是不对的,函数的数组名处,你填写的是参数名,数组名+元素个数也不对。
sort(x[i].xh, x[i].xh+N);