c语言 for循环次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 for循环次数相关的知识,希望对你有一定的参考价值。
如果有了输入数据,就知道循环次数,那么可以先把次数计算出来:int
n;
scanf("%d",&x);
n
=
f(x);
for
(i=0;i<n;i++)
....
如果有了输入数据,还不知道循环次数,例如,循环次数由某种动态条件控制。我们可以让它作无限循环,但加入终止条件判断:
while
(1)
....循环...;
终止判据计算;
if
(终止条件达到)
break;
参考技术A #include<stdio.h>
void
main()
int
i,j;
int
m=0,n=0;
long
sum=0;
for(i=1;i<=20;i++)
m=m+1;
for(j=1;j<=3;j++)
n=n+1;
sum=sum+(i+1)*(i+1)*(j+2);
*/内循环语句多的时候,就不能省略大括号了/*
printf("sum
is:%ld\n",sum);
printf("外循环的次数:%d,内循环的次数:%d\n",m,n);
参考技术B 多于一行的循环体要用大括号
#include<stdio.h>
void
main()
int
i,j;
int
m=0,n=0;
long
sum=0;
for(i=1;i<=20;i++)
m=m+1;
for(j=1;j<=3;j++)
n=n+1;
sum=sum+(i+1)*(i+1)*(j+2);
printf("sum
is:%ld\n",sum);
printf("外循环的次数:%d,内循环的次数:%d\n",m,n);
关于c语言循环与布尔运算的问题
#include <stdio.h>
int main(void)
long num;
long sum = 0L;
_Bool input_is_good;
printf("Please enter an integer to be summed ");
printf("(q to quit): ");
input_is_good = (scanf_s("%ld", &num) == 1);
getchar();
while (input_is_good)
sum = sum + num;
printf("Please enter next integer (q to quit): ");
input_is_good = (scanf_s("%ld", &num) == 1);
getchar();
printf("Those integers sum to %ld", sum);
getchar();
return 0;
为什么这个代码不论输入1还是0还是2等整数,都无法跳出循环?
而用下面的这个,可以正常运行。
#include <stdio.h>
int main(void)
long num;
long sum = 0L;
_Bool input_is_good;
printf("Please enter an integer to be summed ");
printf("(q to quit): ");
scanf_s("%ld", &num);
getchar();
input_is_good = num == 1;
while (input_is_good)
sum = sum + num;
printf("Please enter next integer (q to quit): ");
scanf_s("%ld", &num);
getchar();
input_is_good = num == 1;
printf("Those integers sum to %ld", sum);
getchar();
return 0;
P.S. 我用的是vs2017
还有为什么输入字母就能结束循环?
input_is_good = (scanf_s("%ld", &num) == 1);
只要scanf_s完成一次成功的整形输入,input_is_good就为true
MSDN对scanf_s返回值的解释:
Returns the number of fields successfully converted and assigned; the return
value does not include fields that were read but not assigned. A return value of
0 indicates that no fields were assigned.也就是只有一个变量都没有赋值就才会返回0,只有这种情况才会使得input_is_good 为假
那为什么第一种不论输什么数字都在循环里,而第二种输入非1的数字就能跳出循环,这两种不应该本质上是一样的吗?
追答仔细读我的回答,您会发现本质差很多。我的回答对于您的这个问题来说已经足够到位了,当然,如果您对我的回答的理解有问题的话请务必留言。不一定能马上解答,但是一定会回答的。
追问为什么 input_is_good = (scanf_s("%ld", &num) == 1); 读取scanf的返回值,
而 scanf_s("%ld", &num);
getchar();
input_is_good = num == 1; 读取的就是输入的参数。
十分感谢!
如图
以上是关于c语言 for循环次数的主要内容,如果未能解决你的问题,请参考以下文章
c语言如何查看多重for循环一共循环了多少次,看看输出了多少行?