900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c语言输出编号姓名成绩 c语言 学生信息包括 学号 姓名 五门功课的成绩.输入输

c语言输出编号姓名成绩 c语言 学生信息包括 学号 姓名 五门功课的成绩.输入输

时间:2018-12-14 06:44:04

相关推荐

c语言输出编号姓名成绩 c语言  学生信息包括 学号 姓名 五门功课的成绩.输入输

c语言 学生信息包括,学号,姓名,五门功课的成绩.输入输出。总分排序

來源:互聯網-06-16 18:12:05評論

分類: 電腦/網絡 >> 程序設計 >> 其他編程語言

問題描述:

要求:设学生信息包括,学号,姓名,五门功课的成绩.

要求编写输入输出学生信息的函数,在输入一组学生信息后计算出该学生的总成绩,并以学生成绩的总分从高到低的顺序,输出学生信息.

參考答案:

#include

#define N 200

#define SCORES 5

#define NUMLEN 10

struct std_type{

char no[NUMLEN];/*学号*/

char *name;/*名字字符串指针*/

int scores[SCORES];/*五门功课的成绩*/

};

struct std_type students[N];

int order[N];

int total[N];

/*[函数]输入一个学生信息函数*/

int readastu(struct std_type *spt)

{

int len,j;

char buf[120];/*输入学号*/

printf("\nNumber : ");

if(scanf("%s",buf)==1)

strncpy(spt->no,buf,NUMLEN-1);

else

return 0;/*CTRL+Z结束输入*/

printf("Name : ");/*输入姓名*/

if(scanf("%s",buf)==1)

{

len=strlen(buf);

spt->name=(char*)malloc(len+1);/*申请储存姓名的空间*/

strcpy(spt->name,buf);

}

else return 0;/*CTRL+Z结束输入*/

printf("Scores : ");/*输入成绩*/

for(j=0;j

if(scanf("%d",spt->scores+j)!=1)

break;

if(j==0)/*一个成绩也没有输入*/

{

free(spt->name);/*释放存储姓名的空间*/

return 0;

}

for(;j

spt->scores[j]=0;

return 1;

}

/*[函数]输出一个学生信息的函数*/

int writeastu(struct std_type *spt)

{

int i;

printf("Number : %s\n",spt->no);/*输出学号*/

printf("Name : %s\n",spt->name);/*输出姓名*/

printf("Scores : ");/*输出成绩*/

for(i=0;i

printf("%4d",spt->scores[i]);

printf("\n\n");

}

main()

{

int n,i,j,t;

clrscr();

for(n=0;readastu(students+n);n++);/*用冒泡法对学生信息数组排序*/

for(i=0;i

{

order[i]=i;/*预置第i个输入的学生*/

for(t=0,j=0;j

t+=students[i].scores[j];

total[i]=t;

}/*冒泡排序*/

for(i=0;i

for(j=0;j

if(total[order[j]]

{/*交换名次*/

t=order[j];

order[j]=order[j+1];

order[j+1]=t;

}

for(j=0;j

writeastu(students+order[j]);

printf("\n Press any key to quit...\n");

getch();

}

[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]要求:设学生信息包括,学号,姓名,五门功课的成绩.

要求编写输入输出学生信息的函数,在输入一组学生信息后计算出该学生的总成绩,并以学生成绩的总分从高到低的顺序,输出学生信息.[br][b]参考答案:[/b][br]#include

#define N 200

#define SCORES 5

#define NUMLEN 10

struct std_type{

char no[NUMLEN];/*学号*/

char *name;/*名字字符串指针*/

int scores[SCORES];/*五门功课的成绩*/

};

struct std_type students[N];

int order[N];

int total[N];

/*[函数]输入一个学生信息函数*/

int readastu(struct std_type *spt)

{

int len,j;

char buf[120];/*输入学号*/

printf("\nNumber : ");

if(scanf("%s",buf)==1)

strncpy(spt->no,buf,NUMLEN-1);

else

return 0;/*CTRL+Z结束输入*/

printf("Name : ");/*输入姓名*/

if(scanf("%s",buf)==1)

{

len=strlen(buf);

spt->name=(char*)malloc(len+1);/*申请储存姓名的空间*/

strcpy(spt->name,buf);

}

else return 0;/*CTRL+Z结束输入*/

printf("Scores : ");/*输入成绩*/

for(j=0;j

if(scanf("%d",spt->scores+j)!=1)

break;

if(j==0)/*一个成绩也没有输入*/

{

free(spt->name);/*释放存储姓名的空间*/

return 0;

}

for(;j

spt->scores[j]=0;

return 1;

}

/*[函数]输出一个学生信息的函数*/

int writeastu(struct std_type *spt)

{

int i;

printf("Number : %s\n",spt->no);/*输出学号*/

printf("Name : %s\n",spt->name);/*输出姓名*/

printf("Scores : ");/*输出成绩*/

for(i=0;i

printf("%4d",spt->scores[i]);

printf("\n\n");

}

main()

{

int n,i,j,t;

clrscr();

for(n=0;readastu(students+n);n++);/*用冒泡法对学生信息数组排序*/

for(i=0;i

{

order[i]=i;/*预置第i个输入的学生*/

for(t=0,j=0;j

t+=students[i].scores[j];

total[i]=t;

}/*冒泡排序*/

for(i=0;i

for(j=0;j

if(total[order[j]]

{/*交换名次*/

t=order[j];

order[j]=order[j+1];

order[j+1]=t;

}

for(j=0;j

writeastu(students+order[j]);

printf("\n Press any key to quit...\n");

getch();

}

c语言输出编号姓名成绩 c语言 学生信息包括 学号 姓名 五门功课的成绩.输入输出。总分排序...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。