當前位置:首頁 » 考試成績 » 一個學生的三門成績

一個學生的三門成績

發布時間: 2021-01-16 01:03:56

A. 有五個學生,每個學生有三門課程的成績,從鍵盤輸入學生數據(包括學號,姓名,3門課程成績),計算出平均成績

經測試,程序正確運行,並把輸入結果保存在stud文件中。
源代碼如下:

#include <stdio.h>

#define ID 11

typedef struct _stu
{
char id[ID];
int sco1;
int sco2;
int sco3;
}stu;

int main()
{
int i;
stu s[5];
FILE *fp;
float ave;
printf("請輸入五個學生的學號和三門成績:\n");
for(i=0;i<5;i++)
{
scanf("%s%d%d%d",s[i].id,&s[i].sco1,&s[i].sco2,&s[i].sco3);
}

if((fp=fopen("stud","w"))==NULL)
{
printf("文件打開失敗\n");
return ;
}

for(i=0;i<5;i++)
{
ave=(s[i].sco1+s[i].sco2+s[i].sco3)/3.0;
fprintf(fp,"%s %d %d %d %.2f\n",s[i].id,s[i].sco1,s[i].sco2,s[i].sco3,ave);
}

fclose(fp);
return 0;
}

B. 定義一個結構體類型的結構體數組stud,輸入學生三門課成績,然後按總分成績排序後輸出學生成績

#include"stdio.h"
#include"string.h"
struct student
{ int num;
char name[20];
float yingyu;
float shuxue;
float cc;
float sum;
};
struct student stud[100];
int main()
{ int i,n,k,j,z=1;
float t;
char m[20];
printf("輸入有N個學生數");
scanf("%d",&n);
printf("學號 姓名 英語 數學 c++\n");
for(i=0;i<n;i++)
{
scanf("%d%s%f%f%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc);
stud[i].sum=stud[i].yingyu+stud[i].shuxue+stud[i].cc;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(stud[i].sum>stud[i+1].sum)
{ t=stud[i].sum;
stud[i].sum=stud[i+1].sum;
stud[i+1].sum=t;
strcpy(m,stud[i].name);
strcpy(stud[i].name,stud[i+1].name);
strcpy(stud[i+1].name,m);
k=stud[i].num;
stud[i].num=stud[i+1].num;
stud[i+1].num=k;
}
printf("學號 姓名 總分 名次 \n");
for(i=0;i<n;i++)
{
printf(" %d %s %.2f %d\n",stud[i].num,stud[i].name,stud[i].sum,z);
z++;}

return 0;

}

C. 有20個學生記錄(學號、姓名、3門課成績)的文件student.dat,學生以學號從小到大排列。

#include<iostream>
#include<string>
using namespace std;
int n=20;

class student
{
long int num;//學號
char name[20];//姓名
int grade;
public:
student(){}
student(long nu,char na[],int gr){num=nu;strcpy(name,na);grade=gr;}
void put_student(long nu,char na[],int Chinese,int math,int English){num=nu;strcpy(name,na);grade=Chinese+math+English;}
int get_grade(){return grade; }
void get_student(){cout<<num<<" "<<name<<" "<<grade<<" "<<endl;}
long int get_num(){return num;}
char* get_name(){return name;}
student::operator=(class student a){num=a.num;strcpy(name,a.name);grade=a.grade;}
};
void taxis(class student a[]) //按總成績由大到小排序
{
class student b;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i].get_grade()<a[j].get_grade())
{
b=a[i];
a[i]=a[j];
a[j]=b;
}
}

void insert(class student a[]) //將一個新學生總成績插入已排好序數組中
{
long int num;//學號
char name[20];//姓名
int grade;
cout<<"請輸入學號,姓名,總分,";
cin>>num>>name>>grade;
class student c(num,name,grade);
for(int i=0;i<n;i++)
{
if(a[i].get_grade()<c.get_grade())
break;
}
n++;
for(int j=n;j>i;j--)
a[j]=a[j-1];
a[j]=c;
}

void del(class student a[]) //將不及格學生記錄刪除
{
int j=0;
for(int i=0;i<n;i++)
if(a[i].get_grade()>=(60*3))
a[j++]=a[i];
n=j;
}

void save(class student a[]) //排序的結果用文件形式存放磁碟
{
FILE *fp;
if((fp=fopen("save_student.dat","w"))==NULL)
{cout<<"ERROR"<<endl;exit(0);}
for(int i=0;i<n;i++)
{
fprintf(fp,"%-10d%-10s%-5d\n",a[i].get_num(),a[i].get_name(),a[i].get_grade());
}
if(fp!=NULL)
fclose(fp);
}

