当前位置:首页 » 编程语言 » c语言排第几名
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言排第几名

发布时间: 2022-09-24 14:31:48

c语言学生成绩排名

举个例子,学生的成绩依次为:7,5,6,3,8,排名初始化为1,2,3,4,5
根据你的程序:
经过第一次循环,即i=0;j=0时,程序排序依旧为7,5,6,3,8;排名为:1,3,2,5,4
如果在往下循环执行,第五名同学的最高成绩“8”分,将永远处于第4名;
所以,有错误。。。

修改建议:
可以参考排序,每次循环总能得到一个最大值,将此最大值所在结构体的排名rank赋值:
大概如下:
for(i=0;i<5;i++)
{
for(j=0;j<4-i;j++)
{
if(student[j].total>student[j+1].total)
{
//temp也是结构体,交换
temp = student[j];
student[j] = student[j+1];
student[j+1] = temp;
}
}
student[j].rank = i+1;
}

也可以用结构体指针,不需要每次交换,只需要标记下最大值,然后赋予名次~

⑵ 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]);
}
}

从高到低排分数

⑶ 截止到2021年世界编程语言排行榜中C语言处在什么位置

排名第三的位置。2021年世界编程语言C语言排行榜(java被python超越,位居第三)。

⑷ 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语言中排名怎么搞

C语言用struct实现,把信息包含在同一个struct里面就可以了,每个struct对应一个学生。然后你建立一个N维struct数组即可。
或者C++用类实现。
再普通一些,用链表,把所有数据通过指针项定位进行绑定。

⑹ C语言N名同学,排成一排,有多少中排列方法

这个问题需要拆解成两个部分解决:
1.n个同学排成一排的数学解
2.将上面数学解或者数学过程转化为程序代码

于是:
对于第1部分:
这个是一个全排列问题,解为n的阶乘,表示为:n!=1*2*3...*n
如果没学过,稍微解释一下为什么:
n个人排一排,那么显然肯定是n个位置,我们顺序来看,第一个位置:可以随便放n个人中任何一个,所以n种可能;第二个位置:前面已经放了一个人,也就总共只有n-1个人了,所以只能n-1种可能...到最后一个位置,只剩下最后一个人了,所以只有最后1种可能;
那么上面乘起来就是n!种情况了

于是第二个部分,实现n!
显然需要递归或者循环,看学过哪个吧~
下面只写核心部分,声明就略了
result表示结果,建议考虑用long或者更大位数的,阶乘很可怕,结果数值很大

循环(for为例):
for(int i=1;i<=n;i++){
result*=i;
}

递归
主函数调用:Func(n);
函数声明:
long Func(int value){
if(value==1)
return 1;
else
return value*Func(value-1);
}

⑺ 为什么C语言在最新的排行榜上排第一

开始学习不在于多,而在于精.
初学者不要过多停留在语言与工具的表面.学习一门能深入底层的语言,最好的选择是:汇编,C,C++.我感觉C/C++足以,汇编用于调试和嵌入汇编就可以了.我选择的是C语言,因为它入门简单,深入难,需要数据结构和算法支持,这样能更好的学习数据结构和算法.
初学者不要使用Java,VC++的MFC,VB,那样会很危险的.如果无深入底层,停留在语言表面过久,不利于初学者未来的发展和继续学习.对! 你可以用JAVA编程,你可以用MFC做出东西,你也可以用VB程序.但是一些比较底层的东西你一点都不知道,连汇编的调试也不懂,程序BUG在那里也不知道.那永远只是一个熟练使用锤子的工人,难道你不想成为建筑工程师吗?楼房是你构思的,图纸是你画的,而不是建造楼房中的一个不起眼的埋头工作的工人.
深入底层学习大概: C/C++ ->数据结构->编译原理
数字电路和汇编语言->计算机组成原理
操作系统->Linux内核
自己再动手写一个比较简单的内核.
为什么要学习内核.why?因为内核是一个学习软件工程最好的摸版,有很多技巧,技术,是C/C++课本上无法学到的,这主要是把理论知识总结起来.为什么要自己写一个简单的操作系统内核,大家也知道,没有什么比实践更容易理解.等你把简单的内核完成的时候,你的计算机组成原理,操作系统,Linux内核, 数据结构,C语言,汇编会得到一个更深层次的理解.
这些东西,是那些只能玩玩 VB,VC++,JAVA的低级程序员能理解的吗?这就是为什么有些高级程序员,只要看看的VB的书,不用两三天就能掌握的原因.你叫java程序员来试一下.
所以说,成为了高手,基础打牢靠了,学什么都简单.比起你今年学个java,明年又学个VC++.最后没有一样能学好.不如把时间用来打好基础.
希望各位能给未来的软件产业作出贡献. 希望大家多多支持Linux和开源软件.
我也是一名正在学习中的大一新生.我之所以能有这样的思想,真的没有什么好好奇的.那是我从以前的各位大师身上吸取的思想.我也正在为成为高手而努力.
想为成为高手而努力,就不要把时间浪费在打游戏,打牌,弹吉他等一些事情上了,我们计算机学院的学生都是网游成风,我真为他们担心,更为中国未来软件的产业担心.

