Ⅰ 學生成績排序問題,用c語言。。。
建議你首先定義數據結構,兩個結構體數組。
一個結構體存放學生信息,另外一個是存放選課信息。
學生成績和選課信息數據可以通過讀文件讀到結構體數據,然後編寫循環實現相應的功能即可。
另外建議你自己實踐一下,學習編程最大的悲哀就是抄別人的程序。當然可以借鑒,但是還是要自己編寫。
Ⅱ 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);
}
}
(2)成績排序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是文件包含命令,後面跟著引號""或者尖括弧<>,意思是將引號或尖括弧內指定的文件包含到本程序中,成為本程序的一部分,而包含的文件通常是由系統提供的。
Ⅲ C語言 怎麼對成績排序
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
student *x=(student*)a;
student *y=(student*)b;
if(x->score[0] > y->score[0])//升序排序(從小到大) 如果>改成<,就是降序排序(從大到小)
return 1;
return 0;
}
//上面函數放在struct student下面,需要該結構
//排序方式可以靈活調整,上面我只是用第一門分數進行比較
//你也可以用其它分數進行比較,多寫2個函數就行,如int cmp2(const void*a,const void*b)等等。
//排序函數
qsort(stu,STU_NUM,sizeof(stu[0]),cmp);
//stu是數組名,STU_NUM是數組元素個數,cmp就排序方式(可以替換為cmp2等等)
Ⅳ C語言編程成績排序輸出
struct stu
{char a[10];
int i;
int j;
int k;
int m;
int n;
int x;
};
int sum(struct stu p)
{int sum=p.i+p.j+p.k+p.m+p.n;
return sum;}
main()
{struct stu p[6],ac;
int l,a[6],b;
for(l=0;l<6;l++)
{scanf("%s%d%d%d%d%d",p[l].a,&p[l].i,&p[l].j,&p[l].k,&p[l].m,&p[l].n);
p[l].x=sum(p[l]);}
printf("姓名 英語 計算機原理 統計學原理 政治 C語言 總分 平均分\n");
for(l=0;l<6;l++)
{printf("%s %5d%5d%5d%5d%5d%5d%5d\n",p[l].a,p[l].i,p[l].j,p[l].k,p[l].m,p[l].n,p[l].x,p[l].x/5);}
for(l=0;l<6;l++)
for(b=0;b<6;b++)
if(p[l].x>p[b].x)
{ac=p[l];p[l]=p[b];p[b]=ac;}
printf("姓名 英語 計算機原理 統計學原理 政治 C語言 總分 平均分\n");
for(l=0;l<6;l++)
{printf("%s %5d%5d%5d%5d%5d%5d%5d\n",p[l].a,p[l].i,p[l].j,p[l].k,p[l].m,p[l].n,p[l].x,p[l].x/5);}
getch();}
Ⅳ 編寫c語言程序用三個函數求10個同學的平均分及成績排序
#include<stdio.h>
#definen10
intmain()
{
intpj(doubleb[]);
voidpx(doubleb[]);
intsc(doubleb[]);
doublea[10];
inti;
for(i=0;i<10;i++)
scanf("%lf",&a[i]);
sc(a);
return0;
}
intpj(doubleb[])
{
doublesum,pj;
inti;
for(i=0;i<n;i++)
sum+=b[i];
pj=sum/n;
returnpj;
}
voidpx(doubleb[])
{
inti,j,tem;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(b[i]<b[j])
{
tem=b[j];
b[j]=b[i];
b[i]=tem;
}
}
intsc(doubleb[])
{
doublep;
inti;
p=pj(b);
printf("平均數是%lf ",p);
px(b);
printf("排序:");
for(i=0;i<10;i++)
printf("%lf ",b[i]);
}
Ⅵ 用c語言怎麼樣按總成績降序排序後顯示學生的數據
冒泡和選擇排序兩種比較簡單
舉個例子 冒泡
數據在數組score[N]中
for (i=0;i<N;i++}
{
for (j=0;j<N-1;j++)
{
if (score[j]<score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
這樣數據就從大到小排好了 然後使用循環輸出學生數據就可以了
Ⅶ 這個c語言函數能不能改成排序後輸出前十名成績
信息輸出在最後那個函數里吧,要改也是改那個,OutputInformation();這函數里邊寫的應該是信息輸出吧,你把這些排序的發上來也沒用啊,
Ⅷ 用c語言冒泡排序方法,對學生成績從高到低進行排序。 拜託大神們幫忙
#include <stdio.h>
void bubble_sort(int a[], int n)
{int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
if(a[i] > a[i + 1])
{temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;}
}
int main()
{int number[10] = {95, 45, 15, 78, 84, 51, 24, 12, 38, 97};
int i,SIZE=10;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
printf("%d", number[i]);
printf("\n");
return 0;
}
Ⅸ C語言 學生成績排序
你說的序號是指學號嗎?要和姓名一一對應?
Ⅹ C語言編程程序,成績排序並求最高低分
最簡單的冒泡法:
float StudentMark[20];//20學生成績
//賦值過程省略
float Temp;//中間變數
for(int i=0;i<20-1;i++) //冒泡法
for(int j=1;j<20-i;j++)
{
if(StudentMark[j]<StudentMark[j-1})
Temp=StudentMark[j-1]; //交換數據
StudentMark[j-1]=StudentMark[j];
StudentMark[j]=Temp;
}