void main(void)
{
long int num;//學號
char name[20];//姓名
int Chinese,math,English;//3門課成績
FILE *fp;
class student a[30];
if((fp=fopen("student.dat","r"))==NULL)
{cout<<"ERROR"<<endl;exit(0);}
for(int i=0;i<n;i++)
{
fscanf(fp,"%d%s%d%d%d",&num,&name,&Chinese,&math,&English);
a[i].put_student(num,name,Chinese,math,English);
}
taxis(a);
for(i=0;i<n;i++)
a[i].get_student();
insert(a);
for(i=0;i<n;i++)
a[i].get_student();
cout<<"del(a)"<<endl;
del(a);
for(i=0;i<n;i++)
a[i].get_student();
save(a);
if(fp!=NULL)
fclose(fp);;
}

B.按總成績由大到小排序(同組採用不同排序方法)
同組 是什麼意思..
==
student.dat格式
學號 姓名 3門課成績
1 Adaam 8 90 50

D. 學生有三門課程:A、B、C,3名學生的成績,要求用結構體輸出三個學生平均值等,下面代碼哪裡錯了

代碼的關鍵錯誤是下面兩個for語句後面都多加了一個分號,錯誤如下注釋:

for(i=0;i<=n-1;i++);//多加了回一個分號
s[i].aver=(s[i].a+s[i].b+s[i].c)%3;//平均值計答算應該是除以3即s[i].aver=(s[i].a+s[i].b+s[i].c)/3.0;除以3.0是為了將aver的結果轉換為float
for(i=0;i<=n-1;i++);//多加了一個分號
cout<<"姓名:"<<s[i].name<<","<<"A課程成績:"<<s[i].a<<","<<"B課程成績:"<<s[i].b<<","<<"C課程成績:"<<s[i].c<<","<<"平均分:"<<s[i].aver<<"."<<endl;

E. 編程統計全班學生成績。要求每次鍵盤輸入一個學生的3門課程分數,計算並輸出每個學生的總分和平均分

我再TC上試過的,絕對正確!可以自己把班裡同學的人數改一改~~
#include<stdio.h>
#define NUM 5 //(班裡的人數)

typedef struct{
int score1;
int score2;
char name[10];
int final;
int ave;
}Student;
void input(Student stu[]);
void output(Student stu[]);
int main(){
Student stu[NUM];
int i;
input(stu);
output(stu);
}

void input(Student stu[]){
int i;
int better=0,good=0;
printf("Please enter students'name and scores:\n");
for(i=0;i<NUM;i++){
scanf("%s%d%d",&stu[i].name,&stu[i].score1,&stu[i].score2);
stu[i].final=stu[i].score1+stu[i].score2;
stu[i].ave=stu[i].final/2;
if(stu[i].ave>=85) better ++;
if(stu[i].ave>=60&&stu[i].ave<85) good++;
}
printf("the number of better and good is%5d %5d\n",better,good);
}
void output(Student stu[]){
int i;
printf("The final and average of every student is :\n");
printf("NAME FINAL AVE\n");
for(i=0;i<NUM;i++)
printf("%s%5d%5d\n",stu[i].name,stu[i].final,stu[i].ave);
}
另外,站長團上有產品團購,便宜有保證

F. 有3個學生,每個學生的數據包括學號、姓名和3門課程的成績,要求輸出各學生學號、姓名和平均分。

#include <stdio.h>
int main()
{
struct student // 聲明一個結構體類型struct student
{
int num;
char name[10];
float score[3];//3門課程成績
float avg; //平均分
};
struct student stu[3];//定義含3個元素結構體數組
int i,j;
for (j=0;j<3;j++){
scanf("%d%s",&stu[j].num,stu[j].name);
for (i=0;i<3;i++)
scanf("%f",&stu[j].score[i]);
}
//*********************************************************
float totle=0;//totle的初始化位置不對,應該在每一次進行下面的外層循環時就進行初始化,否則totle會累積的。順便說一下,你的單詞拼錯了。
for(j=0;j<3;j++){
for(i=0;i<3;i++)
totle=totle+stu[j].score[i];
}
stu[j].avg=totle/3;//這里,這條語句 應該放在第一個循環的內部
for(j=0;j<3;j++)
printf("%d %-5s %2.1f\n",stu[j].num,stu[j].name,stu[j].avg);
//============================================================
return 0;
}

這是我改好的:

#include <stdio.h>
int main()
{
struct student // 聲明一個結構體類型struct student
{
int num;
char name[10];
float score[3];//3門課程成績
float avg; //平均分
};
struct student stu[3];//定義含3個元素結構體數組
int i,j;
for (j=0; j<3; j++)
{
scanf("%d%s",&stu[j].num,stu[j].name);
for (i=0; i<3; i++)
scanf("%f",&stu[j].score[i]);
}
//*********************************************************
float totle;
for(j=0; j<3; j++)
{
totle=0;
for(i=0; i<3; i++)
totle=totle+stu[j].score[i];
stu[j].avg=totle/3;
}

for(j=0; j<3; j++)
printf("%d %-5s %2.1f\n",stu[j].num,stu[j].name,stu[j].avg);
//============================================================
return 0;
}

/*
輸入:
1 liming 70 70 70
2 wangming 80 80 80
3 zhengming 90 90 90
*/

G. 3.C語言 用結構體類型編一程序,輸入一個學生的學號,姓名及三門課的成績,計算並輸出平均成績

#include<stdio.h>
structstud{
intnum;
charname[30];
floatscore[3];
};
intmain()
{
structstudstu;
inti;
floatavg;
printf("inputnumber:");scanf("%d",&stu.num);
printf("inputname:");scanf("%s",stu.name);
printf("input3score: ");
avg=0;
for(i=0;i<3;i++)
{
scanf("%f",&stu.score[i]);
avg+=stu.score[i];
}
avg/=3;
printf("averagescore:%f ",avg);
return0;
}

H. c++ 定義一個學生類,有學號、姓名、三門課程的成績,求平均分 怎麼破

現在這樣就可以啊 雖然不是太好

只不過統計的時候 需要分別調不同的函數 你調用一樣的了

#include<iostream>
usingnamespacestd;
classStudent
{
intnum;
charname;
inta,b,c;
staticfloatsum1,sum2,sum3;
staticintcount;
public:

voidget()
{
>>num>>name>>a>>b>>c;
}
voidtotal1()
{
sum1+=a;
count++;
}
staticfloataverage1()
{
return(sum1/count);
}
voidtotal2()
{
sum2+=b;

}
staticfloataverage2()
{
return(sum2/count);
}
voidtotal3()
{
sum3+=c;

}
staticfloataverage3()
{
return(sum3/count);
}
};
floatStudent::sum1=0;
floatStudent::sum2=0;
floatStudent::sum3=0;
intStudent::count=0;
intmain()
{intn;
cout<<"請輸入學生人數:";
cin>>n;
Studentt[60];
for(inti=0;i<n;i++)
t[i].get();
for(intj=0;j<n;j++)
{
t[j].total1();
t[j].total2();//分別三個函數
t[j].total3();
}

cout<<Student::average1()<<""<<Student::average2()<<""<<Student::average3()<<endl;
}

I. 有5個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號、姓名、三門課成績)

括弧的位置不對 ,如下:版
for(i = 0; i < 4; i++)
for(j = i + 1; j < 4; j++) {
if(stu[i].avr < stu[j].avr)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
printf("\n排序後權:");

J. 有n個學生,每個學生的數據包括學號,姓名,三門課成績,平均成績。編寫一個程序,完成以下功能:

#include<stdio.h>

#include<stdlib.h>

typedefstruct

{

charnum[10];

charname[10];

floatscore[3];

floatavg;

}stu;

voidinput(intn,stu*s)

{

for(inti=0;i<n;i++)

{

scanf("%s",&s[i].num);

scanf("%s",&s[i].name);

scanf("%f%f%f",&s[i].score[0],&s[i].score[1],&s[i].score[2]);

s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;

}

}

voidoutput1(intn,stu*s)

{

printf("學號 姓名 成績1 成績2 成績3 平均成績 ");

for(intindex=0;index<n;index++)

printf("%s %s %f %f %f %f ",s[index].num,s[index].name,s[index].score[0],

s[index].score[1],s[index].score[2],s[index].avg);

}

voidoutput2(intn,stu*s)

{

intindex=0;

floatmax=s[0].avg;

for(inti=1;i<n;i++)

if(max<s[i].avg)

{

max=s[i].avg;

index=i;

}

printf("%s %s %f %f %f %f ",s[index].num,s[index].name,s[index].score[0],

s[index].score[1],s[index].score[2],s[index].avg);

}

voidoutput3(intn,stu*s)

{

stutmp;

for(inti=0;i<n-1;i++)

for(intj=0;j<n-1-i;j++)

{

if(s[j].avg<s[j+1].avg)

{

tmp=s[j];

s[j]=s[j+1];

s[j+1]=tmp;

}

}

output1(n,s);

}

voidmain()

{

intn;

printf("輸入學生數目: ");

scanf("%d",&n);

stu*s=(stu*)malloc(n*sizeof(stu));

input(n,s);

printf("所有學生數據: ");

output1(n,s);

printf("平均分最高學生數據: ");

output2(n,s);

printf("排序學生數據: ");

output3(n,s);

}

運行實例如下:

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919