本文目录一览:
- 1、c语言 学生成绩排名
- 2、c语言中排名怎么搞
- 3、编程语言排名2021
- 4、用C语言计算加权分数
- 5、C语言学生成绩排名
c语言 学生成绩排名
#includestdio.h
void setList(int *a,int len);
void printfList(int *a,int len);
void pxList(int *a,int len);
void insertList(int *a,int len);
void fanList(int *a,int len);
int main()
{
int a[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);
return 0;
}
void setList(int *a,int len)//输入
{
int i;
printf("请输入%d个学生成绩\n",len);
for(i=0;ilen;i++)
scanf("%d",a[i]);
}
void printfList(int *a,int len)//打印数组
{
int i;
printf("\n---打印数组---\n");
for(i=0;ilen;i++)
printf("%d ",a[i]);
}
void pxList(int *a,int len)// 选择排序
{
int i,j;
printf("\n---从大到小排序---\n");
for(i=0;ilen-1;i++)
for(j=i+1;jlen;j++)
if(a[i]a[j])
{
a[j]^=a[i];
a[i]^=a[j];
a[j]^=a[i];
}
}
void insertList(int *a,int len)//插入数组
{
printf("\n---插入数组---\n");
printf("输入要插入的数:");
scanf("%d",a[len]);
pxList(a,11);
}
void fanList(int *a,int len)//数组反向存储
{
int *p0,*p1;
p0=a;
p1=a[len-1];
while(p0p1)
{
*p0^=*p1;
*p1^=*p0;
*p0^=*p1;
p0++;
p1--;
}
}
c语言中排名怎么搞
C语言用struct实现,把信息包含在同一个struct里面就可以了,每个struct对应一个学生。然后你建立一个N维struct数组即可。
或者C++用类实现。
再普通一些,用链表,把所有数据通过指针项定位进行绑定。
编程语言排名2021
近日, TIOBE 编程社区揭晓了2021年2月各大编程语言的排行情况,C语言继续霸榜第一名,第二名则是Java,Python位居第三。
从排行来看,前10名编程语言和上个月没有太大变化,排在前列的依旧是C、Java、Python、C++、C#。
第 9 和第 10 并不像排名前 8 的位置那么固定。在过去的 12 个月中,这 2 个位置分别由 SQL ,汇编语言(Assembly language) ,R 语言 ,Groovy ,Go 语言 和 Swift 占据。
用C语言计算加权分数
本人(无界)用C-Free亲手编写的,亲测可运行
# include stdio.h
struct stu{ //用结构体数组储存学生的成绩和学分
float score; //成绩
float credit; //学分
}Stu[100];
int main()
{
unsigned int x=1,y=0;
//y用于结构体数组Stu,同时用于循环计算该学生成绩
double sxcsum=0,csum=0,sum;
//sxcsum记录所有成绩乘以学分之和
//csum学分之和
//sum加权成绩
printf("提示:输入完后按回车键结束,输入负数代表学生成绩输入完成\n");
while(1) //循环用户输入成绩,直到用户输入完成后结束
{
printf("请输入第%d门课程的成绩:",x);
scanf("%f",Stu[y].score);
getchar(); //吸收回车键字符
if(Stu[y].score0) break; //输入负数结束循环,结束学生输入成绩操作
printf("请输入第%d门课程的学分:",x++);
scanf("%f",Stu[y++].credit);
getchar();
if(Stu[y-1].credit0) break;
}
printf("---输入成绩结束---\n");
for(x=0;xy;x++) //循环计算成绩,直到算完所有课程 ,y变量储存共有多少门课程
{
sxcsum+=Stu[x].score*Stu[x].credit;
csum+=Stu[x].credit;
}
sum=sxcsum/csum;
printf("该学生的加权成绩为:%g\n",sum);
return(0);
}
---“无界”回答---
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;i5;i++)
{
for(j=0;j4-i;j++)
{
if(student[j].totalstudent[j+1].total)
{
//temp也是结构体,交换
temp = student[j];
student[j] = student[j+1];
student[j+1] = temp;
}
}
student[j].rank = i+1;
}
也可以用结构体指针,不需要每次交换,只需要标记下最大值,然后赋予名次~