
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没有什么关系式! 展开
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没有什么关系式! 展开
7个回答
展开全部
呵呵
从来没有看到过这种情况,for循环里面只可能有三个表达式,而且只可能出现二个冒号
他可以是这样的写法
for(int
i
=
0,j
=
1;
i
<=
10;
i++,j++)
一个表达式里面可能带多个参数
从来没有看到过这种情况,for循环里面只可能有三个表达式,而且只可能出现二个冒号
他可以是这样的写法
for(int
i
=
0,j
=
1;
i
<=
10;
i++,j++)
一个表达式里面可能带多个参数
展开全部
这个程序说的是3x+1问题,
循环是不知道何时终止的。
比如一个起始数字 5,接下来16,8,4,2,1
如果n>1只是一个终止条件的判断,只要还未到1,就继续这个循环。
而c不过是记录经过多少步才使得这个数变为1.
循环是不知道何时终止的。
比如一个起始数字 5,接下来16,8,4,2,1
如果n>1只是一个终止条件的判断,只要还未到1,就继续这个循环。
而c不过是记录经过多少步才使得这个数变为1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for循环中,for(表达式1;表达式二;表达式三),语法本身并没有表达式的约束。一般表达式一用来初始化,在循环前,会执行一次。表达式二用来做循环条件,若表达式为真,则进入循环,否则跳出循环。表达式三用来做循环变量的改变。比较常用的形式是for(i0;i<100;i++)。
就本题来看,是n>1用来做循环条件。
2. c在本题中是用来记录循环体执行次数的,输出c可以得到n计算的次数。
。。手打望采纳。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中间只是循环是否继续的判断条件,不要求必须是c。
最后输出c,是表示运算了多少次。
这个程序就是 你输入一个 数。如果对2取余=1,那么他就乘3再+1。
否则 这个数 除 2
直到这个数最后变成1。
在这个过程中,运算了多少回就是打印的值
最后输出c,是表示运算了多少次。
这个程序就是 你输入一个 数。如果对2取余=1,那么他就乘3再+1。
否则 这个数 除 2
直到这个数最后变成1。
在这个过程中,运算了多少回就是打印的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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?为假,结束循环,因此只运行了一次!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询