C语言编写角谷猜想,错代码什么意思??

来源:百度知道 编辑:UC知道 时间:2024/06/10 06:05:00
/*******************************************************************
编号0260:验证角谷猜想。
问题:从1到n的任何一个自然数, 只要对n反复进行下列两种运算:

1)如果n是偶数, 就除以2 ;

2)如果n是奇数, 就乘以3加1,

最后的结果总是1。
*******************************************************************/
#include<stdio.h>
main()
{
int n;
printf("输入一个正整数:");
scanf("%d",n)
while(n>0)
{
if(n%2==0)
{
n%=2;
printf("%d\n",n);
}
else
printf("%d\n",3n+1);
}
}

bh0260.c
E:\c++ 6.0\100题\bh0260.c(25) : error C2059: syntax error : 'bad suffix on number'
E:\c++ 6.0\100题\bh0260.c(25) : error C2146: syntax error : missing ')' before identifier 'n'
E:\c++ 6.0\100题\bh0260.c(25) : error C2059: syntax error : ')'
执行 cl.exe 时出错.

bh0260.obj -

E:\c++ 6.0\100题\bh0260.c(25) : error C2059: syntax error : 'bad suffix on number' 错误的下标数字用法

我晕。。。问题出在3n+1....
是3*n+1...而且,根据你提供的算法,这里应该还得赋值,
main()
{
int n;
printf("输入一个正整数:");
scanf("%d",n) ; /////这里你忘加了分号
while(n>0)
{
if(n%2==0)
{
n/=2; /////// 这里要改成n/=2
printf("%d\n",n);
}
else
{
n=3*n+1; /////////这里得是赋值语句
printf("%d\n",n); ////括号里的变量改为n
}
}
}
算法给你改好了,自己调试吧

//////////////////////////////

不好意思,还有个地方漏改了,
while(n>1)改成这个

n/=2和n%=2有什么区别?一个是除法一个是取余运算符,怎么会一样呢,这个其实是一种简写方法,完全分别等同于n=n/2;和n=n%2,就是这个意思。

////////////////////////////////

算了我把完整的代码贴给你好了,再运行不了就见鬼了。。
#include <stdio.h>
main()
{
int n;
printf("输入一个正整数:\n");
scanf("%d",&n) ; /////这里你忘加了分号