c语言 for循环的问题(猴子吃)桃

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:53:37
#include"math.h"
#include"stdio.h"
main()
{
int i,sum=1;
printf("it has 1 peach at the 10th day.\n");
for(i=9;i>=1;i--)
{
sum=(sum+1)*2;
printf("it has %d peaches at the %dth day.\n",sum,i);
}
printf("the monkey picked %d peaches.\n",sum);
getch();
}编译运行 得sum=1534 若是将最后printf函数得“,sum”去掉 得2870 系统怎么得到得这个数?

去掉',sum',得到的结果是不确定的。printf的参数个数是不定的。
你把sum去掉了,编译器无法检查出这个错误。但又要输出一个整数。就把内存中某一个值给输出了。

去掉的话
最后一句话不就是:the monkey picked 0 peaches.么???
你没有给%d 赋值啊??

你要说的是什么意思????
一头雾水!

病况难明。。

若去掉“,sum”,结果是不确定的。
我这样试了一下,得的就是 2367460
printf函数规则:

printf("%d",sum); /*对的*/
printf("%d",sum,i);/*编译译是通不过的*/
printf("%d %d",sum);/*编译可通过,但后面一个%d由于没有对应
的输出成员,则编译器会给出一个随机值

我自己用递归做了一下:

#include<stdio.h>
#define N 10
#define FINAL 1
float MonkeyEat(int);
int main(void)
{
float result;
result = MonkeyEat(1);
printf(" result = %f\n",result);
return 0;
}

float MonkeyEat(int i)
{
if(i == N)
return (FINAL + 1) * 2;
else
{
return (MonkeyEat(++i) + 1) * 2;
}

}

printf("%d %d",sum);/*编译可通过,但后面一个%d由于没有对应