⑻ c语言中排名问题

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#definestatusint

#defineNAME30/*各类名称字数上限*/
#defineSTU100/*学生人数上限*/
#defineSUB10/*课程数上限*/

typedefstructrecord{
floatscore;/*成绩分数*/
}record;

typedefstructstudent{
intid;/*索引性质的id*/
intno;/*学号*/
charname[NAME];/*姓名*/
recordscores[SUB];/*各门课成绩分数*/
floattotalScore;/*总分*/
floataverageScore;/*平均分*/
intranking;/*名次*/
}student;

intsubNum=3;/*课程数*/
charsubject[SUB][NAME]={"数学","英语","计算机"};/*课程名称*/


/**********************以下为函数声明**********************/
intstuInfoEmpty(studentstu[],intstuNum);/*学生信息判空*/

statusinputStuInfo(studentstu[],intstuIndex,intsubNum);/*录入单个学生信息*/
statusinputAllStuInfo(studentstu[],int*stuNum,intsubNum);/*录入全部学生信息*/

statuscalcStuInfo(studentstu[],intstuIndex,intsubNum);/*计算处理单个学生信息*/
statuscalcAllStuInfo(studentstu[],intstuNum,intsubNum);/*计算处理全部学生信息*/

statusprintStuInfo(studentstu[],intstuIndex,intsubNum,intinclRanking);/*输出单个学生信息*/
statusprintAllStuInfo(studentstu[],intstuNum,intsubNum,intinclRanking);/*输出全部学生信息*/

statusdescSort(studentstu[],intstuNum,intsubNum);/*按总分降序排列并录入名次*/

intgetCommand(void);/*输入命令编号*/
statusprintMeunText(void);/*打印菜单文本*/
statusrunMeun(studentstu[],intstuNum,intsubNum);/*调出菜单*/
/**********************以上为函数声明**********************/


intmain(void){
studentstu[STU]={-1};/*学生结构体数组*/
intstuNum;
inti;

runMeun(stu,stuNum,subNum);

return0;
}

/*学生信息判空*/
/*为空返回1;不空返回0*/
intstuInfoEmpty(studentstu[],intstuNum){
inti;

if(stuNum==0)
return1;
for(i=0;i<stuNum;i++)
if(stu[i].id==-1)
return1;
return0;
}

/*录入单个学生信息*/
statusinputStuInfo(studentstu[],intstuIndex,intsubNum){
inti;

scanf("%d",&stu[stuIndex].no);/*学号*/
if(stu[stuIndex].no==-1){/*学号录入-1以结束*/
stu[stuIndex].id=-1;
return-1;/*本次未录入*/
}

scanf("%s",&stu[stuIndex].name);/*姓名*/

for(i=0;i<subNum;i++){
scanf("%f",&stu[stuIndex].scores[i].score);
}/*各门课成绩分数*/

for(i=0;i<subNum;i++)
if(stu[stuIndex].scores[i].score>100||stu[stuIndex].scores[i].score<0)
return0;/*本次录入错误*/

return1;/*本次录入成功*/
}

/*录入全部学生信息*/
statusinputAllStuInfo(studentstu[],int*stuNum,intsubNum){
inti,inputStatus,count;

puts("======================================================");
puts("录入学生信息");
puts("======================================================");
putchar(' ');

if(*stuNum!=0){
printf("已有%d名学生信息! ",*stuNum);
putchar(' ');
puts("继续录入以新增(学号录入-1以结束)↓↓");
putchar(' ');
}
else{
puts("请录入学生信息(学号录入-1以结束)↓↓");
putchar(' ');
}

/*录入信息之表头*/
puts("------------------------------------------------------");
printf(" 学号 姓名 ");
for(i=0;i<subNum;i++)
printf("%s ",subject[i]);
putchar(' ');
puts("------------------------------------------------------");

/*录入信息*/
count=0;
i=*stuNum;
while(1){
printf("第%d名学生 ",i+1);
stu[i].id=i+1;
inputStatus=inputStuInfo(stu,i,subNum);
if(inputStatus==1){
i++;
count++;
}
elseif(inputStatus==0){
putchar(' ');
puts("成绩输入错误!请重新输入↓");
continue;
}
elseif(inputStatus==-1)
break;
}
*stuNum+=count;
puts("------------------------------------------------------");
putchar(' ');

putchar(' ');
if(count!=0)
printf("本次%d名学生信息录入完毕!即将返回主菜单。 ",count);
else
printf("您本次未输入学生信息!即将返回主菜单。 ");
putchar(' ');
puts("按任意键继续...");
putchar(' ');
fflush(stdin);
getch();
return1;
}

