c语言问题 求大神解答

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
#include <stdio.h>
int main()
{
int n,i,a,b,sum=0;
while(scanf("%d",&n)&&n!=0)
{
while(n>=3)
{
while(n>=3)
{
a=n/3;
sum=sum+a;
b=n%3;
}
n=a+b;
if(n==2)
n=n+1;
}
printf("%d\n",sum);
}
return 0;
}

可以借用汽水瓶这点就非常难解决了。
int a,b,c,sum=0;//a是空气水瓶 b是不够3个的汽水 c是换了几瓶
//用a除以3 取整数 加到c里
//用a除以3 取余数 存入b中 判断b是不是等于0
//等于零输出c
//不等于0,用3减去b结果是否等于1
//等于1向c+1 输出c
//不等于1 输出c
语句我就不帮你写了 大体意思就是这样
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-08
按题中的意思就是两个瓶子换一瓶汽水(不含瓶子),所以下面的代码就搞定了
#include <stdio.h>
int main()
{
int n,i,a,b,sum=0;
scanf("%d",&n);

if(n<=1) { //一个瓶子不能换
sum = 0;

}
else { //两个以上可以换
sum = n/2; //直接除以2,因为int类型所以多一个瓶子也不影响
}

printf("%d\n",sum); //这是答案

return 0;
}本回答被提问者采纳

C语言问题求大神详细解析
a错 因为调用在定义之前但是没有声明 b错 函数定义的时候返回值类型为void,却欲图使用函数的返回值。c错 函数的声明返回值为int,定义返回值为void 不相符 d正确

c语言问题求解!!!谢谢!!!
问题一箩筐,还得歪着头看,挺佩服自己。根据你的问题一一做解答:1、a += a -= a*a ; \/\/这个语句的核心是要明白不同运算符的优先级,以及结合性。 +=,-= 是赋值运算符,优先级仅比‘,’高,是明显低于算术运算符‘*’的,而且赋值运算符的结合性是“从右往左”(也就是把右值赋给左...

求大神C语言编程,题目要求在下面
问题一:关键在输入字符和字符串要避开回车及空格分隔符。这里可以用getchar解决。问题二:就是让你函数调用。问题三:依然是函数调用,但需要函数1返回值或传递地址。至于数字字符转整型,大小写转换,都利用ascii码的差值来转换。下面是我的代码,三个函数分别对应三个问题。include<stdio.h> define MLE...

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
答案就是 A) 1

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

C语言问题,求解析,谢谢
第二个考察点是两个整数相除仍然是整数,即舍掉小数点后面的部分,第三个也是最重要的一个考察点是逻辑的运算,即在C语言里,非0的数我们认为它的逻辑值是1,就是它是真的,而整数0的逻辑值是0,就是它是假的,所以本题左边是1 ,右边也是1,逻辑或有一边是1就得1,所以选D。

学生来看这8道C语言谜题你能答对几个
C语言8个语言谜题答对几个 1、下面的程序并不见得会输出"hello-std-out"你知道为什么吗? 参考答案:stdout和stderr是不同设备描述符。stdout是块设备,stderr则不是。对于块设备,只有当下面几种情况下才会被输入:遇到回车; 缓冲区满;flush被调用。而stderr则不会。 2、下面的程序看起来是正常的,使用了一个逗号...

c语言问题
答案应该是C,不要把 int *ptr();搞混了,题上的是返回一个整形数据的指针函数,后者是一个 返回指针的函数 5 答案是A,呵呵,这个你好好想一下就明白了 6 答案是A 4 7 答案是23 这个你要好好看一看,特别是(&Arr+1)它和(Arr+1)区别很大,前者在地址上加了 1而后者在地址上加了1*...

C语言问题,急
逗号运算符。先执行括号内的表达式。a=4*5=20 a*2=40 表达式a=4*5,a*2的值是40,且a的值是20 a+6=20+6=26 逗号运算符,最后一个表达式的值就是整个表达式的值。表达式(a=4*5,a*2),a+6的值是26。

C语言问题谢谢
x < y ,因为不成立所以条件为假 (false 也就是 0), 然后 0 < 4成立,条件为真,所以输出结果为1.备注:这个题目考察的问题点实际上就是云算符的优先级 和 结合规则,如果能熟练掌握,其实很简单的,加油。以上是我对这道题目的解析,如果对你有帮助,请采纳一下,谢谢。

相似回答