當前位置:首頁 » 編程語言 » c語言對總成績降序排列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言對總成績降序排列

發布時間: 2023-05-21 09:01:34

⑴ 誰會用c語言編以下程序:給出一個學生的成績,要求:將成績降序排列,並輸出。 a) 編寫輸入函數; b) 編寫

#include<stdio.h>埋瞎
int main() {
int i,j,n;
float point[100],key;

printf("請輸入學生人數: ");

scanf("%d",&n);

printf("請輸吵液逗升賣入學生的分數:\n");

for(i=0 ; i<n ; i++) {
scanf("%f",&point[i]);
}

for(i=0 ; i<n-1 ; i++) {
for(j=0 ; j<n-i-1 ; j++) {
if(point[j] < point[j+1]) {
key = point[j];
point[j] = point[j+1];
point[j+1] = key;
}
}
}

for(i=0 ; i<n ; i++) {
printf("%3.1f ",point[i]);
}

return 1;
}

⑵ 用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語言求5名學生四科成績總分平均分,總分降序輸出

同學你好!
這是我自己寫的,應該能睜陪瞎夠滿悉空足你的所有要求(已上級通過)。希望對你有所幫助!
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
int sno; /*這里分別是學號(便於最後列表時統計),四門課的分數,總分,平均分*/
int course1;
int course2;
int course3;
int course4;
int course;
int aver;
}student;

void main()
{
int i,j;
student st[4],temp;
for(i=0;i<4;i++) /*進行成績輸亂臘入*/
{
st[i].sno=i+1;
printf("Please input the %dth student's course1:",i+1);
scanf("%d",&st[i].course1);
printf("Please input the %dth student's course2:",i+1);
scanf("%d",&st[i].course2);
printf("Please input the %dth student's course3:",i+1);
scanf("%d",&st[i].course3);
printf("Please input the %dth student's course4:",i+1);
scanf("%d",&st[i].course4);
st[i].course=st[i].course1+st[i].course2+st[i].course3+st[i].course4;
st[i].aver=st[i].course/4;
}
for(i=0;i<4;i++) /*計算總分和平均分*/
{
printf("The %dth student's total-course is:%d\n",i+1,st[i].course);
printf("The %dth student's aver-course is:%d\n",i+1,st[i].aver);
}
for(i=0;i<3;i++) /*進行冒泡排序*/
for(j=i+1;j<4;j++)
if(st[i].aver<st[j].aver)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
printf("The list of the student's course:\n");
printf("==========\n"); /*列表公布成績*/
for(i=0;i<4;i++)
{
printf("%d.",i+1);
printf("%dth student:%d\n",st[i].sno,st[i].course);
}

}

祝同學你的C能進步!

⑷ 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語言輸入學生成績 根據學生的總得分以降序對學生進行排名來計算他們的排名

char name[100000]這個長度有點離譜改小點,char name[100];

#include "stdafx.h"

#include <iostream>

using namespace std;

typedef struct

{

char name[100];

int chinese, math, english, computer;

int total;

} STUDENT;

void printStuArray(STUDENT array[], int num);

void sortStuArray(STUDENT array[], int num);

int main()

{

STUDENT people[10];

int num_students;

cout << "Enter how many students>";

cin >> num_students;

for (int i = 0; i < num_students; i++)

{

cout << " Student " << i+1 << "'s name>";

cin >> people[i].name;

cout << " Chinese>";

cin >> people[i].chinese;

cout << " Math>";

cin >> people[i].math;

cout << " Englis>";

cin >> people[i].english;

cout << " Computer>";

cin >> people[i].computer;

people[i].total= people[i].chinese + people[i].math + people[i].english + people[i].computer;

}

sortStuArray(people, num_students);

printStuArray(people, num_students);

system("pause");

return 0;

}


void printStuArray(STUDENT array[], int num)

{

cout << "=======================================================" << endl;

cout << "Rank Chinese Math Eng Com Total Name" << endl;

for (int i = 0; i < num; i++)

{

printf("%3d %3d %3d %3d %3d %3d %s ", i + 1, array[i].chinese, array[i].math, array[i].english, array[i].computer, array[i].total, array[i].name);

}

cout << "=======================================================" << endl;

}


void sortStuArray(STUDENT array[], int num)

{

for (int i = 0; i < num; i++)

{

for(int j=i+1;j<num;j++)

{

if (array[i].total<array[j].total)

{

STUDENT temp = array[i];

array[i] = array[j];

array[j] = temp;

}

}

}

}

