① 用c语言编写程序:有五个学生的三门课程的成绩,求每门课程的平均成绩
程序设计思路:首先我们需要定义一个学生的结构体,用于存放学生信息;接着是3个方法,一个输入学生信息的方法,一个是计算学生每门课程平均成绩的,最后一个是输出学生所有信息,包括计算好的平均成绩,具体实现代码如下:
#include<stdio.h>
#include<stdlib.h>#defineARRAY_LEN100 /*数组长度*/
/*定义学生结构体*/
typedefstruct{
intno;/*学号*/
floatscore1;/*成绩1*/
floatscore2;/*成绩2*/
floatscore3;/*成绩3*/
floattotalScore;/*总分*/
floataverageScore;/*平均分*/
}student;
/*输入学生信息*/
voidinputInfo(studentstu[],intstuIndex){
inti;
printf("第%d名学生↓ ",stuIndex+1);
printf("学号:");
scanf("%d",&stu[stuIndex].no);
printf("成绩1:");
scanf("%f",&stu[stuIndex].score1);
printf("成绩2:");
scanf("%f",&stu[stuIndex].score2);
printf("成绩3:");
scanf("%f",&stu[stuIndex].score3);
putchar(' ');
}
/*计算平均成绩*/
voidcalculationScore(studentstu[],intstuIndex){
stu[stuIndex].totalScore=stu[stuIndex].score1+stu[stuIndex].score2+stu[stuIndex].score3;
stu[stuIndex].averageScore=stu[stuIndex].totalScore/3;
}/*输出学生成绩*/voidprintInfo(studentstu[],intstuIndex){
inti;
printf("%d ",stu[stuIndex].no);
printf("%.2f ",stu[stuIndex].score1);
printf("%.2f ",stu[stuIndex].score2);
printf("%.2f ",stu[stuIndex].score3);
printf("%.2f",stu[stuIndex].averageScore);
putchar(' ');
}
intmain(void){
intstuNum=5,i;
studentstu[ARRAY_LEN];
/*输入、计算*/
puts("请输入学生信息:");
putchar(' ');
for(i=0;i<stuNum;i++){
inputInfo(stu,i);
calculationScore(stu,i);
}
putchar(' ');
printf("%d名学生成绩输入完毕!",stuNum);
putchar(' ');
puts("================================================ ");
/*输出*/
puts("学号 成绩1 成绩2 成绩3 平均成绩");
for(i=0;i<stuNum;i++)
printInfo(stu,i);
getch();/*屏幕暂留*/
return0;
}
程序的运行结果:
(1)c语言输入5个学生的三门课成绩扩展阅读:
具有相同数据类型的数据我们可以用数组来存放,但对于上面的学生信息,包含多种数据类型,所以只能使用结构体来存放。
结构体的定义形式为:
struct 结构体名{
结构体所包含的变量或数组
};
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。
结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。注意大括号后面的分号;不能少,这是一条完整的语句。结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。
像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。
② C语言:输入5个学生3门课程的成绩,分别用函数实现一下功能
#include<stdio.h>
intmain()
{
voidmax(int[][5]);
voidaveragek(int[][5]);
voidaverages(int[][5]);
inta[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);
return0;
}
voidaverages(inta[][5])
{
intm,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 ",i+1,m);
}
}
voidaveragek(inta[][5])
{
intm,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 ",i+1,m);
}
}
voidmax(inta[][5])
{
inti,j,max,k,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 ",k+1,g+1,max);
}
③ c语言编程:输入5个学生3门课的成绩语文,数学,英语,a同学三门成绩80,90,75;b同学三门成
#include<stdio.h>
doublea[11][5]={0};
inti,j;
voidscanfa(doubleb[11][5])
{
printf("请依次输入每位同学的语文、数学、英语的成绩: ");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%lf",&b[i][j]);
}
voidSumStu(doubleb[11][5])//计算输出每个同学的总分
{
for(i=0;i<5;i++)
for(j=0;j<3;j++)
b[i][3]+=b[i][j];
for(i=0;i<5;i++)
printf("%.2lf ",b[i][3]);
}
voidSumSub(doubleb[10][5])//计算输出每门课程的平均分
{
for(j=0;j<3;j++)
for(i=0;i<5;i++)
b[5][j]+=b[i][j];
for(i=5,j=0;j<3;j++)
printf("%.2lf",b[i][j]);
printf(" ");
}
intmain()
{
scanfa(a);
SumStu(a);
SumSub(a);
return0;
}
④ C语言编写程序:输入5个学生3门课程的成绩,分别用函数实现以下功能
用结构体里面包含3个变量对应3们成绩,然后再次基础上定义一个包含五个结构变量的数组,再一次取出求平均值就行
⑤ C语言基础题。有5个学生,每个学生有3门课的成绩,从键盘输入学生数据
把你的程序改了下:
#include <iostream>
#include <stdlib.h>
#include <string.h>
struct student
{
char number[20];
char name[20];
int score[3];
} str[5];
void main()
{
float aver(int *);
struct student *p;
p=str;
int i,j;
for(i=0;i<5;i++) //read
{
printf("number:");
gets(p->number);
printf("name:");
gets(p->name);
for (j=0;j<3;j++)
switch(j)
{
case 0:printf("Mathematics:"); scanf("%d",&p->score[0]);break;
case 1:printf("C Program:"); scanf("%d",&p->score[1]);break;
case 2:printf("English:"); scanf("%d",&p->score[2]);break;
}
getchar(); //接收scanf()结束时的回车
p++;
printf("\n");
}
FILE *fp;
char filename[5]={"stud"};
if((fp=fopen(filename,"w"))==NULL)
{printf("Can't open the %s\n",filename);
exit(0);
}
p=str; //必须重新初始化指针p
for(i=0;i<5;i++)// puts
{
fprintf(fp,"number:");
fputs(p->number,fp);
fprintf(fp,"\nname:");
fputs(p->name,fp);
for (j=0;j<3;j++)
switch(j)
{
case 0:fprintf(fp,"\nMathematics:%d",p->score[0]);break;
case 1:fprintf(fp,"\nC Program:%d",p->score[1]);break;
case 2:fprintf(fp,"\nEnglish:%d",p->score[2]);break;
}
fprintf(fp,"\nAverage:%f\n\n",aver(p->score)); //%d改为%f
p++;
}
fclose(fp);
}
float aver(int *a)
{
int i=0;
float sum=0; //初始化为0
for (;i<3;i++)
{
sum+=(int)(*a);
a++;
}
return sum/3;
}
放心!绝对没问题了!
⑥ c语言编程:输入5个学生3门课的成绩,a同学三门成绩80,90,75;b同学三门成绩60,78,8
思路在这,你再改改
#include<cstdio>
usingnamespacestd;
intmain(){
floatgrade[][2]={{90,78},{88,80},{79,76}};
floatavg_s[3]={0,0,0};
floatavg_k[2]={0,0};
for(inti=0;i<3;++i){
for(intj=0;j<2;++j){
avg_s[i]+=*(*(grade+i)+j);
avg_k[j]+=*(*(grade+i)+j);
}
}
for(inti=0;i<3;++i){
printf("student%davg:%.2f ",i,avg_s[i]/2);
}
for(inti=0;i<2;++i){
printf("ke%davg:%.2f ",i,avg_k[i]/3);
}
}
⑦ C语言程序输入5学生3门课成绩并输出平均分用结构体指针做
我这儿有一个写好的,改改就可以用.不过个人建议不要这样,我的东西你看看思路就行,主要要自己实现,稍后我给你文件.
切记:尽力自己实现
#ifndef _STULIST_H
#define _STULIST_H
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<string.h>
#include<assert.h>//断言
#include<conio.h>//getch()
#define ADDSTU 1
#define DISPLAYSTU 2
#define UPDATE 3
#define DELSTU 4
#define SORTSCORE 5
#define SORTNUM 6
#define SELECTNAME 7
#define SELECTNUM 8
typedef struct student
{
long num;
char name[32];
long classnum;
float score_c;
float score_english;
float score_math;
float score_avg;
struct student * next;
}nodelist,*pnodelist;
#define LEN sizeof(nodelist)
#define FORMAT "%-7d%-12d%-9s%-8.2f%-11.2f%-8.2f%-7.2f% "
#define DATA p->num,p->classnum,p->name,p->score_c,p->score_english,p->score_math,p->score_avg
void menu(void);
int init_list(pnodelist *p);
void add_node(nodelist* phead,long num,char *s,long classnum,float c,float eng,float math);
void display_list(pnodelist phead);
void add_stu(pnodelist phead);
void destroy_list(pnodelist phead );
void del_node(pnodelist phead, long num );
pnodelist update_stu( pnodelist phead, long num);
void savefile(pnodelist phead);
void loadfile(pnodelist phead);
pnodelist foundmax(pnodelist phead);
pnodelist sortstu_avg(pnodelist phead);
pnodelist foundmin(pnodelist phead );
pnodelist sortstu_num(pnodelist phead);
void select_name(pnodelist phead,pnodelist val);
void select_num(pnodelist phead,pnodelist val);
#endif
//学生管理系统菜单
void menu()/*自定义函数实现菜单功能*/
{
system("cls");
printf(" ");
printf(" |------------学生管理信息系统------------| ");
printf(" | 0. 退出学生管理系统 | ");
printf(" | 1. 增加学生信息 | ");
printf(" | 2. 显示学生信息 | ");
printf(" | 3. 修改学生信息 | ");
printf(" | 4. 删除学生信息 | ");
printf(" | 5. 按成绩进行排序 | ");
printf(" | 6. 按学号进行排序 | ");
printf(" | 7. 按姓名进行查询 | ");
printf(" | 8. 按学号进行查询 | ");
printf(" |----------------------------------------| ");
printf("请选择您的操作:");
}
//初始化头指针
int init_list(pnodelist *p)
{
if (p == NULL)
{
return 0;
}
*p = (pnodelist)malloc(LEN);
if( p == NULL )
{
printf("failed! ");
return 0;
}
(*p)->next = NULL;
return 1;
}
//添加学生信息
void add_stu(pnodelist phead)//输入学生信息
{
long num, classnum;
char ch, name[32] = {0};
float c;
float english;
float math;
do{
printf("please input: num classnum name c english math ");
if( 6 == scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math) )
{
add_node(phead,num,name,classnum,c,english,math);
}
else
{
printf("error! Input parameters error ");
printf("input enter to menu ");
while(getchar() != ' ')continue;//清除错误值
getch();
menu();
return;
}
while(getchar() != ' ')continue;
printf("continue? y/n ");
ch = getchar();}while(ch=='Y '|| ch=='y');
printf("input enter to menu! ");
}
//添加学生信息结点到链表中
void add_node( pnodelist phead, long num, char* s, long classnum, float c, float english, float math )//将学生信息写入文件
{
pnodelist p = phead;
pnodelist q = NULL;
assert(phead != NULL);
q = (pnodelist)malloc(LEN);
assert(q != NULL);
q->num = num;
q->classnum = classnum;
q->score_c = c;
q->score_english = english;
q->score_math = math;
q->score_avg = (float)( ( q->score_c + q->score_english + q->score_math ) / 3.0 );
strcpy(q->name,s);
q->next = NULL;
while(p->next != NULL)
{
p = p->next;
}
p->next = q;
}
//显示学生信息
void display_list(pnodelist phead)
{
pnodelist p = NULL;
assert(phead != NULL);
p = phead->next;
if (p == NULL)
{
printf("no record! ");
printf("input enter to menu! ");
}
else
{
printf("num classnum name c english math avg ");
while(p != NULL)
{
printf(FORMAT,DATA);
p = p->next;
}
printf("input enter to menu! ");
}
return;
}
//按学号修改学生信息
pnodelist update_stu( pnodelist phead, long number)
{
long num, classnum;
char ch, name[32] = {0};
float c;
float english;
float math;
pnodelist p = NULL;
assert(phead != NULL);
p = phead->next;
if (p == NULL)
{
printf("no record! ");
}
else
{
while( (p->next != NULL) && (p->num != number) )
{
p = p->next;
}
if(p->num != number)
{
printf("no such num record! ");
return 0;
}
printf("please input: num classnum name c english math ");
scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math);
p->num = num;
p->classnum = classnum;
strcpy(p->name,name);
p->score_c = c;
p->score_english = english;
p->score_math = math;
p->score_avg = (float)( ( p->score_c + p->score_english + p->score_math ) / 3.0 );
}
return phead;
}
//清除所有信息
void destroy_list(pnodelist phead )
{
pnodelist p;
while(phead->next!=NULL)
{
p = phead->next;
phead->next = phead->next->next;
free(p);
}
free(phead);
return ;
}
//删除学号为num的学生信息
void del_node(pnodelist phead, long num )
{
pnodelist p,q;
assert(phead != NULL);
p=phead;
q=p->next;
//assert( q != NULL );
if ( q == NULL )
{
printf("no record! ");
return ;
}
while(q!=NULL && q->num!=num )
{
p=q;
q=q->next;
}
if(q==NULL)
{
printf("no such record! ");
}
else
{
p->next=q->next;
free(q);
printf("delete successfully ");
}
}
//保存链表信息到文件中
void savefile(pnodelist phead)
{
FILE *fp = NULL;
pnodelist p = NULL;
assert( phead != NULL);
p = phead->next;
fp = fopen("file.txt","wb");
assert(fp != NULL);
while(p != NULL)
{
fwrite(p,LEN,1,fp);
p = p->next;
}
fclose(fp);
}
//装载文件信息到链表中
void loadfile(pnodelist phead)
{
FILE* file;
nodelist p;
assert(phead != NULL);
//p = phead;
file = fopen("file.txt","rb");
//assert(file != NULL);
if (file == NULL)
{
return ;
}
while(fread(&p,LEN,1,file) == 1)
{
phead->next = (pnodelist)malloc(LEN);
assert(phead->next != NULL);
*(phead->next) = p;
phead = phead->next;
}
fclose(file);
}
//寻找链表中平均成绩最大值
pnodelist foundmax(pnodelist phead )
{
pnodelist max = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert(phead != NULL);
if(phead->next == NULL)
{
return NULL;
}
max = phead;
p = phead;
while(p->next != NULL)
{
if( p->next->score_avg > max->next->score_avg )
{
max = p;
}
p = p->next;
}
s = max->next;
max->next = max->next->next;
return s;
}
//对平均值进行排序
pnodelist sortstu_avg(pnodelist phead)
{
pnodelist phead1 = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert( init_list(&phead1) != 0 );
p = phead1;
assert(phead != NULL);
while( ( s = foundmax(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN);
*(p->next)= *s;
p = p->next;
p->next = NULL;
}
savefile(phead1);
printf("sort ok! Successfully saved! input enter to menu! ");
return phead1;
}
//寻找链表中学号最小值
pnodelist foundmin(pnodelist phead )
{
pnodelist min = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert(phead != NULL);
if(phead->next == NULL)
{
return NULL;
}
min = phead;
p = phead;
while(p->next != NULL)
{
if( p->next->num < min->next->num )
{
min = p;
}
p = p->next;
}
s = min->next;
min->next = min->next->next;
return s;
}
//对学号进行排序
pnodelist sortstu_num(pnodelist phead)
{
pnodelist phead1 = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert( init_list(&phead1) != 0 );
p = phead1;
assert(phead != NULL);
while( ( s = foundmin(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN);
*(p->next)= *s;
p = p->next;
p->next = NULL;
}
savefile(phead1);
printf("sort ok! Successfully saved! input enter to menu! ");
return phead1;
}
//按姓名进行查询
void select_name(pnodelist phead, pnodelist val )
{
pnodelist p = NULL;
if(phead->next == NULL)
{
printf("no record! ");
return;
}
p = phead->next;
while(p != NULL)
{
if( 0 == strcmp(p->name,val->name) )
{
printf("num classnum name c english math avg ");
printf(FORMAT, DATA);
return;
}
p = p->next;
if(p == NULL)
{
printf("no such record! ");
return;
}
}
}
//按学号进行查询
void select_num(pnodelist phead, pnodelist val )
{
pnodelist p = NULL;
if(phead->next == NULL)
{
printf("no record! ");
return;
}
p = phead->next;
while(p != NULL)
{
if( p->num == val->num )
{
printf("num classnum name c english math avg ");
printf(FORMAT, DATA);
return;
}
p = p->next;
if(p == NULL)
{
printf("no such record! ");
return;
}
}
}
⑧ C语言程序设计:有5个同学,考了3门功课,请查询获得每门功课最高分和最低分的同学及其成绩
摘要 #include