知5个学生的4门课的成绩
1. 已知5名学生的4门课的成绩,分别求出每门课的平均值
void main(){
int a[5][4];
int b[4]={0};
for (int i=0;i<5;i++){
printf("第%d个学生的成绩:\n",i+1);
scanf("%d,%d,%d,%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
}
for (i=0;i<4;i++){
for (int j=0;j<5;j++)
b[i]+=a[j];
printf("第%d门课的平均专分属为%4.1f\n",i+1,(float)b[i]/5);
}
}
2. 已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成
问题很多
首先
for(j=0;j<4;j++)
sum=sum+a[i][j];
b[i]=sum/4.0;
b[i]赋值要在循环里面做。
其次
排序 你这样排出来的结果应该是小到大
再次
printf("%d\n",b[i]);
b[]数组时float型的%d输出格式也不正确
我改过之后为
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5][4]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}};
int i,j,sum;
float average,b[5],t;
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+a[i][j];
b[i]=sum/4.0;
}
printf("average%d=%4.2f\n",i+1,b[i]);
}
for(j=0;j<4;j++)
for(i=j+1;i<5;i++)
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
for(i=0;i<5;i++)
printf("%.2lf\n",b[i]);
system("pause");
return 0;
}
但是这不是最好的方法
3. 有5个学生,每个学生有4门课成绩,从键盘输入以上数据(包含:学号,
#include<stdio.h>
structSTU{
charname[20];
intxuehao;
floatsubject1;
floatsubject2;
floatsubject3;
floatsubject4;
floatave;//平均分
};
voidmain()
{
STUa[5];
FILE*fp;
inti=0;
printf(" 请输入5个学生学号/姓名及4门课的成绩: ");
do
{
printf("--学生%d姓名:",i+1);
setbuf(stdin,NULL);//清除缓存,便于下次gets的输入.否则将读取上次键盘输入的东西
gets(a[i].name);//不要输入中文scanf输入时不能含有空格
printf(" 学号:");scanf("%d",&a[i].xuehao);
printf(" 4门课的成绩(之间英文逗号隔开):");
scanf("%f,%f,%f,%f",&a[i].subject1,&a[i].subject2,&a[i].subject3,&a[i].subject4);
a[i].ave=(a[i].subject1+a[i].subject2+a[i].subject3+a[i].subject4)/4;
}while(++i<5);
fp=fopen("stud.txt","w");
fprintf(fp," -----------------Thestudentscores------------------");
fprintf(fp," 姓名 学号 科目1 科目2 科目3 科目4 平均分");
i=0;
do{
fprintf(fp," %s %d %.2f %.2f %.2f %.2f %.2f",a[i].name,a[i].xuehao,a[i].subject1,a[i].subject2,a[i].subject3,a[i].subject4,a[i].ave);
}while(++i<5);
if(fp!=NULL)fclose(fp);
printf("成绩录入完毕,已存入stud.txt内 ");
}
文件在程序的那个文件夹里,以上是结构体建立数据,下面是用数组来临时存信息
#include<stdio.h>
voidmain()
{
charname[5][20];
floata[5][6];
FILE*fp;
inti=0;
printf(" 请输入5个学生学号/姓名及4门课的成绩: ");
do
{
printf("--学生%d姓名:",i+1);
setbuf(stdin,NULL);//清除缓存,便于下次gets的输入.否则将读取上次键盘输入的东西
gets(name[i]);//不要输入中文scanf输入时不能含有空格
printf(" 学号:");
scanf("%f",&a[i][0]);//一般学号只有整数
printf(" 4门课的成绩(之间英文逗号隔开):");
scanf("%f,%f,%f,%f",&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
a[i][5]=(a[i][1]+a[i][2]+a[i][3]+a[i][4])/4;
}while(++i<5);
//写入文件操作
fp=fopen("stud.txt","w");//非追加模式写入
fprintf(fp," -----------------Thestudentscores------------------");
fprintf(fp," 姓名 学号 科目1 科目2 科目3 科目4 平均分");
i=0;
do{
fprintf(fp," %s %.f %.2f %.2f %.2f %.2f %.2f",name[i],a[i][0],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5]);
}while(++i<5);
if(fp!=NULL)fclose(fp);//关闭文件
printf("成绩录入完毕,已存入stud.txt内 ");
}
4. 输入5个学生4门课程的成绩,之后计算:每个学生总分,每门课程平均分;输出总分最高的学生的姓名和总成绩
#include<stdio.h>
void mian()
{
int stu[5][4],i,j,t[5];
float sum=0,a[4],b[4],temp,t;
char name[5]
for(i=0;i<5;i++)
scanf("%c",&name[i]);
for(i=0;i<5;i++)
for(j=0;j<4;j++)
scanf("%d",&stu[i][j]);
for(i=0;i<5;i++)
{t[i]=0;
for(j=0,j<4;j++)
{sum=sum+stu[i][j];
t[i]=t[i]+stu[i][j];/每个学生的总分
}
for(j=0;j<4;j++)
for(i=0;i<5;i++)
a[j]=stu[i][j];
b[j]=a[j]/4.0;/ 每门课程平均分
temp=t[0];
t=0;
for(i=1;i<5;i++)
if(temp<t[i]){
temp=t[i];
t=i;
}
printf("%c",name[i]);/输出总分最高的学生的姓名
printf("%-5.2d",temp);/和总成绩
}
写得很累很困,你20分太少了点吧
5. 已知5名学生各有4门课的成绩,试求个人平均成绩和各门课的平均成绩。使用C语言
#include<stdio.h>
#include<conio.h>
#defineARR_LEN255/*数组长度上限*/
intmain(void){
floatscore[ARR_LEN][ARR_LEN]={{87,88,93,83},
{76,78,89,93},
{97,89,96,88},
{54,62,71,68},
{65,79,70,69}};
charsubject[ARR_LEN][ARR_LEN]={"科目一","科目二","科目三","科目四"};
intstuCnt=5,subCnt=4;
floatavgStu[ARR_LEN],avgSub[ARR_LEN];
inti,j;
printf("# ");
for(j=0;j<subCnt;j++)
printf("%s ",subject[j]);
putchar(' ');
for(i=0;i<stuCnt;i++){
printf("%d ",i+1);
for(j=0;j<subCnt;j++){
printf("%.2f ",score[i][j]);
}
putchar(' ');
}
putchar(' ');
for(j=0;j<subCnt;j++){
avgSub[j]=0;
for(i=0;i<stuCnt;i++){
avgSub[j]+=score[j][i];
}
avgSub[j]/=stuCnt;
}
printf(" ");
for(j=0;j<subCnt;j++)
printf("%s ",subject[j]);
putchar(' ');
printf("各科目均值 ");
for(j=0;j<subCnt;j++)
printf("%.2f ",avgSub[j]);
putchar(' ');
putchar(' ');
for(i=0;i<stuCnt;i++){
avgStu[i]=0;
for(j=0;j<subCnt;j++){
avgStu[i]+=score[i][j];
}
avgStu[i]/=subCnt;
}
printf(" ");
for(i=0;i<stuCnt;i++)
printf("%d ",i+1);
putchar(' ');
printf("各学生均值 ");
for(i=0;i<stuCnt;i++)
printf("%.2f ",avgStu[i]);
putchar(' ');
getch();/*屏幕暂留*/
return0;
}
如有问题,点击头像联系我~~
6. C语言:已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从最高到低将各学生的成绩
#include<iostream>
using namespace std;
void main()
{
int i,j,sum,t;
int a[5][5]=,,,,}; //5*5够用了
printf("\n");
for (i=0;i<5;i++)
{ sum=0;
for(j=0;j<4;j++) //加前4个成绩
sum+=a[i][j];
a[i][4]=sum/4;}//平均值除4!存在下标为4的元素内版;
for(int k=0;k<5;k++)// 加了层循环 参看起泡法
for(i=0;i<5-k;i++)
if(a[i][4]<a[i+1][4])//条件权移到循环外了
for(j=0;j<5;j++)
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%8d",a[i][j]);
printf("\n");}
}
7. 输入五个学生的四门课程成绩,要求输出每个学生的平均成绩,然后对平均成绩从高到低将学生成绩排序记录。
#include<stdio.h>
struct student
{
int english;
int math;
int computer;
int linux;
int c;
double average;
};
int main()
{
i,j;
struct student Stu[5];
struct student temp;
printf("请输入五个学生的成绩\n");
for(i=0;i<5;i++)
{
printf("第%d位学生的成绩:",i+1);
printf("english:\n");
scanf("%d",&Stu[i].english);
printf("math:\n");
scanf("%d",&Stu[i].math);
printf("computer:\n");
scanf("%d",&Stu[i].computer);
printf("linux:\n");
scanf("%d",&Stu[i].linux);
printf("c:\n");
scanf("%d",&Stu[i].c);
Stu[i].average=(Stu[i].c+Stu[i].computer+Stu[i].english+Stu[i].linux+Stu[i].math)/5;
}
//排序
for(j=0;j<4;j++)
for(i=j+1;i<5;i++)
{
if(Stu[j].average<Stu[i].average)
{
temp=Stu[j];
Stu[j]=Stu[i];
Stu[i]=temp;
}
}
//输出排序后的学生成绩
for(i=0;i<5;i++)
{
printf("第%d位同学的平均成绩为:%5.2f\n",i+1,Stu[i].average);
}
return 0;
}
写了一下,不知道是不是你想要得
8. 已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排 序记录
已知5个学生的门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排序记录(成绩最高的学生的排在数组的最前行,成绩最低的学生牌子啊数组的最后面的一行)?
方法一:#include <stdio.h>
void main()
{
float a[5][5],sum=0,t;
int i,j,k;
for(i=0;i<5;i++)
{printf("please input the %d student's scores:",i+1);
for(j=0;j<=3;j++)
{
scanf("%f",&a[i][j]);
}
}
for(i=0;i<5;i++)
for(j=0,a[i][4]=0;j<4;j++)
{ a[i][4]+=a[i][j];
if(j==3) a[i][4]=a[i][4]/4;
}
for(k=0;k<4;k++)
for(i=0;i<5;i++)
if(a[i][4]<a[i+1][4])
for(j=0;j<5;j++)
{t=a[i][j];a[i][j]=a[i+1][j];a[i+1][j]=t;}
for(i=0;i<5;i++)
{
printf("\n");
for(j=0;j<5;j++)
printf("%.2f ",a[i][j]);
}
}
方法二:#include"stdio.h"
void main()
{
float a[5][4],b[5]={0,0,0,0,0},t;
int i,j;
printf("请输入5个同学4门功课的成绩:\n");
for(i=0;i<5;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
for(i=0;i<5;i++)
for(j=0;j<4;j++)
b[i]+=a[i][j];
for(j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(b[i]<b[i+1]) {t=b[i];b[i]=b[i+1];b[i+1]=t;}
for(i=0;i<5;i++)
printf("第%d名的平均分数为%.2f\n",i+1,b[i]/4);
}
9. 用C 语言数组解题 :已知5个学生的4门课的成绩,要求求出全部学生的门成绩并分别求出每门课的平均成绩
#include<stdio.h>
voidmain()
{
inti,j,a[5][4],b[4]={0};
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
b[i]+=a[i][j];
}
for(i=0;i<4;i++)
printf("第%d门课程总分专:%d,平均属分:%.1f ",i+1,b[i],b[i]/5.0);
}
10. 输入5个学生的4门课的成绩,分别用函数实现下列功能 计算每个学生的平均分 将平均分从高到低排序
#include<algorithm>
usingnamespacestd;
//往stud数组里填充数据;avg数组里为排好的平均回分
intstud[5][4],avg[5];
boolcomp(intx,inty){
returnx>y;
}
//计算答平均分
voidcalcuteAvg(void){
inttot;
for(inti=0;i<5;i++){
tot=0;
for(intj=0;j<4;j++)tot+=stud[i][j];
avg[i]=tot/4;
}
sort(avg,avg+5,comp);
}