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);
}
}
(1)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語言學生成績管理系統按照學號排序怎麼排
排序有很多種實現方法,效率較低(但比較容易理解)的有選擇排序、插入排序、冒泡排序、雞尾酒排序等,效率較高的有希爾排序、堆排序、快速排序、歸並排序等。作為一個應用系統,可以不必自己寫排序的實現演算法,直接調用C標準的快速排序函數qsort,但前提是給出一個比較規則函數,說明數組中兩個元素如何判斷大小(是按照數值比較還是字元串比較等等),然後在qsort的第四個參數中使用這個規則函數。
❸ 用C語言如何對學生成績排序
程序冒泡法比較不錯
只是不知道你想怎麼排序
❹ c語言,輸入學生成績和名字,排序時怎麼才能讓名字跟著成績走
一開始就建兩個數組,一個放成績,一個放名字,如:
char
name[100][20];
float
score[100];
以後輸入、輸出專、排序等等操作,屬都把name和score看做不可分離的一組(類似於同一個i的結構體變數),讓name[i]和score[i]成為一對!排序時,當score[k]移動到m位置時,對應的name[k]也要同時移動的m位置。
這樣,名字就跟著成績走了。
❺ c語言 學生成績排名
#include<stdio.h>
voidsetList(int*a,intlen);
voidprintfList(int*a,intlen);
voidpxList(int*a,intlen);
voidinsertList(int*a,intlen);
voidfanList(int*a,intlen);
intmain()
{
inta[11];//1.定義一個數組a[11],用以存放學生的成績。
setList(a,10);//2.從鍵盤輸入10個學生成績。
pxList(a,10);//3.採用選擇法,將學生成績按照從高到低進行排序。
printfList(a,10);
insertList(a,10);//4.再輸入一個學生的成績,將此成績按照排序規律插入原學生成績數組。
printfList(a,11);
fanList(a,11);//5.將排好序的成績單進行反序存放,即原來是從高到低,現在改為從低到高排列
printfList(a,11);
return0;
}
voidsetList(int*a,intlen)//輸入
{
inti;
printf("請輸入%d個學生成績
",len);
for(i=0;i<len;i++)
scanf("%d",&a[i]);
}
voidprintfList(int*a,intlen)//列印數組
{
inti;
printf("
---列印數組---
");
for(i=0;i<len;i++)
printf("%d",a[i]);
}
voidpxList(int*a,intlen)//選擇排序
{
inti,j;
printf("
---從大到小排序---
");
for(i=0;i<len-1;i++)
for(j=i+1;j<len;j++)
if(a[i]<a[j])
{
a[j]^=a[i];
a[i]^=a[j];
a[j]^=a[i];
}
}
voidinsertList(int*a,intlen)//插入數組
{
printf("
---插入數組---
");
printf("輸入要插入的數:");
scanf("%d",&a[len]);
pxList(a,11);
}
voidfanList(int*a,intlen)//數組反向存儲
{
int*p0,*p1;
p0=a;
p1=&a[len-1];
while(p0<p1)
{
*p0^=*p1;
*p1^=*p0;
*p0^=*p1;
p0++;
p1--;
}
}
❻ 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;
}