快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

c语言中rank函数,rank函数怎么用c语言

C语言中的排序函数是什么

include cstdlib 或 #include stdlib.h

成都创新互联是专业的袁州网站建设公司,袁州接单;提供网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行袁州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))

参数表

*base: 待排序的元素(数组,下标0起)。

num: 元素的数量。

width: 每个元素的内存空间大小(以字节为单位)。可用sizeof()测得。

int(*)compare: 指向一个比较函数。*elem1 *elem2: 指向待比较的数据。

比较函数的返回值

返回值是int类型,确定elem1与elem2的相对位置。

elem1在elem2右侧返回正数,elem1在elem2左侧返回负数。

控制返回值可以确定升序/降序。

产生随机数的函数也是rand(),不是rank().

c语言中排名问题

#include stdio.h

#include stdlib.h

#include string.h

#define status int 

#define NAME 30 /*各类名称字数上限*/

#define STU 100 /*学生人数上限*/

#define SUB 10 /*课程数上限*/

typedef struct record {

float score; /*成绩分数*/

} record;

typedef struct student {

int id; /*索引性质的id*/

int no; /*学号*/

char name[NAME]; /*姓名*/

record scores[SUB]; /*各门课成绩分数*/

float totalScore; /*总分*/

float averageScore; /*平均分*/

int ranking; /*名次*/

} student;

int subNum = 3; /*课程数*/

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

/**********************以下为函数声明**********************/

int stuInfoEmpty (student stu[], int stuNum); /*学生信息判空*/

status inputStuInfo (student stu[], int stuIndex, int subNum); /*录入单个学生信息*/

status inputAllStuInfo (student stu[], int *stuNum, int subNum); /*录入全部学生信息*/

status calcStuInfo (student stu[], int stuIndex, int subNum); /*计算处理单个学生信息*/

status calcAllStuInfo (student stu[], int stuNum, int subNum); /*计算处理全部学生信息*/

status printStuInfo (student stu[], int stuIndex, int subNum, int inclRanking); /*输出单个学生信息*/

status printAllStuInfo (student stu[], int stuNum, int subNum, int inclRanking); /*输出全部学生信息*/

status descSort (student stu[], int stuNum, int subNum); /*按总分降序排列并录入名次*/

int getCommand (void); /*输入命令编号*/

status printMeunText (void); /*打印菜单文本*/

status runMeun (student stu[], int stuNum, int subNum); /*调出菜单*/

/**********************以上为函数声明**********************/

int main (void) {

student stu[STU] = {-1}; /*学生结构体数组*/

int stuNum;

int i;

runMeun (stu, stuNum, subNum);

return 0;

}

/*学生信息判空*/

/*为空返回1;不空返回0*/

int stuInfoEmpty (student stu[], int stuNum) {

int i;

if (stuNum == 0)

return 1;

for (i=0; istuNum; i++)

if (stu[i].id == -1)

return 1;

return 0;

}

/*录入单个学生信息*/

status inputStuInfo (student stu[], int stuIndex, int subNum) {

int i;

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; isubNum; i++) {

scanf ("%f",stu[stuIndex].scores[i].score);

} /*各门课成绩分数*/

for (i=0; isubNum; i++)

if (stu[stuIndex].scores[i].score100 || stu[stuIndex].scores[i].score0)

return 0; /*本次录入错误*/

return 1; /*本次录入成功*/

}

/*录入全部学生信息*/

status inputAllStuInfo (student stu[], int *stuNum, int subNum) {

int i,inputStatus,count;

puts ("======================================================");

puts ("录入学生信息");

puts ("======================================================");

putchar ('\n');

if (*stuNum!=0) {

printf ("已有%d名学生信息!\n",*stuNum);

putchar ('\n');

puts ("继续录入以新增(学号录入-1以结束)↓↓");

putchar ('\n');

}

else {

puts ("请录入学生信息(学号录入-1以结束)↓↓");

putchar ('\n');

}

/*录入信息之表头*/

puts ("------------------------------------------------------");

printf ("\t\t学号\t姓名\t");

for (i=0; isubNum; i++)

printf ("%s\t",subject[i]);

putchar ('\n');

puts ("------------------------------------------------------");

/*录入信息*/

count=0;

i=*stuNum;

while (1) {

printf ("第%d名学生\t",i+1);

stu[i].id = i+1;

inputStatus = inputStuInfo (stu, i, subNum);

if (inputStatus==1) {

i++;

count++;

}

else if (inputStatus==0) {

putchar ('\n');

puts ("成绩输入错误!请重新输入↓");

continue;

}

else if (inputStatus==-1)

break;

}

*stuNum += count;

puts ("------------------------------------------------------");

putchar ('\n');

putchar ('\n');

if (count!=0)

printf ("本次%d名学生信息录入完毕!即将返回主菜单。\n",count);

else

printf ("您本次未输入学生信息!即将返回主菜单。\n");

putchar ('\n');

puts ("按任意键继续...");

putchar ('\n');

fflush (stdin);

getch ();

return 1;

}

/*计算处理单个学生信息*/

status calcStuInfo (student stu[], int stuIndex, int subNum) {

int i;

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

/*计算总分*/

for (i=0; isubNum; i++) {

stu[stuIndex].totalScore += stu[stuIndex].scores[i].score;

}

stu[stuIndex].averageScore = stu[stuIndex].totalScore/subNum; /*计算平均分*/

return 1;

}

/*计算处理全部学生信息*/

status calcAllStuInfo (student stu[], int stuNum, int subNum) {

int i;

/*计算总分、平均分等*/ 

for (i=0; istuNum; i++)

calcStuInfo (stu, i, subNum);

return 1;

}

/*输出单个学生信息*/

status printStuInfo (student stu[], int stuIndex, int subNum, int inclRanking) {

int i;

if (inclRanking)

printf ("%d\t",stu[stuIndex].ranking);  /*名次*/

printf ("%d\t",stu[stuIndex].no); /*学号*/

printf ("%s\t",stu[stuIndex].name);  /*姓名*/

for (i=0; isubNum; i++)  /*各门课成绩分数*/

printf ("%.2f\t",stu[stuIndex].scores[i].score);

printf ("%.2f\t",stu[stuIndex].totalScore);  /*总分*/

printf ("%.2f\t",stu[stuIndex].averageScore);  /*平均分*/

putchar ('\n');

return 1;

}

/*输出全部学生信息*/

status printAllStuInfo (student stu[], int stuNum, int subNum, int inclRanking) {

int i;

if (stuInfoEmpty (stu,stuNum)) {

puts ("尚未录入学生信息!即将返回主菜单。");

putchar ('\n');

puts ("按任意键继续...");

putchar ('\n');

fflush (stdin);

getch ();

return 0; 

}

puts ("======================================================");

puts ("全部学生信息");

puts ("======================================================");

putchar ('\n');

if (inclRanking)

printf ("%d名学生信息如下,按总分由高到低排列名次 ↓↓\n",stuNum);

else 

printf ("%d名学生信息如下 ↓↓\n",stuNum);

putchar ('\n');

/*输出信息之表头*/

puts ("------------------------------------------------------");

if (inclRanking)

printf ("名次\t");

printf ("学号\t");

printf ("姓名\t");

for (i=0; isubNum; i++)

printf ("%s\t",subject[i]);

printf ("总分\t");

printf ("平均分\t"); 

putchar ('\n');

puts ("------------------------------------------------------");

/*输出信息*/

for (i=0; istuNum; i++)

printStuInfo (stu, i, subNum, inclRanking);

puts ("------------------------------------------------------");

putchar ('\n');

putchar ('\n');

puts ("学生信息输出完毕!即将返回主菜单。");

putchar ('\n');

puts ("按任意键继续...");

putchar ('\n');

fflush (stdin);

getch ();

return 1;

}

/*按总分降序排序、录入名次并输出*/

status descSort (student stu[], int stuNum, int subNum) {

int i,j;

student temp;

if (stuInfoEmpty (stu,stuNum))

return 0;

/*按总分降序*/

for (i=0; istuNum-1; i++)

for (j=0; jstuNum-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; istuNum; i++)

stu[i].ranking = i+1; 

return 1;

}

/*输入命令编号*/

int getCommand (void) {

int key; /*命令编号*/

printf("请输入命令编号以开启操作:");

scanf ("%d",key);

return key;

}

/*打印菜单文本*/

status printMeunText (void) {

puts ("======================================================");

puts ("学生信息管理");

puts ("------------------------------------------------------");

printf ("%4c\t功能详情\n",'#');

puts ("------------------------------------------------------");

printf ("%4d\t输入学生信息\n",1);

printf ("%4d\t按成绩由高到低排序\n",2);

printf ("%4d\t退出\n",7);

puts ("======================================================");

putchar ('\n');

return 1;

}

status runMeun (student stu[], int stuNum, int subNum) {

int key;

do {

system("cls"); /*清屏*/

printMeunText (); /*打印菜单文本*/

key = getCommand (); /*输入命令编号*/

putchar('\n');

switch (key) {

case 1: system("cls"); inputAllStuInfo (stu, stuNum, subNum); calcAllStuInfo (stu, stuNum, subNum); break;

case 2: system("cls"); descSort (stu, stuNum, subNum); printAllStuInfo (stu, stuNum, subNum, 1); break;

case 7: puts("程序结束!\n"); break;

default:puts("输入错误,请重新输入!\n\n\n按任意键继续..."); getch (); break;

}

} while (key!=7);

getch ();

return 1;

}

运行结果

主菜单

录入学生信息

排名次并输出

c语言,int rank(int key,int []a)是什么意思?

这写错了吧?

应该是

int rank(int key,int a[])

用户自定义的函数,光看函数名和参数表,是不能确定其功能的,这是由编程者自己定义的。

照字面意思,是求key在a数组中的排名。

c语言中rank函数怎么用

c语言中rank函数是自定义的函数吧?如果是的话,怎么用,还必须看这个函数是怎么定义的了。

c语言,为一个数加或减一个0~3的随机数。怎么操作,需要用到rank()函数,谢谢。

int main(){

srand(time(0));

int i = 0;

scanf("%d",i);

i += rand()%7-3;//让i加上一个-3到3的数……

printf("%d",i);

}


文章名称:c语言中rank函数,rank函数怎么用c语言
网站URL:http://6mz.cn/article/dsipoij.html

其他资讯