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

某班有 10 个学生,请你编写一个程序计算每个学生的平均成绩,统计平均分不及格
的学生人数。其中每个学生的数据包括学号、姓名、3 门课的成绩。要求:
(1) 使用 input 函数输入 10 学生的信息;
(2) 使用 inputa 函数输入一个学生的信息;
(3) 使用 average 函数来计算学生的平均成绩;
(4) 使用 failurecount 函数来统计不及格的学生人数;
(5) 使用 output 函数输出 10 个学生的信息;
(6) 在 main 函数最后输出不及格学生人数。
要用到结构体,拜托了很急,谢谢你们

#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<i>[j]);

sum=sum+a<i>[j];

}

a<i>[10]=sum/5.0;

}

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

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

printf("%.3f",a<i>[j]);

printf("\n");

}

}

扩展资料:

printf的用法

格式

printf函数的原型为:

#include<stdio.h>

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

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

printf的格式有四种:

1)printf("字符串\n");

#include<stdio.h>

int main(void)

{

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

return 0;

}

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

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

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

纯文本复制

#include<stdio.h>

int main(void)

{

int i=10;

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

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-27

一、题目分析:

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

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\n", p[i]);
    free(p);//释放内存。
    return 0;
}

第2个回答  推荐于2017-09-17
//仅作参考
 
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
int studentNum = 0;
#define MAXSTUDENT (1024)
#define CheckData()\
{\
if(!studentNum)\
{\
printf("没有学生数据,按任意键返回……\n");\
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.增加记录\n2.计算每个学生的总成绩\n3.计算每门课程的平均成绩\n4.按座号查询学生的成绩\n5.按总分排名\n6.输出前n名的学生的成绩\n7.修改成绩\n0.退出\n");
}
void ShowCountScore(const Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
printf("学生%04d的总成绩:%d\n",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
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\n",sumc/studentNum);
printf("数学平均成绩为:%lf\n",summath/studentNum);
printf("\n按任意键继续……");
getch();
}
void AddStudent(Student* student)
{
system("cls");
if(studentNum == MAXSTUDENT)
{
printf("人数已满,按任意键返回……\n");
getch();
}
printf("分别录入座号、C语言成绩、数学成绩:\n");
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("座号重复,按任意键返回……\n");
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:\n");
int id = 0;
scanf("%d",&id);
printf("查询结果:\n");
for(int i = 0;i<studentNum;i++)
if(id == (student+i)->id)
{
printf("C语言成绩为:%d\n数学成绩为:%d\n",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf("\n按任意键继续……");
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名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
getch();
}
void UpdateScore(Student* student)
{
system("cls");
CheckData();
printf("输入修改ID:\n");
int id = 0;
scanf("%d",&id);
int i = 0;
for(;i<studentNum;i++)
if(id == (student+i)->id)
break;
if(i == studentNum)
printf("\n查无此人,按任意键继续……");
else
{
printf("输入欲修改的C语言成绩、数学成绩:\n");
int cScore = 0;
int mathScore = 0;
scanf("%d%d",&cScore,&mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore = mathScore;
printf("\n按任意键继续……");
}
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名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
getch();
break;
case '6':
{
int n = 0;
printf("输入N:\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;
}

追问

求看私信.....

本回答被提问者和网友采纳
第3个回答  2015-06-22
c语言程序帮实现
相似回答