|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
西大东门有超级多的西瓜!小西走到东门,希望能和舍♂友一起享受。
但是小西身上只有n( 0<n<10000)块钱, 一个瓜需要一块钱,店家有两个特价方案,一种是买3送1,一种是买5送2!
小西希望自己能买到最多的西瓜,你能帮帮她吗
- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- int a,b,n;
- while(scanf("%d",&n)!=EOF)
- {
- int a=n/3*4+n%3,b=n/5*7+n%5;
- if(a<b)
- printf("%d\n",b);
- else
- printf("%d\n",a);
- }
- return 0;
- }
复制代码
本帖最后由 sunrise085 于 2020-11-18 00:35 编辑
你的程序不单单是控制n的范围的问题,运算结果也是不对的。
比如8元钱最多能买11个西瓜(7+4),但是你的程序算出的结果是10个(7+3)
- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- int a,b,n;
- int flag=1;
- while(1)
- {
- while(1){//这个内层循环是用来控制输入范围的,若输入数值不在范围之内则需要重新输入
- flag=scanf("%d",&n);//判断是否有正确输入,如果输入数字,则flag为1
- if (n>0 && n<10000)//判断n是否在范围之内,
- break;//若在范围之内,则跳出内层循环
- printf("超出范围了,请重新输入!\n");
- }
- if (flag!=1)//若flag不为1,说明没有输入数字,则结束循环
- break;
- a=n/5*7+n%5;//按照最大的买,买5送2,
- if(n%5>=3)//若余数超过3,则在买3送1,即再增加一个西瓜
- a+=1;
- printf("%d元最多买%d个西瓜\n",n,a);
- }
- return 0;
- }
复制代码
|
|