當前位置:歷史故事大全網 - 故事大全 - C语言题 学生考试成绩查询程序

C语言题 学生考试成绩查询程序

#include

#include

#include

#include h>

#define STU_NUM 40 /* 最多的学生人数 */

#define COURSE_NUM 10 /* 最多的考试科目 */

struct Student< /p>

{

整数; /* 每个学生的学号 */

char name[10]; /* 每个学生的姓名 */

int Score[COURSE_NUM]; /* 每个学生M门功课的成绩 */

int sum; /* 每个学生的总成绩 */

浮动平均值; /* 每个学生的平均成绩 */

};

typedef struct Student STU;

/* 函数功能:向链表的补加从键盘 输入学生的学号、姓名和成绩等信息

函数参数:结构体指针头,指向存储学生信息的结构体存储的首地址

整型变量n,表示 学生大学生

整型变量m,表示考试科目

函数返回值:无

*/

void AppendScore(STU * head, int n, int m)

{

int j;

STU *p;

for (p=head; p

{

printf("\n输入数字:");

scanf("%d", &p-> number);

printf("输入姓名:");

scanf("%s", &p->name);

for (j=0; j

{

printf("输入分数%d:", j+1);< /p>

scanf("%d", p->score+j);

}

}

}

< p>/* 函数功能:打印n个学生的学号、姓名和成绩信息

函数参数:结构体存储指针头,指向学生信息的结构体数据库的地址首部

整型变量n,表示大学生学生

整型变量m,表示考试双眼

函数返回值:无

*/

void PrintScore(STU *head, int n, int m)

{

STU *p;

int i;

char str[100] = {'\0'}, temp[3];

strcat(str, "数字名称");

for (i=1 ; i<=m; i++)

{

strcat(str, "分数");

itoa(i,temp, 10);

strcat(str, temp);

strcat(str, " ");

}

strcat(str,"平均总和");

printf("%s", str); /* 打印表头 */

for (p=head; p

{

printf("\nNo.%3d%8s", p->编号, p->名称);

for (i=0; i

{

printf("%7d", p->score[i]);

}

printf("%11d%9.2f\n", p->总和, p->平均值);

}

}

/* 函数功能:计算每个学生的功课的总成绩和平均成绩

函数参数:结构体指针头,指向存储学生信息的 结构体数据库的首地址

整型变量n,表示学生人数

整型变量m,表示考试视野

函数返回值:无

*/

void TotalScore(STU *head, int n, int m)

{

STU *p;

int i;

for (p=head; p

{

p->sum = 0;< /p>

for (i=0; i

{

p->sum = p->sum + p->score[i] ;

}

p->平均值 = (float)p->sum / m;

}

}

/* 函数功能:使用选择法按总成绩由高到低排序

函数参数:结构体指针头,指向存储学生信息的结构体数据库的首地址

整型变量n,表示大学生

函数返回值:无

*/

void SortScore(STU *head, int n)< /p>

{

int i, j, k;

STU temp;

for (i=0; i

{

k = i;

for (j=i; j

{

if ((head+j)->sum > (head+k)->sum)

{

k = j;

}

}

if (k != i)

{

temp = *(head+k);

{

temp = *(head+k);

*(head+k) = *(head+i);

*(head+i) = temp;

}

}

}

/* 函数功

功能:查找学生的学号

函数参数:结构体指针头,指向存储学生信息的结构体存储的首地址

整型参数num,表示要查找的学号 号

整型变量n,表示学生人数

函数返回值:如果找到学号,则返回它在结构体数据库中的位置,否则返回-1

*/

int SearchNum(STU *head, int num, int n)

{

int i;

for (i=0; i

{

if ((head+i)->number == num) return i;

< p> }

return -1;

}

/* 函数功能:按学号查找学生成绩并显示查找结果

函数参数:结构体指针head,指向存储学生信息的结构体备份的首地址

整型变量n,表示学生人数

整型变量m,表示考试科目

函数返回值:无

*/

void SearchScore(STU *head, int n, int m)

{< /p>

int number, findNo;

printf("请输入您要查找的号码:");

scanf("%d", &number);

findNo = SearchNum(head, number, n);

if (findNo == -1)

{

printf("\n未找到!\n");

}

else

{

PrintScore(head+findNo, 1, m);

}

}

/* 函数功能:显示菜单并 获得用户键盘输入的选项

函数参数:无

函数返回值:用户输入的选项

*/

char Menu (void)

{

char ch;

printf("\n学生成绩管理\n");

printf (" 1.追加记录\n");

printf(" 2.列出记录\n");

printf(" 3.搜索记录\n");< /p>

printf(" 4.对记录排序\n");

printf(" 0.Exit\n");

printf("请输入您的选择:");

scanf(" %c", &ch); /*在%c前面加一个空格,将存于坐标中心的回车符读入*/

return ch;

}

int main()

{

char ch;

int m, n;

STU Stu[STU_NUM];

printf("输入

ut 学号和课程号(学号<40,课程号<10):");

scanf("%d,%d", &n, &m);

while (1)

{

ch = Menu(); /*显示菜单,并用户读取输入*/

switch (ch)

{

case'1':AppendScore(stu, n, m);/* 招成绩添加模块 */

TotalScore(stu, n, m) ;

break;

case'2':PrintScore(stu, n, m); /* 招成绩显示模块*/

break;

case'3':SearchScore(stu, n, m);/* 调用按学号查找模块 */

break;

case'4': SortScore(stu, n); /* 成绩排序模块 */

printf("\n排序结果\n");

PrintScore(stu, n, m); * 显示成绩排序结果 */

break;

case'0':exit(0) /* 退出程序 */

printf("End 程序!");

break;

default:printf("输入错误!");

break;

}

}

}

  • 上一篇:2020江苏高考语文平均分
  • 下一篇:李華生的相關報道
  • copyright 2024歷史故事大全網