成绩处理程序,求高手指点!
/*程序功能:编写程序,首先提示用户输入法10个学生的成绩信息(包括每个学生的姓名、学号、数学成绩、计算机成绩)
根据用户输入的10个学生成绩,实现输出学生信息、查找学生信息(按姓名查找)、对学生按总成绩排序输出显示等。
作者:
日期:
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10
int input ();
int output();
int findValue ();
int sortValue ();
int main(void)
{
int grade[SIZE][4] = {0};
char name[SIZE][20];
int choice;
char str[20];
int no;
do
{
printf("[1] 信息输入\n");
printf("[2] 信息输出\n");
printf("[3] 信息查找\n");
printf("[4] 信息排序\n");
printf("[0] 退出\n");
printf("请键入你的选择:");
scanf("%d",&choice);
switch (choice)
{
case 1:
input(&name[0][0],&grade[0][0],10);
break;
case 2:
output(&name[0][0],&grade[0][0],10);
break;
case 3:
printf("请输入学生学号:");
scanf("%d",&no);
findValue(&no,&name[0][0],&grade[0][0],10);
break;
case 4:
findValue(&name[0][0],&grade[0][0],10);
break;
case 0:
break;
default:
break;
}
if (choice==0)
{
break;
}
system("pause");
system("cls");
fflush(stdin);
} while (1);
system("pause");
return 0;
}
int input (char name[][20],int grade[][4],10)
{
int i;
printf("请输入学生的信息:\n");
for (i = 0; i<SIZE;i++)
{
printf("请输入第%d个学生信息:\n",i+1);
scanf("%s%d%d%d",name[i],&grade[i][0],&grade[i][1],&grade[i][2]);
grade[i][3] = grade[i][1]+grade[i][2];
}
return -1;
}
int output (char name[][20],int grade[][4],10)
{
int i;
printf("\n姓名\t学号\t\t数学成绩\t计算机成绩\t总成绩\t平均成绩\n");
for (i = 0; i<SIZE;i++)
{
printf("%-8s%12d%12d %14d%10d %8.2g\n",name[i],grade[i][0],grade[i][1],grade[i][2],grade[i][3],grade[i][3]/2.0);
}
return -1;
}
int findValue (int no,char name[][20],int grade[][4],SIZE)
{
int i;
for (i = 0;i<SIZE;i++)
{
if (grade[i][0]==no)
{
printf("\n姓名\t学号\t\t数学成绩\t计算机成绩\t总成绩\t平均成绩\n");
printf("%-8s%12d%12d %14d%10d %8.2g\n",name[i],grade[i][0],grade[i][1],grade[i][2],grade[i][3],grade[i][3]/2.0);
}
}
return -1;
}
int sortValue (char name[][20],int grade[][4],10)
{
int i,j,k,tmp;
char str[20];
for (j = 0;j<SIZE-1;j++)
{
for (i = 0;i<SIZE-1-i;i++)
{
if (grade[i][3]>grade[i+1][3])
{
for (k = 0;k<4;k++)
{
tmp = grade[i][k];
grade[i][k] = grade[i+1][k];
grade[i+1][k] = tmp;
}
strcpy(str,name[i]);
strcpy(name[i],name[i+1]);
strcpy(name[i+1],str);
}
}
}
return -1;
}