/*计算处理单个学生信息*/
statuscalcStuInfo(studentstu[],intstuIndex,intsubNum){
inti;

stu[stuIndex].totalScore=stu[stuIndex].averageScore=0;

/*计算总分*/
for(i=0;i<subNum;i++){
stu[stuIndex].totalScore+=stu[stuIndex].scores[i].score;
}
stu[stuIndex].averageScore=stu[stuIndex].totalScore/subNum;/*计算平均分*/

return1;
}

/*计算处理全部学生信息*/
statuscalcAllStuInfo(studentstu[],intstuNum,intsubNum){
inti;

/*计算总分、平均分等*/
for(i=0;i<stuNum;i++)
calcStuInfo(stu,i,subNum);

return1;
}

/*输出单个学生信息*/
statusprintStuInfo(studentstu[],intstuIndex,intsubNum,intinclRanking){
inti;

if(inclRanking)
printf("%d ",stu[stuIndex].ranking);/*名次*/
printf("%d ",stu[stuIndex].no);/*学号*/
printf("%s ",stu[stuIndex].name);/*姓名*/
for(i=0;i<subNum;i++)/*各门课成绩分数*/
printf("%.2f ",stu[stuIndex].scores[i].score);
printf("%.2f ",stu[stuIndex].totalScore);/*总分*/
printf("%.2f ",stu[stuIndex].averageScore);/*平均分*/
putchar(' ');

return1;
}

/*输出全部学生信息*/
statusprintAllStuInfo(studentstu[],intstuNum,intsubNum,intinclRanking){
inti;

if(stuInfoEmpty(stu,stuNum)){
puts("尚未录入学生信息!即将返回主菜单。");
putchar(' ');
puts("按任意键继续...");
putchar(' ');
fflush(stdin);
getch();
return0;
}

puts("======================================================");
puts("全部学生信息");
puts("======================================================");
putchar(' ');

if(inclRanking)
printf("%d名学生信息如下,按总分由高到低排列名次↓↓ ",stuNum);
else
printf("%d名学生信息如下↓↓ ",stuNum);
putchar(' ');

/*输出信息之表头*/
puts("------------------------------------------------------");
if(inclRanking)
printf("名次 ");
printf("学号 ");
printf("姓名 ");
for(i=0;i<subNum;i++)
printf("%s ",subject[i]);
printf("总分 ");
printf("平均分 ");
putchar(' ');
puts("------------------------------------------------------");

/*输出信息*/
for(i=0;i<stuNum;i++)
printStuInfo(stu,i,subNum,inclRanking);
puts("------------------------------------------------------");
putchar(' ');

putchar(' ');
puts("学生信息输出完毕!即将返回主菜单。");
putchar(' ');
puts("按任意键继续...");
putchar(' ');
fflush(stdin);
getch();
return1;
}

/*按总分降序排序、录入名次并输出*/
statusdescSort(studentstu[],intstuNum,intsubNum){
inti,j;
studenttemp;

if(stuInfoEmpty(stu,stuNum))
return0;

/*按总分降序*/
for(i=0;i<stuNum-1;i++)
for(j=0;j<stuNum-1-i;j++)
if(stu[j].totalScore<stu[j+1].totalScore){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}

/*录入名次*/
for(i=0;i<stuNum;i++)
stu[i].ranking=i+1;

return1;
}

/*输入命令编号*/
intgetCommand(void){
intkey;/*命令编号*/

printf("请输入命令编号以开启操作:");
scanf("%d",&key);

returnkey;
}

/*打印菜单文本*/
statusprintMeunText(void){
puts("======================================================");
puts("学生信息管理");
puts("------------------------------------------------------");
printf("%4c 功能详情 ",'#');
puts("------------------------------------------------------");
printf("%4d 输入学生信息 ",1);
printf("%4d 按成绩由高到低排序 ",2);
printf("%4d 退出 ",7);
puts("======================================================");
putchar(' ');

return1;
}

statusrunMeun(studentstu[],intstuNum,intsubNum){
intkey;
do{
system("cls");/*清屏*/
printMeunText();/*打印菜单文本*/
key=getCommand();/*输入命令编号*/
putchar(' ');
switch(key){
case1:system("cls");inputAllStuInfo(stu,&stuNum,subNum);calcAllStuInfo(stu,stuNum,subNum);break;
case2:system("cls");descSort(stu,stuNum,subNum);printAllStuInfo(stu,stuNum,subNum,1);break;
case7:puts("程序结束! ");break;
default:puts("输入错误,请重新输入! 按任意键继续...");getch();break;
}
}while(key!=7);

getch();
return1;
}

运行结果

主菜单

⑼ 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--;
}

}