1、首先我们打开visual studio 2019软件,新建一个win32控制台程序。
创新互联主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务双河,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
2、然后在源文件夹下面新建一个C语言文件。
3、接着在C语言中导入stdio和stdlib库。
4、然后在main函数中输入如下图所示的逻辑代码。
5、运行程序以后我们就可以看到如下图所示的CMD界面,这里需要大家输入10个成绩。
6、最后输完第10个成绩的时候,回车就可以得到平均值了。
//结构定义中包含两个成员,分子和分母
struct fraction
{
int up, down;/*分子和分母*/
};
/*
相加算法的核心是找两个分母的最小公倍数和结果分子分母的最大公约数,分别单独函数来求
*/
int pubtime(int, int);//最小公倍数
int pubsub(int, int);//最大公约数,可用辗转相除法求,挺经典的一个方法。
/********分数相加********/
fraction add(fraction f1, fraction f2)
{
fraction result;
result.down = pubtime(f1.down, f2.down);
result.up = f1.up * result.down / f1.down + f2.up * result.down / f2.down;
int n = pubsub(result.up, result.down);
result.up /= n; result.down /= n;
return result;
}
int pubtime(int n1, int n2)
{
int n = pubsub(n1, n2);
return n1 * n2 / n;
}
int pubsub(int n1, int n2)
{
int r = n1;
if(n2 n1)
r = n1, n1 = n2, n2 = r;
do
{ /*辗转相除*/
r = n1 % n2;
if(r == 0) break;
n1 = n2; n2 = r;
}while(true);
return n2;
}
#include stdio.h
#define N 100
/*定义学生结构体*/
struct Student
{
int ID;
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Sum;
};
/*声明学生数组及学生数量*/
struct Student students[N];
//int num=0;
/*求总分*/
float Sums(struct Student stu)
{
return stu.Mark1+stu.Mark2+stu.Mark3;
}
/*输入学生信息*/
int Student_Input(){
int num=0;
while(1){
//printf("请输入学号:");
students[num].ID=num+1; //可以自行将学号改为手工输入
printf("请输入姓名:");
scanf("%s",students[num].Name);
getchar();
printf("请输入成绩1:");
scanf("%f",students[num].Mark1);
getchar();
printf("请输入成绩2:");
scanf("%f",students[num].Mark2);
printf("请输入成绩3:");
scanf("%f",students[num].Mark3);
getchar();
students[num].Sum=Sums(students[num]);
num++;
printf("是否继续?(y/n)"); //继续输入数据?
if (getchar()=='n'){
break;
}
}
return num;
}
/*输出学生信息*/
void Student_Display(int n)
{
int i;
printf("%10s%10s%8s%8s%8s%8s\n","学号","姓名","成绩","成绩","成绩","总成线");
printf("---------------------------------------------------------\n");
for (i=0;in;i++)
{
printf("%10d%10s%8.2f%8.2f%8.2f%8.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Sum);
}
}
/*主程序*/
int main(){
int n=0;
n=Student_Input();
Student_Display(n);
return 0;
}
#includestdio.h
int main()
{
void max(int [][5]);//注意二位数组传递参数时,行数信息可以省略,但一定列数不能
void averagek(int [][5]);
void averages(int [][5]);
int a[10][5],i;//后面很多没用上的变量就不需要了
for(i=0;i=9;i++)
{
printf("请输入第%d名学生五科成绩(中间用空格隔开):",i+1);
scanf("%d %d %d %d %d",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);
}
averages(a);
averagek(a);
max(a);
return 0;
}
void averages(int a[][5])
{
int m,i;
for(i=0;i=9;i++)
{
m=(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4])/5;
printf("第%d名学生平均分为:%d\n",i+1,m);
}
}
void averagek(int a[][5])
{
int m,i;
for(i=0;i=4;i++)
{
m=(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]+a[5][i]+a[6][i]+a[7][i]+a[8][i]+a[9][i])/10;
printf("第%d科成绩平均分为%d\n",i+1,m);//帮你加了个换行符,开始没加时好乱,信息全一起
}
}
void max(int a[][5])
{
int i,j,max,k,g;//你这里g后面多了逗号,小错误不要犯
max=a[0][0];
for(i=0;i=9;i++)
for(j=0;j=4;j++)
{
if(a[i][j]max)
{
max=a[i][j];
k=i;
g=j;
}
}
printf("第%d名学生的第%d科成绩取得最高分:%d\n",k+1,g+1,max);//帮你加了个换行符,开始没加时好乱,信息全一起,还有就是个数要比数组下标多1,所以要加上去
}