c語言五個學生成績排序
『壹』 c語言程序設計 學生成績排序系統
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define MAX 200
void dis_menu();
void load_score();
void sort_english();
void sort_math();
void sort_c();
void sort_num();
void display();
typedef struct
{
char name[20];
int num;
float math;
float english;
float c;
}Stu;
Stu stu[MAX];
int num=0;
bool tag=true;
bool Tag=false;
void main()
{
dis_menu();
}
void dis_menu()
{
int i=0;
char ch;
do{
printf("******** *歡迎使用學生成績排序系統* ********** ******\n");
printf("****** ****輸入要進行的操作****** ******* ***** *\n");
printf("**** ******1:按數學成績排序********** **** ***** **\n");
printf("** ********2: 按英語成績排序***** * ***** ***\n");
printf("* *********3:按C語言成績排序***** * ************ **\n");
printf("*** *******4:按學生學號排序****** ***** ***** *\n");
printf("***** *****5:載入學生成績**** ********* *****\n");
printf("******* ***0:退出系統********* ************** ***\n");
fflush(stdin);
scanf("%d",&i);
switch(i)
{
case 1:
if(!Tag) { printf("先載入學生成績!\n"); break; }
sort_math();
printf("是否列印排序後學生成績:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 2:
if(!Tag) { printf("先載入學生成績!\n"); break; }
sort_english();
printf("是否列印排序後學生成績:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 3:
if(!Tag) { printf("先載入學生成績!\n"); break; }
sort_c();
printf("是否列印排序後學生成績:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 4:
if(!Tag) { printf("先載入學生成績!\n"); break; }
sort_num();
printf("是否列印排序後學生成績:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
tag=false;
display();
break;
default:break;
}
break;
case 5:
load_score();
Tag=true;
printf("是否列印載入後的學生成績:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
tag=false;
display();
break;
default:break;
}
break;
default:
printf("感謝使用本系統!\n");
system("exit");
exit(0);
}
printf("是否繼續?(Y or N)\n");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='Y'||ch=='y');
}
void load_score()
{
int i;
printf("輸入學生人數\n");
scanf("%d",&num);
printf("學生學號 姓名 數學成績 英語成績 C語言成績 \n");
for(i=0;i<MAX&&i<num;i++)
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,&stu[i].c);
if(i>MAX)
printf("輸入人數有誤!");
}
void display()
{
int i=0;
if(tag)
{
printf("名次\t學號\t姓名\t數學\t英語\tC語言\n");
for(i=0;i<num;i++)
printf("%d\t%d\t%s\t%.2f\t%.2f\t%.2f\n",i+1,stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c);
}
else
{
printf("學號\t姓名\t數學\t英語\tC語言\n");
for(;i<num;i++)
printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c);
}
}
void sort_math()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].math<=stu[j].math)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_english()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].english<=stu[j].english)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_c()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].c<=stu[j].c)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_num()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].num>=stu[j].num)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
剛寫的,希望對你有用,考試順利!
『貳』 c語言題目,已知5個學生4門成績,求出平均成績並且排序
#include<iostream>
using namespace std;
void main()
{
int i,j,sum,t;
int a[5][5]={{78,82,93,74},{91,82,72,76},{67,89,90,65},{77,88,99,89},{78,89,99,76}}; //5*5夠用了
printf("\n");
for (i=0;i<5;i++)
{ sum=0;
for(j=0;j<4;j++) //加前4個成績
sum+=a[i][j];
a[i][4]=sum/4;}//平均值除4!存在下標為4的元素內;
for(int k=0;k<5;k++)// 加了層循環回 參看答起泡法
for(i=0;i<5-k;i++)
if(a[i][4]<a[i+1][4])//條件移到循環外了
for(j=0;j<5;j++)
{t=a[i][j];a[i][j]=a[i+1][j];a[i+1][j]=t;}
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%8d",a[i][j]);
printf("\n");}
}
『叄』 【C語言】輸入學生姓名和成績排序
這種一般都是要用到結構體的,不用結構體很難講名字和成績這種數據一一對應起來。內
結構體容都是設置一種結構,這個結構中可以放置各個類型的數據,比如說一個人是一個結構體,那麼名字,身高,體重,性別,等等都可以作為結構體里的數據。然後用這個結構體來初始化一些人,比如說小明,你將小明的身高,體重,性別等等初始化賦值給這個結構體,就可以使用 . 這個運算符號來調用結構體里成員數據。比如說 小明.姓名 的值就是小明。
根據你的提問,具體代碼如下:
首先定義一個結構體的定義:
typedef struct Student
{
char name[20]; //名字
int grade; //成績
}
初始化各個實例:
struct Student Jack, Tom, Tim;
將各個成員賦值:
Jack.name[20] = Jack;
Jack.grade = 63;
以此類推。
排序的具體方法也不難,自己看看書吧。
使用結構體的好處就是將一組與一個事物相關的數值放在一起,統一的管理和調用。
『肆』 C語言~輸入5個學生的學號,成績,按成績排序(升序),查找90分以上的
代碼:
#include<stdio.h>
struct student
{
int num,score[3],age;
char name[20];
float aver;
}stu[1000];
main()
{
int i,j,n;
struct student temp;
/*注意:變數temp的類型與數組stu的元素類型為相同結構體的時候,才可交換兩個結構體數組元素,所以此處需要定義temp的類型*/
printf("請輸入學生人數: ");
scanf("%d",&n);
printf("請按順序輸入名字、學號、年齡、分數: ");
for(i=0;i<n;i++)
{
scanf("%s",&stu<i>.name);
scanf("%d",&stu<i>.num);
scanf("%d",&stu<i>.age);
for(j=0;j<3;j++)
scanf("%d",&stu<i>.score[j]);
}
for(i=0;i<n;i++)
{int sum=0;
for(j=0;j<3;j++)
sum+=stu<i>.score[j];
stu<i>.aver=sum/3.0;
}
for(i=0;i<n-1;i++)/*利用冒泡排序法按平均分高低排序*/
{for(j=0;j<n-i-1;j++)
{
if(stu[j].aver>stu[j+1].aver)
{temp=stu[j];/*此處交換的應當是數組元素,而不是平均分*/
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
printf("學生信息如下(姓名、學號、年齡、成績、平均分): ");
for(i=0;i<n;i++)
{
printf("%s%d%d",stu<i>.name,stu<i>.num,stu<i>.age);
for(j=0;j<3;j++)
printf("%d",stu<i>.score[j]);
printf("%.2f ",stu<i>.aver);
}
}
(4)c語言五個學生成績排序擴展閱讀:
頭文件#include<stdio.h>中
stdio.h是stand input&output的縮寫,意思是標准輸入輸出頭文件。凡是用到標准輸入輸出函數,就要調用該頭文件。
查看stdio.h目錄下包含哪些函數:主要有文件訪問、二進制輸入/輸出、格式化和非格式化輸入/輸出、文件定位、錯誤處理、文件操作等。
具體打開自己的VS安裝目錄,找到include文件夾,打開include夾下面的stdio.h文件即可查看
(C:Program Files(x86)Microsoft Visual Studio 14.-1.1.10include)
常用標准輸入輸出函數:
scanf()從屏幕格式輸入
printf()格式輸出到屏幕
getchar()從屏幕得到一個字元
putchar()字元輸出到屏幕
gets()從屏幕得到一個字元串
puts()字元串輸出到屏幕
fscanf()從磁碟格式輸入
fprintf()格式輸出到磁碟
fgetc()從磁碟得到一個字元
fputc()字元輸出到磁碟
fgets()從磁碟得到一個字元串
fputs()字元串輸出到磁碟
#號是預處理語句,表明在編譯之前預先進行處理。
.h是header file的縮寫,表面這是一個頭文件。
include是文件包含命令,後面跟著引號""或者尖括弧<>,意思是將引號或尖括弧內指定的文件包含到本程序中,成為本程序的一部分,而包含的文件通常是由系統提供的。
『伍』 將5名學生的成績從高到低排序c語言
#include<stdio.h>
int main()
{
int a[30],i,j,t,k;
printf("請以來次輸入源30個學生的成績:");
for(i=0;i<30;i++)scanf("%d",&a[i]);
for(i=0;i<29;i++)
{
k=i;
for(j=i;j<30;j++)
if(a[j]>a[k])k=j;
if(i!=k)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
printf("由高到低排序輸出成績:\n");
for(i=0;i<30;i++)
printf("%d\n",a[i]);
return 0;
}
『陸』 c語言 學生成績排序
結構體還沒學到,
我說個大概構思,希望能採納
讓第一個分別和第二個,第三個....比較,如果第一個小於後面的
,則互換
for(i
=
0;
i
<
學生個數;
i++)
{
for(j
=
1;
j
<
學生個數;j++)
{
if(成績[i]
<
成績[j])
score
=
成績[i];
成績[i]
=
成績[j];
成績[j]
=
score;
}
}
『柒』 5個學生4門成績求平均分並從大到小排序(C語言編程)
#include < stdio.h >
struct stu{
char name[10];
float score[5];
}stu1[5];
int main()
{
void sort(struct stu* ss);
int i,j,sum;
for(i = 0; i < 5; i++){
printf("%s\n","請輸入姓名:");
scanf("%s",stu1[i].name);
printf("%s\n","請分別輸入成績:");
for(j = 0; j < 4; j++){
scanf("%d",&stu1[i].score[j]);
sum+=stu1[i].score[j];
}
stu1[i].score[5] = sum/4;
}
sort(stu1);
printf("%s","平均成績從高到底是:");
for( i = 0; i < 5; i++){
printf("%s %d\t",stu1[i].name,stu1[i].score[5]);
}
return 0;
}
void sort(struct stu* ss)
{
int i ,j,q,temp;
for ( i = 0; i < 4; i++){
q = i;
for( j = i+1; j<5; j++){
if( stu1[q].score[5] < stu1[j].score[5])
q = j;
}
if( q != i){
temp = stu1[i].score[5];
stu1[i].score[5] = stu1[q].score[5];
stu1[q].score[5] = temp;
}
}
}
『捌』 C語言編程:任意輸入5個學生成績,對其進行排序,按照從小到大的順序輸出!
先定義一個int型數組,然後給數組賦值,在接下來用冒泡排序法就OK啦。
『玖』 C語言的學生成績排序問題
#include <stdio.h>
#include <stdlib.h>
int main() {
struct student {
int num;
float scores;
};
student *stu = new student;
float insert = 0, temp = 0;
int i = 0;
for (; insert != -1; i++) {
printf("請輸入學生成績(結束輸入-1):");
scanf("%f", &insert);
stu[i].num = i + 1;
stu[i].scores = insert;
}
for (int m = 0; m < i - 2; m++) {
for (int n = 0; n < i - 2; n++) {
temp = stu[n].scores;
if (temp < stu[n + 1].scores) {
stu[n].scores = stu[n + 1].scores;
stu[n + 1].scores = temp;
temp = stu[n].num;
stu[n].num = stu[n+1].num;
stu[n+1].num = (int)temp;
}
}
}
for (int j = 0 ; j < i - 1 ; j++){
printf("%s%d%s\t%s%d\t%s%.2f\n","第",j+1,"名:","號數:",stu[j].num,"成績:",stu[j].scores);
}
system("PAUSE");
return 0;
}
『拾』 C語言編程:輸入五個人的名字和成績,根據成績從小到大排序輸出名字和成績,和總成績
又是這個問題
#include<stdio.h>
#include<stdlib.h>
#defineN5
structstudent
{
charname[10];
floatscore;
};
intmain()
{
studentstu[N];
floatsum=0.0;
floatt_score[N];
inti;
intj;
floattemp;
printf("輸入學生名字成績,例如:小明90 ");
for(i=0;i<N;++i)
{
scanf("%s",stu[i].name);
scanf("%f",&stu[i].score);
t_score[i]=stu[i].score;
sum+=stu[i].score;
}
for(i=0;i<N-1;++i)
{
for(j=i+1;j<N;++j)
{
if(t_score[i]>t_score[j])
{
temp=t_score[i];
t_score[i]=t_score[j];
t_score[j]=temp;
}
}
}
printf("按成績從小到大排序: ");
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(t_score[i]==stu[j].score)
{
printf("%s%0.2f ",stu[j].name,stu[j].score);
}
}
}
printf("成績總和:%0.2f ",sum);
return0;
}