當前位置:編程學習大全網 - 編程語言 - c語言編程的問題,求教

c語言編程的問題,求教

#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

#include?<string.h>

#define?N?30

typedef?struct

{

char?name[20];

char?No[20];

char?sex[20];

float?score[5];

float?avg;

}STUDENT;

void?sort(STUDENT*?s)//按平均成績由高到低排序?

{

STUDENT?t;

int?i,j;

for(i=0;i<N-1;i++)

{

for(j=0;j<N-1-i;j++)

{

if(s[j].avg<s[j+1].avg)

{

t=s[j+1];

s[j+1]=s[j];

s[j]=t;

}

}

}

}

void?input(STUDENT*?s)//輸入函數?

{

system("cls");

int?i,j;

for(i=0;i<N;i++)

{

printf("\n請輸入第%d個同學的姓名:",i+1);

fflush(stdin);

scanf("%s",s[i].name);

printf("\n請輸入第%d個同學的學號:",i+1);

fflush(stdin);

scanf("%s",s[i].No);

printf("\n請輸入第%d個同學的性別:",i+1);

fflush(stdin);

scanf("%s",s[i].sex);

for(j=0;j<5;j++)

{

printf("\n請輸入第%d個同學的第%d門課成績:",i+1,j+1);

fflush(stdin);

scanf("%f",&(s[i].score[j]));

}

}

}

void?prt(STUDENT*?s)?//輸出函數?

{

int?i;

printf("\n\n");

for(i=0;i<N;i++)

{

printf("%s?%s?%s?%5.1f?%5.1f?%5.1f?%5.1f?%5.1f?%5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg);

}

}

float?calc(STUDENT*?s)?//計算函數--計算第三門課平均分?

{

float?all=0;

int?i,j;

for(i=0;i<N;i++)

{

all+=s[i].score[2];

}

return?all/N;

}?

void?find(STUDENT*?s)//查找函數---平均分在95以上的女生和全部成績在85分以上的女生?

{

int?i,j;

printf("\n平均成績在90分以上的女生有:\n");

for(i=0;i<N;i++)

{

if(s[i].avg>=90.0?&&?strcmp(s[i].sex,"女")==0)

{

printf("%s?%s?%s?%5.1f?%5.1f?%5.1f?%5.1f?%5.1f?%5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg);

}

}

printf("\n全部成績在85分以上的女生有:\n");

for(i=0;i<N;i++)

{

if(strcmp(s[i].sex,"女")==0)

{

for(j=0;j<5;j++)

{

if(s[i].score[j]<85.0)

{

break;

}

}

if(j>=5)

{

printf("%s?%s?%s?%5.1f?%5.1f?%5.1f?%5.1f?%5.1f?%5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg);

}

}

}

}

int?main()

{

STUDENT?s[N];

int?i,j;

////----------------如果要用手動輸入全部數據,請註釋掉虛線間的代碼---------開始-------//

char*?name1[20]={"張","王","李","趙","錢","孫","蔣","秦","任","劉","周","鄭","吳","朱","許","何","呂","謝","方","葉"};

char*?name2[20]={"子","欣","晨","紫","詩","夢","嘉","壹","思","靜","可","佳","心","梓","俊","明","浩","博","文","天"};

char*?name3[20]={"軒","勇","濤","軍","浩","豪","宇","俊","鳴","熙","文","國","佑","澤","然","傑","遠","平","秋","飛"};

srand((unsigned)time(0));

int?n;

float?f,avg;

for(i=0;i<N;i++)//隨機初始30個同學姓名學號成績等數據?

{

n=rand()%20;

strcpy(s[i].name,name1[n]);

n=rand()%20;

strcat(s[i].name,name2[n]);

n=rand()%20;

strcat(s[i].name,name3[n]);

//以上為隨機生成姓名?

n=0;

for(j=0;j<5;j++)

{

n=n*10+rand()%10;

}

sprintf(s[i].No,"%05d",n);

//以上為隨機生成學號?

if(rand()%2==0)

{

strcpy(s[i].sex,"男");

}

else

{

strcpy(s[i].sex,"女");

}

//以上為隨機生成性別

avg=0;

for(j=0;j<5;j++)

{

n=rand()%50+51;

f=(float)n;

if(rand()%2==1?&&?f<100.0)

{

f+=0.5;

}

s[i].score[j]=f;

avg+=f;

}

s[i].avg=avg/5;

//以上為隨機生成5門成績和平均分?

}

////----------------如果要用手動輸入全部數據,請註釋掉虛線間的代碼---------結束-------//

//?input(s);?//如果不用隨機生成姓名學號成績等數據,請用此函數?

sort(s);

printf("按平均成績由高到低打印\n");

prt(s);

printf("\n\n第三門課的平均分為:?%.2f\n",calc(s));

find(s);

return?0;

}

  • 上一篇:排線器 英語怎麽說
  • 下一篇:李玉平的工作履歷
  • copyright 2024編程學習大全網