c語言成績排名
㈠ 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 <iostream>
using namespace std;//命名空間聲明
int a[10+1];//全局變數
int main()
{
int i,j;
int c;
for (i=1;1<=10;i++)
{
j=i+1;
if (a[i]>a[j])
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
for (i=1;i<=10;i++)
{
cout<<a[i];
}
/*十個人的成績是a[1]~專a[10]
自己輸入屬*/
return 0;
}
㈢ c語言編程,輸出10位同學的成績及其所對應的名次。(相同的成績及名次可以不重復輸出)
#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語言 輸入N個學生成績,求他們的名次
運行結果如圖專:屬
#include<stdio.h>
intmain()
{intn,i,j,a[100][2];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i][0]);
for(i=0;i<n;i++)
{a[i][1]=1;
for(j=0;j<n;j++)
a[i][1]+=a[j][0]>a[i][0];
}
for(i=0;i<n;i++)
printf("%d%d
",a[i][0],a[i][1]);
return0;
}
㈤ C語言:總分相同時名次相同例如,假設成績280,275,275,250則對應名次為1,2,2,4
#include "stdio.h" void main() { int score[3][3], i,j; float sum[3],average[3]; printf("請分別來輸入三個學源生的成績:\n"); for(i=0;i<3;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0 sum[i]+=score[i][j]; average[i]=sum[i]/3; } } for(i=0;i<3;i++) printf("第%d個學生的總分為:%f,平均成績為:%f\n",i+1,sum[i],average[i]); }
㈥ C語言設計學生成績管里系統,輸入全校信息,然後輸入班級進行各科排名,就這部應該怎麼做 ,請大神指教
|臨時寫的,沒有編譯,應該差不離。 #include #define MAX_CORE_NUM 3 #define MAX_STU_NUM 100 struct stu_info_t { int no; char name[50]; int is_male; int core[MAX_CORE_NUM]; int core_total; int rank; }; int class_min_stu[MAX_CORE_NUM]; int class_max_stu[MAX_CORE_NUM]; struct stu_info_t stu_info[MAX_STU_NUM]; int stu_num = 0; int input_stu_info() { char q = 0; int i = 0; int j = 0; char c = 0; printf("請輸入所有學生信息:\n"); i = 0; while (q != 'q' && q != 'Q' && i < MAX_STU_NUM) { printf("學號:"); scanf("%d", &(stu_info[i].no)); printf("姓名:"); scanf("%s", stu_info[i].name); printf("性別(M/m - 男生,F/f - 女生):"); scanf("%c", &c); if (c == 'M' || c == 'c') stu_info[i].is_male = 1; else stu_info[i].is_male = 0; stu_info[i].core_total = 0; for (j = 0; j MAX_CORE_NUM; j++) { printf("課程%d得分:", j+1); scanf("%d", &(stu_info[i].core[j])); stu_info[i].core_total += stu_info[i].core[j]; } i++; if (i >= MAX_STU_NUM) { printf("最多輸入%d個學生信息\n", MAX_STU_NUM); break; } printf("退出(Q/q):"); scanf("%c", &q); } stu_num = i; return 0; } int save_stu_info() { int i = 0; int j = 0; FILE * fp = NULL; fp = fopen("students.txt", "rw"); if (fp == NULL) return -1; fprintf(fp, "\t學號\t姓名\t性別"); for (j = 0; j < MAX_CORE_NUM; j++) { fprintf(fp, "\t課程%d", j+1); } fprintf(fp, "\r\n"); for (i = 0; i < stu_num; i++) { fprintf(fp, "\t%d\t%s\t%s", stu_info[i].no, stu_info[i].name, (stu_info[i].is_male ? "男" : "女")); for (j = 0; j < MAX_CORE_NUM; j++) { fprintf(fp, "\t%d", stu_info[i].core[j]); } fprintf(fp, "\r\n"); } fclose(fp); return 0; } int cal_rank() { int i = 0; int j = 0; int class_min; int class_max; struct stu_info_t t; for (i = 0; i < stu_num - 1; i++) { for (j = i + 1; j < stu_num; j++) { if (stu_info[i].core_total < stu_info[j].core_total) { memcpy(&t, &stu_info[j], sizeof(struct stu_info_t)); memcpy(&stu_info[j], &stu_info[i], sizeof(struct stu_info_t)); memcpy(&stu_info[i], &t, sizeof(struct stu_info_t)); } } } for (i = 0; i < stu_num; i++) { stu_info[i].rank = i + 1; } for (j = 0; j < MAX_CORE_NUM; j++) { class_min = 0; class_max = 10000; for (i = 0; i < stu_num; i++) { if (stu_info[i].core[j] class_min) { class_min = stu_info[i].core[j]; class_min_stu[j] = i; } if (stu_info[i].core[j] > class_max) { class_max = stu_info[i].core[j]; class_max_stu[j] = i; } } } return 0; } int output_total() { int i = 0; printf("\t學號\t姓名\t總分\t排名\n"); for (i = 0; i < stu_num; i++) { printf("\t%d\t%s\t%d\t%d\n", stu_info[i].no, stu_info[i].name, stu_info[i].core_total, stu_info[i].rank); } return 0; } int output_class() { int i = 0; int j = 0; int core = 0; for (j = 0; j < MAX_CORE_NUM; j++) { core = stu_info[class_max_stu[j]].core[j]; printf("課程%d最高分:%d\n", j+1, core); printf("\t學號\t姓名\n"); for (i = 0; i < stu_num; i++) { if (stu_info[i].core[j] == core) { printf("\t%d\t%s\n", stu_info[i].no, stu_info[i].name); } } } for (j = 0; j < MAX_CORE_NUM; j++) { core = stu_info[class_min_stu[j]].core[j]; printf("課程%d最低分:%d\n", j+1, core); printf("\t學號\t姓名\n"); for (i = 0; i < stu_num; i++) { if (stu_info[i].core[j] == core) { printf("\t%d\t%s\n", stu_info[i].no, stu_info[i].name); } } } return 0; } void main() { input_stu_info(); save_stu_info(); cal_rank(); output_total(); output_class(); return; }
㈦ c語言程序求設計,關於成績分析排名的
軟體開發就是拆解問題,然後一步步實現即可
1學會怎樣讀取文件,按行讀取文件
2可以按照空格分割數據,獲取到數據的分數,學號,姓名等信息
3根據獲取的信息進行計算比較
4排序所給數據
5數據的寫入,有對應的函數
㈧ 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;
}
㈨ C語言 學生成績排序 按學生的序號輸入 n 名學生的成績,按照分數由高到低的順序輸出學生的名次、序號和成績
#include<stdio.h>
#include<malloc.h>
typedefstructstudent
{
intid;
intscore;
structstudent*next;
}STU;
intstuIndex;
voidinputStuInfo(STU*stuHead);//輸入學生信息
voidorderStuInfo(STU*stuHead);//按照分數高到低順序重組鏈表
voidprintStuInfo(STU*stuHead,intflag);//列印學生信息。參數flag=0:正常列印鏈表信息。flag!=0:列印排序後的名次信息
intmain()
{
STU*stuHead=(STU*)malloc(sizeof(STU));
stuHead->next=NULL;
stuIndex=1;
inputStuInfo(stuHead);
printf("--列印原始輸入的鏈表!--
");
printStuInfo(stuHead,0);
printf("--開始按分數降序排列!--
");
orderStuInfo(stuHead);
printf("--鏈表按降序重組完成!--
");
printf("--列印降序排序的鏈表!--
");
printStuInfo(stuHead,1);
return0;
}
voidorderStuInfo(STU*stuHead)
{
STU*stuSave1=NULL,*stuSave2=NULL,stuSave3;
stuSave1=stuHead;
while(stuSave1->next!=NULL)//冒泡排序
{
stuSave2=stuSave1->next;
while(stuSave2->next!=NULL)
{
if(stuSave1->next->score<stuSave2->next->score)//交換成員值,保留原鏈表指針值
{
stuSave3=*(stuSave1->next);
stuSave1->next->id=stuSave2->next->id;
stuSave1->next->score=stuSave2->next->score;
stuSave2->next->id=stuSave3.id;
stuSave2->next->score=stuSave3.score;
}
stuSave2=stuSave2->next;
}
stuSave1=stuSave1->next;
}
}
voidprintStuInfo(STU*stuHead,intflag)
{
inti=1;
while(stuHead->next!=NULL)
{
if(flag==0)
printf("學生%d,成績%d
",stuHead->next->id,stuHead->next->score);
else
printf("第%d名,學生%d,成績%d
",i++,stuHead->next->id,stuHead->next->score);
stuHead=stuHead->next;
}
}
voidinputStuInfo(STU*stuHead)
{
intscore;
STU*stuNew=NULL,*stuTail=NULL;
while(1)
{
printf("輸入學生%d的成績:(輸入負數結束輸入)",stuIndex);
scanf("%d",&score);
if(score<0)
break;
stuNew=(STU*)malloc(sizeof(STU));
stuNew->score=score;
stuNew->id=stuIndex;
stuNew->next=NULL;
if(stuHead->next==NULL)
stuHead->next=stuNew;
else
stuTail->next=stuNew;
stuTail=stuNew;
stuIndex++;
}
}
㈩ C語言成績排完了,怎麼把名次、學號打出來
你查到那個名次和學號就截圖就可以了