总结1写程序注意什么是终止条件while一般写在最外面
2如果是奇数那么n%2==1;
3是count 是作为计数器
4实际上这个是错误的因为数据会溢出
#include <stdio.h>
int main(){
int n;
int count=0;
scanf("%d",&n);
while(n>1){
if(n%2==1){
n=n*3+1;
}else{
n/=2;
}
count++;
}
printf("%d\n",count);
return 0;
}
5注意要差错比如这个程序是不对的要打入987654321
结果则是1;下面进行检错可以知道第一次输出的在每次循环后打印n得到值,n是个负值所以循环直接结束
得到负值的原因是因为乘法溢出了
解决方法是将Int改为double应为double的最大值远远大于Int类型的最大值
或者
应为当n为奇数的时候那么3n+1一定是偶数可以直接在之后除以2
这样可以一定程度上防止乘法溢出;
#include <stdio.h>
int main(){
int n;
int count=0;
scanf("%d",&n);
while(n>1){
if(n%2==1){
n=n*3+1;
printf("%d\n",n);
}else{
n/=2;
printf("%d\n",n);
}
count++;
}
printf("%d\n",count);
return 0;
}