當前位置:首頁 » 編程語言 » c語言輸入5個學生的三門課成績
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言輸入5個學生的三門課成績

發布時間: 2022-07-11 03:25:33

① 用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