您的位置:

c语言加权排名,排名次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;

}

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