⑴ c語言編程:輸出成績排名
#include <stdio.h>
int main()
{
int i,j,temp,a[100]={0},ranking=0,n;
printf("請輸入學生數:\n");
scanf("%d",&n);
printf("請輸入學生成績:\n");
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//對成績排序
for (i=0;i<n;i++)
{
for (j=i+1;j<n;j++)
{
if (a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("成績由高到低順序排序:\n");
for (i=0;i<n;i++)
{
++ranking;
if ((a[i]==a[i-1]))
{
ranking=ranking-1;
}
printf("%d:%d\n",a[i],ranking);
}
printf("\n");
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語言編程中 怎樣按名次輸出同學的姓名和學號
#include<stdio.h>
#include<malloc.h>
typedefstructstuInfo
{
intid;//學號
charname[10];//姓名
intscore;//成績
structstuInfo*next;
}STUINFO;
voidprintfStu(STUINFO*stuHead);//列印學生鏈表
voidinputInfo(STUINFO*stuHead);//輸入學生成績信息
voidorderByScore(STUINFO*stuHead);//按照成績名次排列。
intmain()
{
STUINFO*stuHead=(STUINFO*)malloc(sizeof(STUINFO));
stuHead->next=NULL;
inputInfo(stuHead);
printfStu(stuHead);
printf("按照名次排列,依次為:第一名、第二名、第三名。。。
");
orderByScore(stuHead);
printfStu(stuHead);
}
voidprintfStu(STUINFO*stuHead)
{
printf("學號姓名成績
");
while(stuHead->next!=NULL)
{
printf("%d%s%d
",stuHead->next->id,stuHead->next->name,stuHead->next->score);
stuHead=stuHead->next;
}
}
voidinputInfo(STUINFO*stuHead)
{
intid;
STUINFO*stuTail=NULL;
STUINFO*stuNew=NULL;
while(1)
{
stuNew=(STUINFO*)malloc(sizeof(STUINFO));
printf("輸入學生的學號、姓名、成績(學號輸入負數結束輸入):");
scanf("%d",&id);
if(id<0)
break;
else
stuNew->id=id;
scanf("%s%d",stuNew->name,&stuNew->score);
stuNew->next=NULL;
if(stuHead->next==NULL)
stuHead->next=stuNew;
else
stuTail->next=stuNew;
stuTail=stuNew;
}
}
voidorderByScore(STUINFO*stuHead)
{
STUINFOstuSave;
STUINFO*stuCurrent=stuHead->next;
STUINFO*stuNext=NULL;
while(stuCurrent!=NULL)//冒泡排序,鏈表節點成員值交換,鏈表指針不變
{
stuNext=stuCurrent->next;
while(stuNext!=NULL)
{
if(stuCurrent->score<stuNext->score)
{
stuSave=*stuCurrent;
*stuCurrent=*stuNext;
*stuNext=stuSave;
stuNext->next=stuCurrent->next;
stuCurrent->next=stuSave.next;
}
stuNext=stuNext->next;
}
stuCurrent=stuCurrent->next;
}
}
⑷ C語言成績排完了,怎麼把名次、學號打出來
用二維數組,每行對應一個學生的信息。每行5個元素。
排完後按照元素索引值列印出學號和排名。
⑸ 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語言成績排名次。
#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]);
}
}
從高到低排分數
⑺ c語言怎麼把100個人的名字按姓名排序輸出
1 將100個人的姓名,存到二維字元數組中
2 通過strcmp比較。 通過strcpy賦值。 對二維字元數組進行排序
3 輸出排序的結果。
排序中,除了比較和賦值與普通的整型數組排序不同外,其他的 都一樣。