⑴ 谁会用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;
}