C语言_0211笔记_while与do-while/循环计数/范围随机数/数的分解

本文介绍了C语言中的循环类型,包括for、while和do-while循环,以及它们在计算、游戏和数值处理中的应用。强调了循环条件的重要性,避免死循环,并展示了如何生成随机数和计算平均数。此外,还讨论了如何分解整数及解决相关问题的代码示例。
摘要由CSDN通过智能技术生成

4.1.1 循环

4.1.2 while循环

4.1.3 do-while循环

4.2.1 循环计算

4.2.2 猜数游戏

4.2.3 算平均值

4.2.4 整数逆序

知识点提炼

只用if不用else会怎么样?

  • 这样写描述了x和n的关系,那如果我输入一个1000,你会发现四条语句都会执行,这是为什么?原因就在于C语言是描述步骤的语言,它只会一步一步执行写好的程序,而这样的顺序无疑让1000这个数据满足了全部的条件,因此这样写是不正确的。

  • 从高位数开始判断(用大于号的话一般是从高位判断),这样还能省去判断上限的语句。

while循环

  • 当,满足条件时,会不断地重复循环体内的语句。

  • if和while的区别仅仅在于,语句执行一次还是多次而如果不满足条件,语句一句也不会执行。因此条件是很重要的,如果不给程序开始循环的条件会使语句无法执行,如果不给让其值自变的语句可能会使循环无法退出。也就是说,不想要一个死循环的话,循环体内要有改变条件的机会。 while(1)

do-while循环

  • 先做事情,做完了再看是否继续:在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足结束。

do
{
    printf("输入一个数字: ");
    scanf("%lf", &number);
    sum += number;  
}
while(number != 0.0) ;( 👈 注意)

计数循环

  • 对于计数循环,计数变量的初始值while的判断条件以及计数变量什么时候自增,这三个问题息息相关,一定要做好测试,梳理逻辑。

一定范围内生成随机数

  • rand():产生一个随机整数;

#include <stdlib.h>
#include <time.h>
int main(){
       srand(time(0));
       int a=rand();//随机产生一个数
       a=a%100;//得到一百以内的数

}
  • 比如7684%100=34,任何大于0的数%100之后就只能剩下0~99,因此再加上1之后,就可以获得0~100的数字。而且100以内的数字,最多只要猜7次

  • 一个数%100,可以得到他的末尾两位数。

未知位数整数的分解

  • 分析:由于不确定位数,那么只能从各个位上面取,取一位,消一位。

验证

  • 通过输入不同特殊的数据来验证

  • 在程序的适当位置插入printf,提交的时候调试的句子要注释掉。

项目学习记录

0211判断几位数

int x;
int n=0;
scanf("%d",&x);
n++;
x/=10;
while(x>0)
{
    n++;
    x/=10;
}
printf("%d\n",n);
——————————————————————————————————————
#include <stdio.h>
    int main(){
        int x;
        int n=0;
        scanf("%d",&x);
        while(x!=0)
        {
            x/=10;
            n++;
        }
        printf("%d\n",n);
    }
//该程序对0无法正确读出0是一位数

0211算术平均数

#include <stdio.h>
    int main(){
        int num;
        int n=0,sum=0;
        while(1)
        {
            scanf("%d",&num);
            if(num==-1)
            {
                break;
            }    
            sum+=num;
            n++; 
        }
        printf("总和:%d\n",sum);
        printf("%d个数\n",n);
        printf("平均:%d",sum/n);
        return 0;
    }
printf("平均:%d",sum/n);
  • 由于sum和n都是正整数,只能用%d,用%f会输出0.000000

  • 解决办法:

printf("平均: %f",1.0*sum/n);

代码优化版:

0211log2X的函数

  • 计算X是2的几次方,每次都除以2,然后计数

  • 小套路:计算之前先保存原始的值,后面可能有用

0211猜数游戏

#include <stdio.h>
    int main(){
        const int num=68;
        int x,count=0;
        do{
            scanf("%d",&x); 
            count ++;
            if(x<68)
                printf("小\n");
            else if(x>68)
                printf("大\n");            
        }
        while(x!=num);
//        while(x!=num){
//            scanf("%d",&x); 
//            if(x<68)
//                printf("小\n");
//            else if(x>68)
//                printf("大\n");
//            count ++;
//        }
        printf("一共猜了%d次",count);
        return 0;
    }

0211整数的分解

#include <stdio.h>
    int main(){
        int num,sum;
        scanf("%d",&num);
        while(num!=0)
        {
            printf("%d\t",num%10);
            sum+=num%10;
            num/=10;
        }
        printf("%d",sum);
        return 0;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值