⑹ 編寫c語言程序 將成績按學科分類降序排列

#include<stdio.h>
structstudent
{
charszName[100];
intscore;//成績

//等號重載
studentoperator=(student&st)
{
sprintf(szName,st.szName);

score=st.score;
return*this;
}
};

intmain()
{
constintstuCount=10;
studentstuArray[stuCount];

for(inti=0;i<stuCount;i++)
{
printf("請輸入第%d個學生的姓名成績 ",(i+1));
scanf("%s%d",
stuArray[i].szName,
液枝升埋和&stuArray[i].score);
}

//排序
for(inti=0;i<stuCount;i++)
{
for(intj=0;j<stuCount-i-1;j++)
{
if(stuArray[j+1].score>stuArray[j].score)
{
studentstu=stuArray[j];
stuArray[j]=stuArray[j+1];
吵盯stuArray[j+1]=stu;
}
}
}

//列印
printf("名次 姓名 成績 ");

for(inti=0;i<stuCount;i++)
{
printf("%d %s %d ",(i+1),stuArray[i].szName,stuArray[i].score);
}

return0;
}

⑺ C語言程序,請你編寫一個程序計算每個學生的平均成績並按降序排序

你這個可以用鏈表來寫,同類型我已經寫過幾次鏈表的,需要你可以去我回答記錄里找。

這次,我不用鏈表,直接用2維數組,冒泡排序,那你參考吧。

原理:1、數組內存的連續性 2、利用指針冒泡纖啟排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
voidprStu(float*stu);//列印學生成績參數:數組首地址
voidjx(float*p);//降序排列
intmain()
{
floatstu[50][6],*p=&stu[0][0],num[4];//stu:50學生信息1列為學生編號2~5列為4科成績6列為平均分
inti=0,count=0;
//--這段我是用隨機數做50個學生的成績,我攜手懶得錄入200個成績!!,你要手輸,就把這段隨機數改成輸入函數---
srand(time(NULL));
while(i++<300)
{
count++;
if(count==1)//學生編號存儲
*p++=(float)i/6+1;
if(count>1&&count<6)//隨機2位數作為4科成績
*p++=(float)(rand()%100);
if(count==6)
{
count=0;
num[0]=*(p-1);
num[1]=*(p-2);
num[2]=*(p-3);
num[3]=*(p-4);
*p++=(num[0]+num[1]+num[2]+num[3])/4;//4科平均分
}
}

//------------------------------------------------------------
prStu(&stu[0][0]);
jx(&stu[0][0]);
printf(" 降序排列後的數據: ");
prStu(&stu[0][0]);
return0;
}
voidjx(float*p)//降序排列
{
intcount1=0,count2;
float*p1=NULL,*p2=NULL,id,num[4],pj;
while(count1++<49)
{
p1=p+5;//p1p2在迭代中分別指向前後兩個學生的平均分
p2=p1+6;
count2=count1-1;
while(count2++<49)
{

if(*p1<*p2)//冒泡排序
{
id=*(p1-5);
*(p1-5)=*(p2-5);
*(p2-5)=id;
num[0]=*(p1-4);
num[1]=*(p1-3);
num[2]=*(p1-2);
num[3]=*(p1-1);
*(p1-4)=*(p2-4);
*(p1-3)=*(p2-3);
*(p1-2)=*(p2-2);
*(p1-1)=*(p2-1);
*(p2-4)=num[0];
*(p2-3)=num[1];
辯豎嫌*(p2-2)=num[2];
*(p2-1)=num[3];
pj=*p1;
*p1=*p2;
*p2=pj;
}
p2+=6;
}
p+=6;
}
}
voidprStu(float*p)//列印學生成績參數:數組首地址
{
intcount=0,i=0;
printf("%19s%16s%6s%6s%6s%8s ","學生sID","數學","語文","外語","物理","平均分");
while(i++<300)
{

count++;
if(count==1)
printf("編號%02d的學生4科成績及平均分為:",(int)*p++);
if(count>1&&count<6)
printf("%02d",(int)*p++);
if(count==6)
{
count=0;
printf("%.2f ",*p++);
}

}
}

⑻ 學生成績排序 c語言設計

