输入一个整数n,表示新生实际参赛人数。(30<=n<=573)

首先附上我的原码

#include "stdio.h"
#include <math.h>
int main()
{
	int n,c;
	scanf("%d%d",&n,&c);
	if(n<30||n>573)
	  printf("Input Error");
	else
	  if(30+(int)round(n*0.2)>n)
	    printf("Input Error");
	  else  
	    if(c>=1&&c<=10)
	      printf("First Prize");
	    else
	      if(c>=11&&c<=30)
	        printf("Second Prize");
	      else
	        if(c>=31&&c<=30+(int)round(n*0.2))
	          printf("Third Prize");
	        else
	          if(c>=31+(int)round(n*0.2)&&c<=n)
	            printf("No Prize");
	          else
	            printf("Input Error");
	return 0;
}

输入的条件为:输入一个整数n,表示新生实际参赛人数。(30<=n<=573)
然后输入一个整数mc,表示某同学在比赛结束后的排名名次

输出条件为:若输入的排名名次为   1 -- 10,输出“First Prize”‘;
若输入的排名名次为 11 -- 30,输出“Second Prize”‘;
若输入的排名名次为 31 -- (30+n*20%),输出“Third Prize”‘; 其中,n*20%的值四舍五入。
若输入的排名名次为 (30+n*20%)+1 -- n,输出“No Prize";  其中,n*20%的值四舍五入。
若输入的排名名次不合法,输出”Input Error“。 

本题的难点就在于细心,可以发现首先给出的参赛人数条件,要考虑到30+(int)round(n*0.2)<n的条件,如果没考虑会出现什么

会发现输出的是“Third Prize” ,因为在考虑到(30<=n<=573)时容易忽略了到n为30时也能正常判断,但在排名为31时,if(c>=31&&c<=30+(int)round(n*0.2))也会正常所以就发生了上面的问题,虽然不是什么难点,但作为初学者还是会容易犯错,比如本人。

本篇是为了让自己发现错误,如果有帮助到您,那么非常荣幸。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值