某班有5名同學,建立一個學生的簡單資訊表,包括學號、姓名、3門課程的成績,撰寫程式,計算每名學生的平均成績及名次。(注:定義一個結構體型別,用結構指標作為函式引數)
輸入格式:
%ld %s %f %f %f
輸出格式:
%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n
輸入樣例:
201701 zhao 29.8 85.4 65.4
201702 qian 96.5 87.5 65.4
201703 sun 85.4 65.4 84.6
201704 li 63.4 95.4 86.3
201705 zhou 65.9 84.6 97.5
輸出樣例:
Number: Name: score: Average: rank:
201701 zhao 29.8 85.4 65.4 60.2 5
201702 qian 96.5 87.5 65.4 83.1 1
201703 sun 85.4 65.4 84.6 78.5 4
201704 li 63.4 95.4 86.3 81.7 3
201705 zhou 65.9 84.6 97.5 82.7 2
————————————————
#include <stdio.h>
struct student
{
long num;
char name;
float score1;
float score2;
float score3;
};
void average(struct student *stu,float aver[])
{
int i;
for(i=0;i<5;i++)
{
aver[i]=((stu+i)->score1+(stu+i)->score2+(stu+i)->score3)/3;
}
}
void mr(float aver[],int rank[])
{
int i,j,a;
for(i=0;i<5;i++)
{
a=5;
for(j=0;j<5;j++)
{
if(aver[i]<aver[j])
a=a-1;
}
rank[i]=a;
}
}
int main ()
{
struct student stu[5];
int i,rank[5];
float aver[5];
for(i=0;i<5;i++)
{
scanf("%ld %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
}
average(stu,aver);
mr(aver,rank);
printf("Number: Name: score: Average: rank:\n");
for(i=0;i<5;i++)
{
printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,aver[i],rank[i]);
}
return 0;
}
uj5u.com熱心網友回復:
不出結果?是沒有輸出 還是輸出結果不對?貼出運行結果uj5u.com熱心網友回復:
char name;//目測這里應該是字串陣列uj5u.com熱心網友回復:
字符陣列。。uj5u.com熱心網友回復:
這里要怎么改
uj5u.com熱心網友回復:
char name[20];uj5u.com熱心網友回復:
如果規定名字最大輸入多長,則 char name[len]//len為長度轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59080.html
標籤:C語言
上一篇:我是剛剛接觸單片機的小白!
下一篇:【在線求助】win7上可以運行的LCC—win32編譯軟體,放到win10上就只能顯示部分視窗了,按鈕都是半個的。