#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
using namespace std;
int n; //n個學校
int m; //m個男子項目
int w; //w個女子項目
struct pro //表示項目的結構體
{
string name; //項目名稱
int snum[6]; //前5名學校的編號
}p[21];
struct school //表示學校的結構體
{
int num;
string name; //學校名稱
int score; //學校總分
int male; //男子總分
int female; //女子總分
}sch[21];
int integral[5]={7,5,3,2,1};//前五名得分
void input()
{
int i,j,y,x;
printf("輸入學校數目:");
y=0;
while(1)
{
scanf("%d",&n);
if(n>=1&&n<=20)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
for(i=1;i<=n;i++)
{
printf("輸入第%d個學校的名稱:",i);
cin>>sch[i].name;
sch[i].score=0;
sch[i].female=0;
sch[i].male=0;
sch[i].num=i;
}
printf("輸入男子項目數和女子項目數:");
y=0;
while(1)
{
scanf("%d%d",&m,&w);
if(m<=20&&m>=1&&w<=20&&w>=1)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
for(i=1;i<=m+w;i++)
{
printf("輸入第%d個項目的名稱:\n",i);
cin>>p[i].name;
printf("輸入第%d個項目的前5名的學校編號:\n",i);
for(j=1;j<=5;j++)
{
y=0;
while(1)
{
scanf("%d",&x);
if(x>=1&&x<=20)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
p[i].snum[j]=x;
sch[x].score+=integral[j-1];
if(i<=m)sch[x].male+=integral[j-1];
else sch[x].female+=integral[j-1];
}
}
}
void print(int i)
{
cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9)
<<sch[i].male<<setw(10)<<sch[i].female<<endl;
}
void bianhao() //按編號排序
{
int i,j;
school t;
for(i=1;i<n;i++)
{
for(j=i;j<=n;j++)
if(sch[i].num>sch[j].num)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按編號排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i<=n;i++)
print(i);
}
void zongfen() //按學校總分排序
{
int i,j;
school t;
for(i=1;i<n;i++)
{
for(j=i;j<=n;j++)
if(sch[i].score<sch[j].score)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i<=n;i++)
print(i);
ofstream fout;
fout.open("運動會分數統計.txt");
fout<<"編號 學校名稱 總分 男子總分 女子總分"<<endl;
for(i=1;i<=n;i++)
{fout<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9)
<<sch[i].male<<setw(10)<<sch[i].female<<endl; }
fout.close();
}
void malezf() //按學校男總分排序
{
int i,j;
school t;
for(i=1;i<n;i++)
{
for(j=i;j<=n;j++)
if(sch[i].male<sch[j].male)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校男子總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i<=n;i++)
print(i);
}
void femalezf() //按學校女總分排序
{
int i,j;
school t;
for(i=1;i<n;i++)
{
for(j=i;j<=n;j++)
if(sch[i].female<sch[j].female)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校女子總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i<=n;i++)
print(i);
cout<<endl;
}
void cxsch() //查詢學校信息
{
int i,y,s;
printf("輸入需要查詢的學校編號:");
y=0;
while(1)
{
scanf("%d",&s);
if(s>=1&&s<=n)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
printf("該學校相關信息:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i<=n;i++)
{
if(sch[i].num==s)
{
print(i);
break;
}
}
cout<<endl;
}
void cxxm() //查詢項目信息
{
int i,y,s;
printf("輸入需要查詢的項目編號:");
y=0;
while(1)
{
scanf("%d",&s);
if(s>=1&&s<=n)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
cout<<p[s].name<<"前5名學校編號及名稱為:"<<endl;
printf("名次 編號 學校名稱\n");
for(i=1;i<=5;i++)
cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl;
cout<<endl;
}

void solve() //菜單函數
{
int z;
while(1)
{
printf("\n選擇您需要的操作(選擇序號):\n");
printf("1.按學校編號排序輸出\n");
printf("2.按學校總分排序輸出\n");
printf("3.按學校男總分排序輸出\n");
printf("4.按學校女總分排序輸出\n");
printf("5.查詢某個學校成績\n");
printf("6.查詢某個項目成績\n");
printf("7.結束\n\n");
scanf("%d",&z);
if(z==1)bianhao();
if(z==2)zongfen();
if(z==3)malezf();
if(z==4)femalezf();
if(z==5)cxsch();
if(z==6)cxxm();
if(z==7)break;
}
}
int main() //主函數
{
input();
solve();
return 0;
}

⑼ c語言 一班10個同學的成績 輸入10個成績降序排序並輸出 然後鍵盤錄入其中一個成績輸出該成績名次

#include
int main()
{
int a[10],i,j,t,k;
printf("請以次物亮輸入10個學生的成績:");
for(i=0;i<10;i++)scanf("頃枝%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i;j<10;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<10;i++)
printf("%d\n",a[i]);
return 0;
}