4.1+4.2 循环
数位数
int x; int n=0; scanf("%d",x); n++; x/=10; while(x>0) { n++; x/=10; }
do-whie循环
进入循环的时候不做检查,而是执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环
do { //循环语句 }while();
wile和do-while
,区别是在循环体执行结束的时候才来判断条件。也就是说,循环都会执行至少一遍,在判断条件。与while循环相同,条件满足时执行循环,条件不满足时结束循环。
没有满足条件的语句。
验证:测试程序常使用一些边界数据。
循环计算
计算之前先保存原始的值,后面可能有用
int x,ret=0; scanf("%d",&x); int t=x; while(x>1) { x/=2; ret++; } printf("log2 of %d is %d",t,ret);
计数循环
int count =100; while (count>=0) { count--; printf("%d\n",count); } printf("发射!\n");
//
执行多少次?101。停下来的时候输出是0马?0.循环结束后count是多少?-1
小套路:如果要循环模拟运行一个很大次数的循环,可以模拟较少的循环次数,作出推断。
猜数 游戏

核心重心是循环的条件。
算法:1、随机一个数num
2、初始化计数count=0
3、用户输入a
4、判断a num大小关系。a大就输出大,小就输出小。
5、如果a和num不相等,则回到第3步
6、否则程序输出猜中和次数,结束
随机数:rand(),但是给的数字很大,可以通过%100得到一个一百以内的数字。
srand(time(0)); int number rand()%100+1; int count =0; int a=0; printf("想好了"); do{ printf("猜数:"); scanf("%d",&a); count++; if(a>number) { printf("大了"); }else if(a<number){ printf("小了"); } }while(a!=number); printf("%d次猜对\n",count);
算平均数

算法:1、初始化sum=0 count=0
2、读入number
3、number不是-1则加入sum,并count+1;回到第二步
4、如果number是-1,则计算并输出sum count。注意换成浮点数。
int number,sum=0,count=0; scanf("%d",&number); do { sum+=number; count++; }while(number !=-1); printf("%f\n",1.0*sum/count);
整数的分解
一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算。%10 %100可以得出位数。
阶乘


浙公网安备 33010602011771号