C语言程序设计CAP——C语言学习笔记(五) 上

5.1第三种循环

for循环

阶乘

• n! = 1×2×3×4×…×n
• 写一个程序,让用户输入n,然后计算输出n!
• 变量:
• 显然读⽤用户的输入需要一个int的n,然后计算的结果需要⽤用一个变量保存,可以是int的factor,在计算中需要有一个变量不断地从1递增到n,那可以是int的i

//while 循环
int n;

scanf("%d", &n);
int fact = 1;

int i = 1;
while ( i <= n ) {

    fact *= i;
    i++;
}

printf("%d!=%d\n", n, fact);

//for循环
int n;

scanf("%d", &n);
int fact = 1;

int i = 1;
for( i=1; i<=n; i++ ) {

    fact *= i;
  
}

printf("%d!=%d\n", n, fact);


for循环

for ( i=0; i<5; i=i+1 ) {
printf("%d", i);
}
for循环像一个计数循环:设定⼀一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进行调整,比如加1或者减1

for = 对于


• for ( count=10; count>0; count-- )
• 就读成:“对于一开始的count=10,当count>0时,重复做循环体,每一轮循环在做完循环体内语句后,使得count--。”

小套路


• 做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1

 try
• 1×1还是1,所以程序的循环不需要从1开始,那么改成从多少开始合适呢?这样修改之后,程序对所有的n都正确吗?这样的改动有价值吗?
• 除了可以从1乘到n来计算n!,还可以从n乘到1来计算吧?试试把循环换个方向来计算n。这时候,还需要循环控制变量i吗?

 for循环
for ( 初始动作; 条件; 每轮的动作 ) {
}
• for中的每一个表达式都是可以省略的for (; 条件; ) == while ( 条件 )

循环次数
• for ( i=0; i<n; i++ )
• 则循环的次数是n,而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始
还是从1开始,是判断i<n还是判断i<=n,对循环的次数,循环结束后变量的值都有影响

 Tips for loops
• 如果有固定次数,用for
• 如果必须执行一次,用do_while
• 其他情况用while

思考题:

1、利用循环变量来判断素数不好吗?

不好。 声明的变量调用的目的越单一越好,减少多处不同目的的调用造成的错误,也便于阅读理解; 使用循环变量需要在循环出口处再判断,可能执行无意义的循环,多次调用时效率低; isPrime值范围更小便于判断,循环变量和终点值的关系的判断更复杂。

2、1不是素数,代码怎么改?

把x=1,改成x=2可以实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值