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可以得出位数。

 


 

阶乘

 

posted @ 2022-04-09 19:13  石绿  阅读(44)  评论(0)    收藏  举报