要求如下
本想着按照7-24参考别人的方法,利用 while(1)里写scanf的方式完成,代码如下:
#include
int main(){
int sum,n,o;
sum = 0;
while(1){
scanf("%d",&n);
if(n<=0){
return 0;//改为break则正确
}else if(n % 2 == 1){
sum += n;
}
}//whlie
printf(" %d",sum);
}
j结果最后不会输出sum,将return 0换为 break,结果正确。思考return 0是return给谁?while(1)利用的是scanf每次输入默认返回输入值个数,本意是用return 0 代替scanf的返回值,结果好像直接return 0 了main函数,因为跨考基础不是很扎实,过后再仔细查询一下。
7-27 兔子繁殖问题
#includeint main(){ int t,i = 1,mon = 2,sum = 1,N; scanf("%d",&N); if(N==1){ printf("1"); }else { while(sum < N){ mon++; t = i; i = sum; sum = sum +t; } printf("%d",mon); } return 0; }
重点:兔子的个数变化是斐波那契数列,及f3=f2+f1;本月数量等于前两月兔子数量之和。
仔细看后,发现此公式虽然可以在PTA上满分,但还是不符合题意,输入2/3的话,输出结果为3/4,即最开始仅考虑得分点N=1的情况不充分,因为此处考虑的是兔子总数。



