C语言程序,请你编写一个程序计算每个学生的平均成绩

供稿:hz-xin.com     日期:2025-01-13
C语言程序,请你编写一个程序计算每个学生的平均成绩并按降序排序

你这个可以用链表来写,同类型我已经写过几次链表的,需要你可以去我回答记录里找。
这次,我不用链表,直接用2维数组,冒泡排序,那你参考吧。
原理:1、数组内存的连续性 2、利用指针冒泡排序

#include#include#includevoid prStu(float *stu);//打印学生成绩 参数:数组首地址void jx(float *p);//降序排列int main(){ float stu[50][6],*p=&stu[0][0],num[4]; //stu:50学生信息 1列为学生编号 2~5列为4科成绩 6列为平均分 int i=0,count=0;//--这段我是用随机数做50个学生的成绩,我懒得录入200个成绩!!,你要手输,就把这段随机数改成输入函数--- srand(time(NULL)); while(i++1 && count1 && count<6) printf(" %02d ",(int)*p++); if(count==6) { count=0; printf(" %.2f
",*p++); } }}

#include<stdio.h>
int main()
{
int i;
float a[10],min,max,avg;//max表示最高分,min表示最低分,avg表示平均分
printf("请输入10位学生的分数
");
printf("********************************
");
for(i=0;i<=9;i++)
{
printf("请输入一位学生的分数:");
scanf("%f",&a<i>);
}
max=min=avg=a[0];
for(i=1;i<=9;i++)
{
if(min>a<i>)
{min=a<i>;}
if(max<a<i>)
{max=a<i>;}
avg=avg+a<i>;
}
avg=avg/10;
printf("max=%f
",max);
printf("min=%f
",min);
printf("max=%f
",avg);
printf("********************************
");
}

扩展资料:include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"

#include&lt;stdio.h&gt;

void main()

{

float a[10][10];//用来存放10名学生的5门成绩,最后一位用于存放平均成绩

int i,j;

float sum=0.0;

for(i=0;i&lt;10;i++)

{

printf("请输入第%d个学生的5门成绩",i+1);

for(j=0;j&lt;5;j++)

{

scanf("%f",&a&lt;i&gt;[j]);

sum=sum+a&lt;i&gt;[j];

}

a&lt;i&gt;[10]=sum/5.0;

}

printf("10名学生的成绩及平均分
");

for(i=0;i&lt;10;i++)

{

for(j=0;j&lt;10;j++)

printf("%.3f",a&lt;i&gt;[j]);

printf("
");

}

}

扩展资料:

printf的用法

格式

printf函数的原型为:

#include&lt;stdio.h&gt;

int printf(const char*format,...);

在讲每一个函数的时候都会先把它的函数原型写出来,这个原型你们现在看不懂不要紧,等到学完C语言之后再来看这个原型就会发现它是很有参考意义的!它对深刻理解函数有着很大的价值。

printf的格式有四种:

1)printf("字符串
");

#include&lt;stdio.h&gt;

int main(void)

{

printf("Hello World!
");//
表示换行

return 0;

}

其中
表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中n是“new line”的缩写,即“新的一行”。

此外需要注意的是,printf中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。

2)printf("输出控制符",输出参数);

纯文本复制

#include&lt;stdio.h&gt;

int main(void)

{

int i=10;

printf("%d
",i);/*%d是输出控制符,d表示十进制,后面的i是输出参数*/

return 0;

}



一、题目分析:

要计算每个学生的平均成绩,需要获取如下信息:

1、学生总数;

2、科目数;

3、每个学生每科的成绩。

然后累加每个学生的总分,并计算总成绩。

二、算法设计:

1、输入学生总数;

2、输入科目数;

3、对于每个学生,输入各科成绩,计算总分及平均分,保存平均分值。

4、输出结果。

三、参考代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, m;
    float *p;
    int i,j;
    scanf("%d%d",&n,&m);//输入学生总数n和学科总数m。
    p = (float *)malloc(sizeof(float)*n);//申请空间以存储平均分。
    for(i = 0; i < n; i ++)
    {
        p[i] = 0;//初始为0.
        for(j = 0; j < m; j ++)//输入每个学生每科成绩。
        {
            float t;
            scanf("%f",&t);
            p[i]+=t;//累加获得总分。
        }
        p[i]/=m;//计算平均分。
    }
    for(i = 0; i < n; i ++)//输出结果。
        printf("%f
", p[i]);
    free(p);//释放内存。
    return 0;
}


//仅作参考
 
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
int studentNum = 0;
#define MAXSTUDENT (1024)
#define CheckData()\
{\
if(!studentNum)\
{\
printf("没有学生数据,按任意键返回……
");\
getch();\
return;\
}\
}\
 
typedef struct Student
{
int id;
int cScore;
int mathScore;
}Student;
void ClearStudent(Student* student)
{
memset((void*)student,0,sizeof(*student));
}
void ShowMainMenu()
{
system("cls");
printf("1.增加记录
2.计算每个学生的总成绩
3.计算每门课程的平均成绩
4.按座号查询学生的成绩
5.按总分排名
6.输出前n名的学生的成绩
7.修改成绩
0.退出
");
}
void ShowCountScore(const Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
printf("学生%04d的总成绩:%d
",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf("
按任意键继续……");
getch();
}
void ShowClassAvg(const Student* student)
{
system("cls");
CheckData();
double sumc = 0;
double summath = 0;
for(int i = 0;i < studentNum;i++)
{
sumc += (student+i)->cScore;
summath += (student+i)->mathScore;
}
printf("C语言平均成绩为:%lf
",sumc/studentNum);
printf("数学平均成绩为:%lf
",summath/studentNum);
printf("
按任意键继续……");
getch();
}
void AddStudent(Student* student)
{
system("cls");
if(studentNum == MAXSTUDENT)
{
printf("人数已满,按任意键返回……
");
getch();
}
printf("分别录入座号、C语言成绩、数学成绩:
");
int id = 0;
int cScore = 0;
int mathScore = 0;
scanf("%d%d%d",&id,&cScore,&mathScore);
for(int i = 0 ;i < studentNum;i++)
if((student+i)->id == id)
{
printf("座号重复,按任意键返回……
");
getch();
return;
}
(student+studentNum)->id = id;
(student+studentNum)->cScore = cScore;
(student+studentNum)->mathScore = mathScore;
studentNum++;
}
void SelectFromID(const Student* student)
{
system("cls");
CheckData();
printf("输入查询ID:
");
int id = 0;
scanf("%d",&id);
printf("查询结果:
");
for(int i = 0;i<studentNum;i++)
if(id == (student+i)->id)
{
printf("C语言成绩为:%d
数学成绩为:%d
",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf("
按任意键继续……");
getch();
}
void SortForCount(Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
{
for(int j = studentNum -1;j > i;j--)
if(((student+j)->cScore+(student+j)->mathScore) > ((student+j-1)->cScore+(student+j-1)->mathScore))
{
Student stu;
stu = *(student+j);
*(student+j) = *(student+j-1);
*(student+j-1) = stu;
}
}
}
void SortForN(Student* student,int n)
{
SortForCount(student);
if(!studentNum)
return;
n = n>studentNum?studentNum:n;
for(int i = 0;i< n;i++)
printf("第%d名:
ID:%d
C语言成绩为:%d
数学成绩为:%d
总分为:%d

",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("
按任意键继续……");
getch();
}
void UpdateScore(Student* student)
{
system("cls");
CheckData();
printf("输入修改ID:
");
int id = 0;
scanf("%d",&id);
int i = 0;
for(;i<studentNum;i++)
if(id == (student+i)->id)
break;
if(i == studentNum)
printf("
查无此人,按任意键继续……");
else
{
printf("输入欲修改的C语言成绩、数学成绩:
");
int cScore = 0;
int mathScore = 0;
scanf("%d%d",&cScore,&mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore = mathScore;
printf("
按任意键继续……");
}
getch();
}
void RunStudent(Student* student)
{
while(1)
{
ShowMainMenu();
char chGet = getch();
switch(chGet)
{
case  '1':
AddStudent(student);
break;
case  '2':
ShowCountScore(student);
break;
case '3':
ShowClassAvg(student);
break;
case '4':
SelectFromID(student);
break;
case  '5':
SortForCount(student);
for(int i =0;i<studentNum;i++)
printf("第%d名:
ID:%d
C语言成绩为:%d
数学成绩为:%d
总分为:%d

",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("
按任意键继续……");
getch();
break;
case '6':
{
int n = 0;
printf("输入N:
");
scanf("%d",&n);
SortForN(student,n);
}
break;
case '7':
UpdateScore(student);
break;
case '0':
return;
default:
break;
}
}
}
int main()
{
Student* allStudent = (Student*)malloc(MAXSTUDENT*sizeof(Student));
memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));
RunStudent(allStudent);
return 0;
}


c语言程序帮实现

C语言程序,请你编写一个程序计算每个学生的平均成绩并按降序排序_百度...
include<stdio.h>#include<stdlib.h>#includevoid prStu(float *stu);\/\/打印学生成绩 参数:数组首地址void jx(float *p);\/\/降序排列int main(){ float stu[50][6],*p=&stu[0][0],num[4]; \/\/stu:50学生信息 1列为学生编号 2~5列为4科成绩 6列为平均分 int i=0,count=0...

C语言程序,请你编写一个程序计算每个学生的平均成绩
include<stdio.h> void main(){ float a[10][10];\/\/用来存放10名学生的5门成绩,最后一位用于存放平均成绩 int i,j;float sum=0.0;for(i=0;i<10;i++){ printf("请输入第%d个学生的5门成绩",i+1);for(j=0;j<5;j++){ scanf("%f",&a[j]);sum=sum+a[j];} a[10]=sum\/...

编写一个C语言程序:输入三个学生三门课的成绩,计算每个学生的总分和平...
for(i=0;i<3;i++)printf("第%d个学生的总分为:%f,平均成绩为:%f\\n",i+1,sum[i],average[i]);}

c语言; 编写一个程序,计算任意输入的整数的各位数字之和?
void main(){ int a,sum=0;printf("请输入一个大于0的正整数~~");scanf("%d",&a);while(a!=0) \/\/循环结束的条件是 a等于 0 { sum+=a%10;\/\/ a%10 的作用是取a这个数的个位 比如 108除以10的余数是不是8 a\/=10;\/\/执行上一句代码之后还要把a的值 除以10吧 比如 我输...

如何用c#编写一个程序计算数组中每个数的和。
include<stdio.h> int main(){ int a[10],sum,i;for(i=0;i<10;i++){ scanf("%d",&a[i]);sum+=a[i];} printf("这10个数的和为%d",sum);return 0;}

编写一个计算三个数字的大小顺序并输出的程序。
C语言程序如下:include<stdio.h> intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...

设计一个程序,计算顺序串s中每一个字符出现的次数?
C语言程序如图,输出结果如下

c语言编写程序,从键盘输入6名学生5门功课成绩,分别统计出每个学生的平...
一、问题分析 需要保存6名学生5门功课的成绩,需要设计一个6行5列大小的二维数组scores[6][5]来存储30个成绩数据。保存6名学生的平均成绩,需要设计一个6列大小的一维数组来avgs[6]存储平均成绩。为使程序具有更好的通用性,使用宏定义定义学生人数M和课程门数N。计算每个学生的平均成绩时,累加该...

C语言程序分析,输入一个数,确定是几位数,输出每一位和按逆序输出每一...
int len) \/\/从首位查找非0字符,并且返回非0首地址{ if(p[0] == '0')\/\/如果输入的字符串首位没有0则不运行下面的算法直接跳过 { for(int i=0;i<len;i++) { if((p[i] == '0') && (p[i+1] != '0')) { return &p[i+1]; } } } ...

用C语言编写一个程序,计算一个3*3矩阵每行的和
include<stdio.h> main(){ int a[3][3],for (i=0;i<3;i++){ s=a[i][0]+a[i][1]+a[0][2];printf("第%d行的和是%d",i,s);} } 我没有c编程程序,没法调试啊,你自己试试,你要是有程序发一个给我啊,呵呵!!!434958125@qq。com ...