輸入5名學生3門課程成績
❶ 輸入五個學生3門課的成績,計算和輸出每個學生和每門課程的平均成績。
#include<stdio.h>
#defineN5 //定義輸入學生的個數
structstudent//定義學生結構體
{
charnum[6];
charname[8];
intscore[4];
floatavr;
}stu[N];
voidmain()
{
inti,j,max,maxi,sum;
floataverage;
for(i=0;i<N;i++)
{
printf("Inputscoresofstudent%d: ",i+1);//輸入每個學生的數據
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score%d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
average=0;
max=0;
maxi=0;
for(i=0;i<3;i++)//求平均數
{
sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if(sum>max)
{
max=sum;
maxi=i;
}
}
average/=N;
printf(" NO. name score1 score2 score3 average ");
for(i=0;i<N;i++)//輸出每個學生的信息
{
printf("%5s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("%8.2f ",stu[i].avr);
}
printf("average=%7.2f ",average);
printf("Thehighestscoreis:%s,scoretotal:%d.",stu[maxi].name,max);
}
驗證吧~~
❷ C語言編程:輸入5名學生3門課程成績
您好!下面是我寫的程序希望對您有用!
#include<stadio.h>
void main()
{
int x1,x2,x3,x4,x5,y1,y2,y3,y5,y5,z1,z2,z3,z4,z5,m1,m2,m3,m4,m5,n1,n2,n3;
printf("輸入5名同學的3門課程的成績 x1,x2,x3,x4,x5,y1,y2,y3,y5,y5,z1,z2,z3,z4,z5\n");
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&x1,&x2,&x3,&x4,&x5,&y1,&y2,&y3,&y4,&y5,&z1,&z2,&z3,&z4,&z5);
n1=(x1+x2+x3+x4+x5)/5;
n2=(y1+y2+y3+y4+y5)/5;
n3=(z1+z2+z3+z4+z5)/5;
m1=(x1+y1+z1)/3;
m2=(x2+y2+z2)/3;
m3=(x3+y3+z3)/3;
m4=(x4+y4+z4)/3;
m5=(x5+y5+z5)/3;
printf("%d,%d,%d,%d,%d,%d,%d,%d",m1,m2,m3,m4,m5,n1,n2,n3);
}
❸ 用雙重循環結構編寫程序,從鍵盤輸入5名學生的3門成績,分別統計出每個學生的平均成績
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char*argv[])//這里如果編譯錯誤的話改成intmain()就可以了
{
inti,c,s=0,temp;
for(i=0;i<=5;i++)
{
for(c=1;c<=5;c++)
{
printf("請輸入第%d位學生的第%d門功課成績:1",i+1,c);
scanf("%d",&temp);
s+=temp;
}
printf("平均成績:%.2f ",s/5.0);
s=0;
}
system("PAUSE");
return0;
}
//dev-c下編譯通過
❹ 有5個學生,每個學生有3門課的成績,從鍵盤輸入學生數據(包括學生號,姓名,三門課成績),計算出平均
環境:VC
struct student
{
char id[10];
char name[10];
float score1;
float score2;
float score3;
float ave;
};
#include<stdio.h>
void main()
{
struct student stu[5];
struct student temp;
FILE *fp;
int i,j;
for(i=0;i<5;i++)
{
printf("請輸入第%d個學生的學號:",i);
fflush(stdin); //清空函數
gets(stu[i].id);
printf("請輸入第%d個學生的姓名:",i);
fflush(stdin);
gets(stu[i].name);
printf("請輸入第%d個學生的第1科成績:",i+1);
scanf("%f",&stu[i].score1);
printf("請輸入第%d個學生的第2科成績:",i+1);
scanf("%f",&stu[i].score2);
printf("請輸入第%d個學生的第3科成績:",i+1);
scanf("%f",&stu[i].score3);
stu[i].ave=(stu[i].score1+stu[i].score2+stu[i].score3)/3;
}
fp=fopen("stu","w"); //寫入文件stu
for(i=0;i<5;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(stu[j].ave>stu[j+1].ave)
{
temp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp;
}
}
}
printf("排序後各平均成績:\n");
for(i=0;i<5;i++)
{
printf("%f\n",stu[i].ave);
}
fp=fopen("stu_sort","w"); //寫入文件stu_sort
for(i=0;i<5;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
僅供參考
❺ 已知某班5名學生的三門課成績試編寫程序,輸入這5個學生的三門課成績a[5][3],輸出每門課成績的
#include <stdio.h>
/*定義結構體*/
struct student
{
int a;
int b;
int c;
float ave;
};
int main()
{
struct student sco[5];
printf("輸入5個學生的3們成績:\n");
for(i=0;i<5;i++)
{
scanf("%d%d%d",sco[i].a,sco[i].b,sco[i].c);
sco[i].ave=(float)(sco[i].a+sco[i].b+sco[i].c)/3;
}
printf("5名學生平均成績分別為:\n");
for(i=0;i<5;i++)
{
printf("%.2f\n",sco[i].ave);
}
return 0;
}
————————————————
如果以上出現「%」符號,那是為何防止系統誤識我把半形符號寫成全形符號了,注意改回來。
————————————————
親愛的LZ,如果我的回答能夠幫你解決問題,或是對你有幫助,或是對你今後的發展造成積極的影響,那麼請您的回答吧,同時更迫切地希望您能夠在的時候幫我打上「能解決」和「原創」,然後把兩行的五顆五角星分別點亮,點亮五角星就是點亮你我的希望。 我沖11級了,需要很多綜合聲望,感謝您的幫助,衷心祝願您快樂每一天~
❻ 編寫程序要求:輸入5個學生3門課程的成績,
你好。
程序清單:
#include<stdio.h>
#include<string.h>
struct student //學生結構體
{
char name[30]; // 學生姓名
double score[3]; //三門成績
double aver; //存平均成績
} st[5],temp; //五個學生
int main()
{
double sum;//定義存放每個學生總成績的變數
int i,j,count;
// 輸入學生信息
for(i=0;i<5;i++)
{
printf("請輸入%d號學生姓名:",i+1);
scanf("%s",st[i].name);
sum=0.0; //為每個學生的總成績賦初值
for(j=0;j<3;j++)
{
printf("請輸入%d號學生第%d門課程成績:",i+1,j+1);
scanf("%lf",&st[i].score[j]); //循環輸入每個學生的成績
sum=sum+st[i].score[j]; //累加每個學生的總成績
}
st[i].aver=sum/3.0;//計算每個學生的平均成績
}
//利用冒泡法對平均成績進行排序
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
{
if(st[i].aver<st[j].aver)
{
memcpy(&temp,&st[i],sizeof(struct student));
memcpy(&st[i],&st[j],sizeof(struct student));
memcpy(&st[j],&temp,sizeof(struct student));
}
}
// 輸出結果
printf(" 至少有兩個成績在90分以上的學生有: ");
for(i=0;i<5;i++)
{
count=0;
for(j=0;j<3;j++)
{
if(st[i].score[j]>=90)
{
count++;
}
}
if(count>=2)
printf("%s ",st[i].name);
}
printf(" 平均分由高到低進行排序: ");
for(i=0;i<5;i++)
{
printf("%s %.1f ",st[i].name,st[i].aver);
}
return 0;
}
運行結果:
望採納!
❼ 有五個學生,每個學生有三門課程的成績,從鍵盤輸入學生數據(包括學號,姓名,3門課程成績),計算出平均成績
經測試,程序正確運行,並把輸入結果保存在stud文件中。
源代碼如下:
#include <stdio.h>
#define ID 11
typedef struct _stu
{
char id[ID];
int sco1;
int sco2;
int sco3;
}stu;
int main()
{
int i;
stu s[5];
FILE *fp;
float ave;
printf("請輸入五個學生的學號和三門成績:\n");
for(i=0;i<5;i++)
{
scanf("%s%d%d%d",s[i].id,&s[i].sco1,&s[i].sco2,&s[i].sco3);
}
if((fp=fopen("stud","w"))==NULL)
{
printf("文件打開失敗\n");
return ;
}
for(i=0;i<5;i++)
{
ave=(s[i].sco1+s[i].sco2+s[i].sco3)/3.0;
fprintf(fp,"%s %d %d %d %.2f\n",s[i].id,s[i].sco1,s[i].sco2,s[i].sco3,ave);
}
fclose(fp);
return 0;
}
❽ 輸入5個學生3門課程成績,分別用函數實現輸入,計算每個同學的平均分,計算每門課程的平均分,
inline int IsSpace(int c)
{
if(c == 0x20 || c == 0x09 || c== 0x0D)
{
return 1;
}
return 0;
}
template<class T>
T RemovePreAndLastSpace(const T& str)
{
int length = str.size();
int i = 0,j = length -1;
while(i < length && IsSpace(str[i])){i++;}
while(j >= 0 && IsSpace(str[j])){j--;}
cout << i << " :" << j<< endl;
if(j<i) return T();
return str.substr(i,j-i+1);
}
❾ C語言編程:輸入5名學生3門課程成績
樓上說的是...還有:
stdsco 沒有賦初值誒...
所以系統給了一個很小的值,你在 stdsco += sco;
這里實際上沒多回大用...那個值太答小了...
建議啦:以後在新建變數的時候就給他一個初值...