c语言for循环的问题?

#include<stdio.h>intmain(){intn,c;scanf("%d",&n);for(c=0;n>1;c++){if(n%2==1)n=n*3+1;e... #include <stdio.h>
int main()
{
int n, c;
scanf("%d", &n);
for(c=0; n > 1; c++) {
if (n%2==1) n = n*3+1;
else n = n / 2;
}
printf("%d\n", c);
return 0;
}
问题:
1. 在for循环中:(c=0; n > 1; c++)为什么出现个n>1,括号里面不应该都是c吗?
2. 为什么最后输出的是c?这个c好像和n没有什么关系式!
展开
 我来答
创作者Oxnq85kBtE
2019-06-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:628万
展开全部
呵呵
从来没有看到过这种情况,for循环里面只可能有三个表达式,而且只可能出现二个冒号
他可以是这样的写法
for(int
i
=
0,j
=
1;
i
<=
10;
i++,j++)
一个表达式里面可能带多个参数
王勃啊
2014-12-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5015
采纳率:62%
帮助的人:4193万
展开全部
这个程序说的是3x+1问题,
循环是不知道何时终止的。
比如一个起始数字 5,接下来16,8,4,2,1

如果n>1只是一个终止条件的判断,只要还未到1,就继续这个循环。
而c不过是记录经过多少步才使得这个数变为1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天_涯明月
2014-12-19
知道答主
回答量:11
采纳率:0%
帮助的人:9602
展开全部
  1.     for循环中,for(表达式1;表达式二;表达式三),语法本身并没有表达式的约束。一般表达式一用来初始化,在循环前,会执行一次。表达式二用来做循环条件,若表达式为真,则进入循环,否则跳出循环。表达式三用来做循环变量的改变。比较常用的形式是for(i0;i<100;i++)。

           就本题来看,是n>1用来做循环条件。

  2.    c在本题中是用来记录循环体执行次数的,输出c可以得到n计算的次数。

。。手打望采纳。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3cb077d
2014-12-19 · TA获得超过122个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:8.7万
展开全部
中间只是循环是否继续的判断条件,不要求必须是c。

最后输出c,是表示运算了多少次。

这个程序就是 你输入一个 数。如果对2取余=1,那么他就乘3再+1。
否则 这个数 除 2

直到这个数最后变成1。

在这个过程中,运算了多少回就是打印的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2016-06-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6887万
展开全部
#include <stdio.h>
int main()
{
    int n, c;
    scanf("%d", &n);

    for(c=0; n > 1; c++) //循环的退出条件是n比1大,c只是记录循环次数
    {
        if (n%2==1) //n为奇数时
n = n*3+1; //n的变化
        else 
n = n / 2; //n为偶数时,n的变化
    }

    printf("%d\n", c);//输出循环次数!!
    return 0;
}
追问
c从零开始,最后输出不应该是c+1次循环码?
追答
for()循环特点,是每执行完一次循环体,必然会做一次c++
如:
当输入的n1?为假,结束循环,因此只运行了一次!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式