C语言学习笔记(浙大翁恺版)第四周

目录

4.1.1 循环

4.1.2 while循环

4.1.3 do-while循环

4.2.1 循环计算

4.2.2 猜数游戏

4.2.3 算平均值

 4.2.4 整数逆序


4.1.1 循环

假如给你一个整数,比如752。问你这是几位数,你可能会对其嗤之以鼻,这不是一眼就看出来了吗?那假如给计算机一个整数,让它来数这是几位,它一定很困惑,也不能一眼就看出来结果。它判断位数的方法是判断数的范围,比如752是属于【100~999】,所以是三位数。

所以我们需要一个数学方程式来从位数这个概念入手,写一个程序来计算位数。如:

int x,n=1;
scanf("%d",&x);
if(x>999)
{n=4;}
else if(x>99)
{n=3;}
else if(x>9)
{n=2;}
printf("%d",n);

于是这个程序就可以得出数字的1~4位数.但是有同学可能会这样写:

这样写描述了x和n的关系,那如果我输入一个1000,你会发现四条语句都会执行,这是为什么?原因就在于C语言是描述步骤的语言,它只会一步一步执行写好的程序,而这样的顺序无疑让1000这个数据满足了全部的条件,因此这样写是不正确的,可能有同学说那我倒着写,先判断是不是一位数,再依次往下,这样就不会发生同时满足多个条件的情况了,这样是可以,但按步骤执行,每次都需要重新判断,所以更好的写法就是上面代码框里的,从高位数开始判断(用大于号的话一般是从高位判断),这样还能省去判断上限的语句。

但是这个程序完美吗?明显并不,如果要判断大于4位数的,甚至是n位数,这样的程序显得力不从心。那怎么办?

如果给我们一个特别大的数,345675483723457564834568(瞎打的),人怎么得出它的位数呢?数数呗,一位一位地数它,数完一位删一位,肯定能数出来。那计算机能不能也像人一样数数呢?

让计算机把这个数不断除以10,然后计一次数,直到这个数为0,停止计数(个位数除以十就可以得0了)。

那结合之前学习过的条件语句,写如下程序:

 然而这样写下去依旧是很“笨”的写法。那这里就需要一个新方法来代替上面的一长串。于是

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值