A. c语言成绩排名次。
#include<stdio.h>
#include<stdlib.h>
typedefintunit;//可改为double型
intcmp(constvoid*a,constvoid*b)
{
unitA=*(unit*)a;
unitB=*(unit*)b;
if(A<B)return1;
if(A>B)return-1;
return0;
}
inti,j,k,m,n;
unit*data;
intmain()
{
scanf("%d",&n);//输入人数
data=(unit*)malloc(n*sizeof(unit));
for(i=0;i<n;i++)
{
if(sizeof(unit)==sizeof(int))scanf("%d",&data[i]);
elseif(sizeof(unit)==sizeof(double))scanf("%lf",&data[i]);
}
qsort(data,n,sizeof(data[0]),cmp);
for(i=0;i<n;i++)
{
if(sizeof(unit)==sizeof(int))printf("%d",data[i]);
elseif(sizeof(unit)==sizeof(double))printf("%lf",data[i]);
}
}
从高到低排分数
B. C语言程序,请你编写一个程序计算每个学生的平均成绩
#include<stdio.h>
void main()
{
float a[10][10];//用来存放10名学生的5门成绩,最后一位用于存放平均成绩
int i,j;
float sum=0.0;
for(i=0;i<10;i++)
{
printf("请输入第%d个学生的5门成绩",i+1);
for(j=0;j<5;j++)
{
scanf("%f",&a<i>[j]);
sum=sum+a<i>[j];
}
a<i>[10]=sum/5.0;
}
printf("10名学生的成绩及平均分 ");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%.3f",a<i>[j]);
printf(" ");
}
}
(2)c语言编程平均分排名扩展阅读:
printf的用法
格式
printf函数的原型为:
#include<stdio.h>
int printf(const char*format,...);
在讲每一个函数的时候都会先把它的函数原型写出来,这个原型你们现在看不懂不要紧,等到学完C语言之后再来看这个原型就会发现它是很有参考意义的!它对深刻理解函数有着很大的价值。
printf的格式有四种:
1)printf("字符串 ");
#include<stdio.h>
int main(void)
{
printf("Hello World! ");// 表示换行
return 0;
}
其中 表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中n是“new line”的缩写,即“新的一行”。
此外需要注意的是,printf中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。
2)printf("输出控制符",输出参数);
纯文本复制
#include<stdio.h>
int main(void)
{
int i=10;
printf("%d ",i);/*%d是输出控制符,d表示十进制,后面的i是输出参数*/
return 0;
}
C. c语言读入7个选手的编号与得分,要求输出优秀率及格率,平均分,输出排行榜
#include <stdio.h>
typedef struct
{
int number;
int score;
}player;
float average(player play[7])
{
int i;
float sum = 0;
for (i = 0; i < 7; i++)
{
sum += play[i].score;
}
return sum/7;
}
void calc(player play[7], float *good, float *well)
{
int i,j=0,k=0;
for (i = 0; i < 7; i++)
{
if (play[i].score >= 90)
{
j++;
k++;
}
else if (play[i].score >=60)
{
k++;
}
}
*good = (float)j/7;
*well = (float)k/7;
}
void rank(player play[7])//排序,冒泡
{
int i,j;
int tmp,tmpnum;
for (i = 0; i < 7; i++)
{
for (j = 0; j < 6-i; j++)
{
if (play[j].score < play[j+1].score)
{
tmp = play[j].score;
tmpnum = play[j].number;
play[j].score = play[j+1].score;
play[j].number = play[j+1].number;
play[j+1].score = tmp;
play[j+1].number = tmpnum;
}
}
}
printf("\n排行:\n");
for (i= 0; i < 7; i++)
{
printf("%d %d\n", play[i].number, play[i].score);
}
}
void main()
{
player play[7];
int i;
float good,well;
for (i = 0; i < 7; i++)
{
printf("输入选手编号:");
scanf("%d", &play[i].number);
printf("输入选手%d的得分:", play[i].number);
scanf("%d",&play[i].score);
}
calc(play, &good, &well);
printf("优秀率为:%f\n", good);
printf("及格率为:%f\n", well);
printf("平均分为:%f\n", average(play));
rank(play);
}
D. 请问这个C程序怎么写输入30个学生5门课程的成绩,按照每个学生的平均分由高到低排序。
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "windows.h"
#include "string.h"
void Error();
void Input();
void Find();
void Output();
void Paixu();
struct node
{
int code;
char name[20];
char sex[3];
int age;
int chinese,english,computer,math,total;
float average;
};
struct node student[100],temp,New;
void MainMenu()
{
int cho;
printf("\n\t学员信息管理系统\n");
printf("*******************************\n");
printf("=\t【1】输入数据 =\n");
printf("=\t【2】查找数据 =\n");
printf("=\t【3】输出数据 =\n");
printf("=\t【4】排序数据 =\n");
printf("=\t【5】退出 =\n");
printf("*******************************\n");
printf("\n请输入你的选择(1-5):");
scanf("%d",&cho);
switch(cho)
{
case 1:
system("cls");
Input();
break;
case 2:Find();break;
case 3:Output();break;
case 4:Paixu();break;
case 5:exit(0);break;
default:Error();break;
}
}
void Paixu()//排序数据
{
int i,j;
//按平均分数的高低排序
for(i=0;i<=3;i++)
{
for(j=i+1;j<=4;j++)
{
if(student[i].average<student[j].average)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
}
}
printf("数据按平均分高低排列的情况如下:\n");
Output();
}
void Output()//输出数据
{
int i;
system("cls");
printf("数据的情况如下:\n");
for(i=0;i<=4;i++)
{
//输出每个成员变量的值
printf("\n******************************\n");
printf("\t学号:%d\n",student[i].code);
printf("\t姓名:%s\n",student[i].name);
printf("\t年龄:%d\n",student[i].age);
printf("\t英文成绩:%d\n",student[i].english);
printf("\t国文成绩:%d\n",student[i].chinese);
printf("\t计算机成绩:%d\n",student[i].computer);
printf("\t数学成绩:%d\n",student[i].math);
printf("\t总成绩:%d\n",student[i].total);
printf("\t平均成绩:%.2f\n",student[i].average);
}
printf("\n按任意键返回主界面......");
fflush(stdin);
getch();
system("cls");
MainMenu();
}
void Find()//查找数据
{
int n,m,i;
char ch,k[20];
system("cls");
lab1:printf("按学号查找(按1):\n");
printf("按姓名查找(按2):\n");
printf("请选择:");
scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入学号:");
scanf("%d",&m);
if(m=student[i].code)
{
printf("******************************\n");
printf("\t学号:%d\n",student[i].code);
printf("\t姓名:%s\n",student[i].name);
printf("\t年龄:%d\n",student[i].age);
printf("\t英文成绩:%d\n",student[i].english);
printf("\t国文成绩:%d\n",student[i].chinese);
printf("\t计算机成绩:%d\n",student[i].computer);
printf("\t数学成绩:%d\n",student[i].math);
printf("\t总成绩:%d\n",student[i].total);
printf("\t平均成绩:%.2f\n",student[i].average);
printf("******************************\n");
}
break;
case 2:
printf("请输入姓名:");
scanf("%s",&k);
if(strcmp(k,student[i].name==0))
{
printf("******************************\n");
printf("\t学号:%d\n",student[i].code);
printf("\t姓名:%s\n",student[i].name);
printf("\t年龄:%d\n",student[i].age);
printf("\t英文成绩:%d\n",student[i].english);
printf("\t国文成绩:%d\n",student[i].chinese);
printf("\t计算机成绩:%d\n",student[i].computer);
printf("\t数学成绩:%d\n",student[i].math);
printf("\t总成绩:%d\n",student[i].total);
printf("\t平均成绩:%.2f\n",student[i].average);
printf("******************************\n");
}
break;
default:
printf("该选择有误,选择只有(1或2),重新选择:");
goto lab1;
break;
}
printf("\n是否继续查找(y/n):");
lab2:fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')
{
system("cls");
goto lab1;
}
else if(ch=='n'||ch=='N')
{
printf("谢谢你的使用!\n");
}
else
{
printf("\n只许输入y/n字符,重输:");
goto lab2;
}
printf("\n按任意键返回主界面......");
fflush(stdin);
getch();
system("cls");
MainMenu();
}
void Input()//插入数据
{
int i;
for(i=0;i<=4;i++)
{
printf("\n请输入第%d位学员的学号:",i+1);
scanf("%d",&student[i].code);
fflush(stdin);
printf("请输入第%d位学员的姓名:",i+1);
gets(student[i].name);
fflush(stdin);
printf("请输入第%d位学员的性别:",i+1);
gets(student[i].sex);
fflush(stdin);
printf("请输入第%d位学员的年龄:",i+1);
scanf("%d",&student[i].age);
fflush(stdin);
printf("请输入第%d位学员的英文成绩:",i+1);
scanf("%d",&student[i].english);
printf("请输入第%d位学员的国文成绩:",i+1);
scanf("%d",&student[i].chinese);
printf("请输入第%d位学员的计算机成绩:",i+1);
scanf("%d",&student[i].computer);
printf("请输入第%d位学员的数学成绩:",i+1);
scanf("%d",&student[i].math);
student[i].total=student[i].english+student[i].chinese+student[i].computer+student[i].math;
student[i].average=(float)student[i].total/4;
printf("第%d位学员的总成绩为:%d\n",i+1,student[i].total);
printf("第%d位学员的平均成绩为:%.2f\n",i+1,student[i].average);
}
printf("\n按任意键返回主界面......");
fflush(stdin);
getch();
system("cls");
MainMenu();
}
void Error()
{
printf("\n输入错误,请输入(1-7)的整数:");
printf("\n按任意键结束......");
fflush(stdin);
getch();
system("cls");
MainMenu();
}
void main()
{
printf("\n\n\t\t*欢迎使用信息管理系统*");
printf("\n\t\t按任意键继续......");
fflush(stdin);
getch();
system("cls");
MainMenu();
}