整数分解

一、猜数游戏,让计算机来想一个数,然后让用户来猜,用户每输入一个数,就告诉它是大了还是小了
直到用户猜中为止,最后还要告诉用户它猜了多少次
思路:
核心是循环的条件,人们往往会考虑循环终止的条件
1.计算机随机想一个数,记在变量number里
2.一个负责计数的变量count初始化为0
3.让用户输入一个数字a
4.count递增(加一)
5.判断a和number的大小关系,如果a大,就输出”大“,如果a小,就输出”小“
6.如果a和number是不相等的(无论大还是小),程序转回到第3步
7.否则,程序输出“猜中”和次数,然后结束
因此,循环条件是a和number不相等

int main()
{
    //猜数游戏
    srand(time(0));
    int number=rand()%100+1;
    //因为随机数所给的数字非常大,所以要经过一定的处理才可以使用
    //x%n的结果是[0,n-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);
    return 0;
}

二、随机数
每次召唤rand()就得到一个随机的整数
使用随机数,在前面除了要有#include <stdio.h>还要多有两个东西
即#include <stdlib.h>和#include <time.h>

int main()
{
    //随
    srand(time(0));//使用随机数要加这句话,目的是让我们的随机数看上去真的像随机数一样
    int a=rand();
    printf("%d",a);
    return 0;
}

三、算平均数
让用户输入一系列的正整数,最后输入-1表示程序结束
然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数
思路:变量,算法,流程图,程序
变量:
一个记录读到的整数的变量
只要每读到一个数,就把它加到一个累加的变量里,到全部数据读完,再拿它去除读到的数的个数就可以了
一个变量记录累加的结果,一个变量记录读到的数的个数
算法:
1.初始化变量sum和count为0;
2.读入number;
3.如果number不是-1,则将number加入sum,并将count加1,回到2
4.如果number是-1,则计算和打印出sum/count(注意换成浮点来计算)

int main()
{
    //算平均数
    int number;
    int sum=0;
    int count=0;
    scanf("%d",&number);
    while(number!=-1){
        sum+=number;
        count++;
        scanf("%d",&number);
    }
    printf("%f\n",1.0*sum/count);//为了转换成浮点,因此乘了1.0


    return 0;
}

四、整数的分解
1.一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算
2.对一个整数做%10的操作,就得到它的个位数
3.对一个整数做/10的操作,就去掉了它的个位数
4.然后再对2的结果做%10,就得到原来的十位数了
……
以此类推

数的逆序 :
输入一个正整数,输出逆序的数
结尾的0的处理

int main()
{
    //数的逆序
    int x;
    scanf("%d",&x);
    int digit;//取出每一位
    int ret=0;//显示结果,显示结果,如700,变为7,是一个新的数,所以应有一个变量保存结果
    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;
}
int main()
{
    //数的逆序并显示每一位
    int x;
    scanf("%d",&x);
    int digit;//取出每一位
    while(x>0){
    digit=x%10;
    printf("%d",digit);
    x/=10;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值