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();
}