求看看这段代码有啥问题

c语言没学好

你如果是想通过输入n传给hailstone函数,程序这样写:
#include<stdio.h>
int hailstone(int n){

int length=1;
while(1<n){ (n%2)? n=3*n+1 : n/=2; length++;}
return length;
}
int main(){
int n=0, res=0;
scanf("%d", &n);
res = hailstone(n);
printf("res=%d", res);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-09-05
scanf那句去掉
while那段我怀疑你是哪里输成中文字符了,我打了一遍后编译通过,你复制一下下面的代码再试一下

int hailstone(int n) {
int length = 1;
while (1 < n) {
(n % 2) ? n = 3 * n + 1 : n /= 2;
length++;
}
return length;
}本回答被网友采纳
第2个回答  2020-09-05
没搞懂, n是传入进来的参数, 你干嘛还要通过scanf来为其赋值?追问

那请问这样还报错是为啥

第3个回答  2020-09-06
报错写得很明白啊,左操作数必须为左值。
其实应该是你没注意运算符优先级。
n/=2加个括号可能就好了
而且这种应该写成n=n%2?3*n+1:n/2;
相似回答