四:循环的例子
3.猜数
例一:猜数游戏
因为需要不断重复让用户猜,所以要用到循环
在实际写出程序前需要用文字来表明思路
核心重点是循环的条件
可是人往往会考虑循环终止的条件
文字表述:
1. 计算机随想一个数记录在number里
2.一个负责计次数的变量count初始化为0
3.让用户输入一个数字a
4.count(递增)加一
5.判断a和number的大小关系,a大就输出“大”,a小就输出“小”
6.如果a和number是不相等的(无论大小),回到第三步
7.否则程序输出“猜中”和次数,然后结束
程序实现:
srand(time(0));
int number = rand()%100+1;
int count = 0;
int a = 0;
printf("我已经想好了一个1到100之间的数。");
do {
printf("请猜这个1到100之间的数:");
scanf("%d",&a);
count ++;
if (a > number) {
printf("你猜的数大了");
} else if (a<number);{
printf("你猜的数小了");
}
} while (a ! = number);
printf("太好了,你用了%d次就猜中了答案。\n",count);
随机数:每次召唤srand()就得到一个随机的整数
%100:X%n的结果是[0,n-1]的一个整数(也就是得到一个100以内的数)
问:1.为什么选择do while循环呢?
因为题目要求,只有先进入循环在判断条件才会符合要求,即先执行在判断,而do while 循环正好符合
2.100以内的数最多猜几次才够?
最多猜七次。每次猜一半,至7次得到结果,原理是2的7次方是128,也就是说,100对半分7次小于1,所以必得到唯一的整数
4.整数求逆
整数的分解
一个整数是由一至多位数组成的,如何分解出整数各个位上的数字,然后加以计算
1.对一个整数做%10的操作,就得到了他的个位数;
2.对一个整数做/10的操作,就去掉了他的个位数;
3.然后对2的结果做%10,就得到原来数的十位数了;
.
.
.以此类推
例子:
题:输入一个整数,输出逆序的数
结尾的0处理
程序实现:
#include <studio.h>
int main()
{
int x;
scanf("%d",&x);
int digit;
int ret = 0;
while ( x>0 ) {
digit = x%10;
ret = ret*10+digit;
printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
x /= 10;
}
printf("%d",ret);
return 0 ;
}
运行结果
假设X=12345
但如果X=700呢?
想要输出的结果为007,代码应该为
int x;
x = 700
int digit;
while (x>0){
digit = x%10;
printf("%d",digit);
x/=10;
}
return 0;
这时结果就是007啦
五:判断和循环常见的错误
if语句常见的错误
1.忘了加大括号
所以永远在if和else后面加上大括号,即使当时后面只有一条语句
2.if后面的分号
加上分号后就代表一条语句,但如果是这样的
就代表分号前只有一条语句且那条语句什么也没有,就不会输出什么 ,所以分号不要乱加
3.错误使用==和=
if只要求()里的值是零或非零
这是错的
4.使人困惑的else