/*win-tc*/
/*在VC++无法运行,有些涵数VC++不支持*/
/*基本功能实现成绩的输入、输出、求最大值、最小值、排序等操作*/
#include"stdio.h"
#include"ctype.h"
#define Esc 27 /*定义退出的键位*/
#define SIZE 10 /*定义学生的大小*/
#define MAXdigit 20 /*定义输入成绩的最大位数*/
int input_all_score(int iscore[],int isize);
void output_all_score(int iscore[],int isize);
void count_for_max(int iscore[],int isize);
void count_for_min(int iscore[],int isize);
void count_for_total(int iscore[],int isize);
void count_for_average(int iscore[],int isize);
void count_above_60_brown_100_score(int iscore[],int isize);
void count_brown_60_score(int iscore[],int isize);
void count_from_min_to_max(int iscore[],int isize);
void count_from_max_to_min(int iscore[],int isize);
int getdigi(int icount);
void main()
{
int iscore[SIZE]={0};
char ckey='a';
int istate=0;
do
{
clrscr();
printf("*****************************************************************************/n");
printf("/tThe is a management system about scores./n/t/t/tWELCOME/n");
printf("*****************************************************************************/n");
printf("*| 1=Input scores | | 2=output scores | | 3=max | | 4=min | */n");
printf("*| 5=total | | 6=average | | 7=60<score<100 | | 8=score<60 | */n");
printf("*| 9=min to max | | Esc=Exit system | | 0=max to min | */n");
printf("*****************************************************************************/n");
printf("please input your choose(0-9):/n");
ckey=getch();
if(ckey=='1') /*输入成绩*/
istate=input_all_score(iscore,SIZE);
else if((istate==0)&&(ckey!=Esc))
{
printf("/nERROR:you must input scores first!");
printf("/npress a key to continue.");
getch();
}
else if(ckey=='2') /*输出成绩*/
output_all_score(iscore,SIZE);
else if(ckey=='3') /*最大值*/
count_for_max(iscore,SIZE);
else if(ckey=='4') /*最小值*/
count_for_min(iscore,SIZE);
else if(ckey=='5') /*总分*/
count_for_total(iscore,SIZE);
else if(ckey=='6') /*平均分*/
count_for_average(iscore,SIZE);
else if(ckey=='7') /*60<成绩<100*/
count_above_60_brown_100_score(iscore,SIZE);
else if(ckey=='8') /*成绩>60*/
count_brown_60_score(iscore,SIZE);
else if(ckey=='9') /*从小到大排序*/
count_from_min_to_max(iscore,SIZE);
else if(ckey=='0') /*从大到小排序*/
count_from_max_to_min(iscore,SIZE);
}
while(ckey!=Esc); /*当你按键盘上的Esc键时退出程序*/
}
/*输入成绩*/
int input_all_score(int iscore[],int isize)
{
int iindex=0;
printf("please input %d scores:/n",isize);
for(iindex=0;iindex<isize;iindex++)
{
printf("please input the %d scores:",iindex);
iscore[iindex]=getdigi(3);
}
return 1;
}
/*输出成绩*/
void output_all_score(int iscore[],int isize)
{
int iindex=0;
for(iindex=0;iindex<isize;iindex++)
{
printf("iscore[%2d]=%3d/n",iindex,iscore[iindex]);
}
getch();
}
/*查找最大值*/
void count_for_max(int iscore[],int isize)
{
int imax=iscore[0];
int iindex=0;
for(iindex=0;iindex<isize;iindex++)
{
if(imax<iscore[iindex])
imax=iscore[iindex];
}
printf("/nthe max score is %d",imax);
getch();
}
/*查找最小值*/
void count_for_min(int iscore[],int isize)
{
int imin=iscore[0];
int iindex=0;
for(iindex=0;iindex<isize;iindex++)
{
if(imin>iscore[iindex])
imin=iscore[iindex];
}
printf("/nthe min score is %d",imin);
getch();
}
/*计算总分*/
void count_for_total(int iscore[],int isize)
{
int iindex=0;
int isum=0;
for(iindex=0;iindex<isize;iindex++)
{
isum=isum+iscore[iindex];
}
printf("/nthe total score is %d",isum);
getch();
}
/*计算平均分*/
void count_for_average(int iscore[],int isize)
{
int iindex=0;
float faverage=0;
for(iindex=0;iindex<isize;iindex++)
{
faverage=faverage+iscore[iindex];
}
faverage=faverage/isize;
printf("/nthe average score is %.2f",faverage);
getch();
}
/*查找大于60小于100的人数及分数*/
void count_above_60_brown_100_score(int iscore[],int isize)
{
int icount=0;
int iindex=0;
for(iindex=0;iindex<isize;iindex++)
{
if((iscore[iindex]>60)&&(iscore[iindex]<=100))
{
printf("the score is %d/n",iscore[iindex]);
icount++;
}
}
printf("the score from 60 to 100 number is %d/n",icount);
getch();
}
/*查找小于60的人数及分数*/
void count_brown_60_score(int iscore[],int isize)
{
int icount=0;
int iindex=0;
for(iindex=0;iindex<isize;iindex++)
{
if(iscore[iindex]<60)
{
printf("the score is %d/n",iscore[iindex]);
icount++;
}
}
printf("the score browm 60 number is %d/n",icount);
getch();
}
/*从最小到最大排序*/
void count_from_min_to_max(int iscore[],int isize)
{
int ivar=0,jindex=0;
int iindex=0;
for(ivar=0;ivar<isize-1;ivar++)
{
for(iindex=ivar+1;iindex<isize;iindex++)
{
if(iscore[ivar]>iscore[iindex])
{
jindex=iscore[iindex];
iscore[iindex]=iscore[ivar];
iscore[ivar]=jindex;
}
}
}
for(iindex=0;iindex<isize;iindex++)
{
printf("%5d/n",iscore[iindex]);
}
getch();
}
/*从最大到最小排序*/
void count_from_max_to_min(int iscore[],int isize)
{
int ivar=0,jindex=0;
int iindex=0;
for(ivar=0;ivar<isize-1;ivar++)
{
for(iindex=ivar+1;iindex<isize;iindex++)
{
if(iscore[ivar]<iscore[iindex])
{
jindex=iscore[iindex];
iscore[iindex]=iscore[ivar];
iscore[ivar]=jindex;
}
}
}
for(iindex=0;iindex<isize;iindex++)
{
printf("%5d/n",iscore[iindex]);
}
getch();
}
/*判断输入的成绩是否为数字*/
int getdigi(int icount)
{
int iloop=0;
char digit_str[MAXdigit]={'0'};
iloop=0;
do
{
digit_str[iloop]=getch();
if(isdigit(digit_str[iloop]))
{
putch(digit_str[iloop]);
iloop++;
}
}
while(iloop<icount);
return atoi(digit_str);
}
结果如下: