第三题【问题描述】
某次考试结束,家长问:”今天多少分”,小孩说:”98”, “班上第几名”,“第17名”,“满分多少”,“100”,…
班级排名规则: 班上有几人分数比你高n,你就是第(n+1)名,没有你就是第一名。
输入:
输入给出若干正整数表示参考人数,再次输入指定人数对应的成绩
输入若干查找排名的次数,输入要查找的成绩
输出:
对输入要查找的成绩,显示名次,如果成绩不存在,返回”没有此成绩”。
样例输入 样例输出
请输入参考人数:6
对应的成绩分别是:
98,99,96,98,80,99
请输入查找排名的次数:3
请输入要查找的成绩:
60,99,96
成绩60,没有此成绩
成绩99,排名第1
成绩96,排名第5
运行效果图:
#include<stdio.h>
#define YES 1 //用于判断成绩是否存在
#define NO 0
int main()
{
int n; //总人数
int m; //查询次数
int desc; //排名
int a[1000];//所有人成绩
int b[1000];//查询人数成绩
int exist; //成绩是否存在
a[1000] = 0;
b[1000] = 0;
n = 0;
m = 0;
desc = 1;
exist = NO;
printf("请输入参考人数:");
scanf("%d",&n);
for (int i=0;i<n;i++)
{
printf("请输入第%d位同学的成绩:",(i+1));
scanf("%d",&a[i]);
}
printf("请输入要查找的次数:");
scanf("%d",&m);
for(int i=0;i<m;i++)
{
printf("请输入第%d次要查找的成绩:",(i+1));
scanf("%d",&b[i]);
exist = NO; //初始化该成绩不存在
desc = 1; //初始化排名为1
for(int j=0;j<n;j++)//for循环依次比较成绩是否存在,及排名情况
{
if(b[i]<a[j])
{
//存在大于此成绩的就加一。
desc++;
}
if(b[i]==a[j])
{
//成绩存在
exist = YES;
}
}
//每查询一个成绩判断一次
if(exist==NO)
{
printf("没有此成绩\n");
} else if(exist==YES)
{
printf("你是第%d名\n",desc);
}
}
return 0;
}
第13.14行写错了,去掉就行了