c
#include <stdio.h>
#include <string.h>
#define N 3 //课程门数
#define M 3 //学生人数
main()
{
int i, j, choice, person, course;
int sum[10], score[M][10];
float ave[M];
char no[M][10], name[M][10], subject[N][20], temp[10];
for (;;)
{
printf("选项:\n");
printf("1、输入数据\n");
printf("2、输出成绩(在输入成绩前不能选择该选项)\n");
printf("3、查找(在输入成绩前不能选择该选项)\n");
printf("4、排序(在输入成绩前不能选择该选项)\n");
printf("0、退出\n");
printf("\n您的选择是:");
scanf("%d", &choice);
switch (choice)
{
case 1:
do
{
printf("请输入学生数[<=%d]:", M);
scanf("%d", &person);
} while (person<0 || person>M);
do
{
printf("请输入课程数[<=%d]: ", N);
scanf("%d", &course);
} while (course<0 || course>N);
for (j = 0; j < course; j++)
{
printf("请输入第%d门课程名称:", j + 1);
scanf("%s", subject[j]);
}
for (i = 0; i < person; i++)
{
sum[i] = 0;
printf("\n请输入第%d名学生的学号:", i + 1);
fflush(stdin); //清空缓冲区里的字符
scanf("%s", no[i]);
printf("\n请输入第%d名学生的姓名:", i + 1);
fflush(stdin);
scanf("%s", name[i]);
printf("\n\n请输入%-s号学生成绩:\n", no[i]);
ave[i] = 0;
sum[i] = 0;
for (j = 0; j < course; j++)
{
printf("\n请输入%s的%s成绩:", no[i], subject[j]);
scanf("%d", &score[i][j]);
sum[i] = sum[i] + score[i][j];
}
ave[i] = 1.0*sum[i] / course;
} break;
case 2:
printf("\n\nNo ");
for (i = 0; i < course; i++)
printf("%10s ", subject[i]);
printf(" Average");
printf("\n----------------------------------------------------\n");
for (i = 0; i < person; i++)
{
printf("%-10s ", no[i]);
for (j = 0; j < course; j++)
printf("%3d ", score[i][j]);
printf(" %-6.1f\n", ave[i]);
}
case 3:
printf("请输入要查找的学生学号:");
scanf("%s", &temp);
for (i = 0; i < person; i++)
{
if (strcmp(no[i], temp) == 0)
{
printf("查找结果如下\n\n");
printf("No ");
for (i = 0; i < course; i++)
printf("%10s ", subject[i]);
printf(" Average");
printf("\n----------------------------------------------------\n");
printf("%-10s", no[i]);
for (j = 0; j < course; j++)
printf("%3d ", score[i][j]);
printf(" %-6.1f\n", ave[i]);
}
}
break;
case 4:break;
}
}
}
printf("请输入要查找的学生学号:");
scanf("%s", temp); //这里不需要取地址,数组本身就是地址
for (i = 0; i < person; i++)
{
if (strcmp(no[i], temp) == 0)
{
printf("查找结果如下\n\n");