⑴ 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 输出排序的结果。
排序中,除了比较和赋值与普通的整型数组排序不同外,其他的 都一样。