用c语言组合排列实现0-10的奇数问题——原创

举报
泽宇-Li 发表于 2022/07/16 10:31:11 2022/07/16
【摘要】 如何实现0-10所能组成的奇数个数 和第10位奇数是多少以及奇数的总个数是多少?程序分析:我们可以从问题中不难得出 这个问题属于排列组合的问题 比如设这个数为:a1a2a3a4a5a6a7a8a9a10,a1-a10标识这个数的某位的数值 如果最后一个数字为奇数则得出此数字一定是奇数  不管几位是什么数字 如果最后一位是偶数 那么此数字一定是偶数a1-a10可以取0-9这十个数字 首位数字不...

如何实现0-10所能组成的奇数个数 和第10位奇数是多少以及奇数的总个数是多少?

程序分析:

我们可以从问题中不难得出 这个问题属于排列组合的问题 比如设这个数为:a1a2a3a4a5a6a7a8a9a10,a1-a10标识这个数的某位的数值 如果最后一个数字为奇数则得出此数字一定是奇数  不管几位是什么数字 如果最后一位是偶数 那么此数字一定是偶数

a1-a10可以取0-9这十个数字 首位数字不为0的个数。

从该数为1位数时到该数为10位数时开始统计奇数个数是多少比如:

1:当只有一位数时也就是该数的最后一位为个数  奇数的个数为1 3 5 7 9 一共5个奇数

2:当该数为俩位时 奇数个数为5*9=45

3:当该数字为三位数字时候 数字个数为:5*10*9=150

4:当该数字为8位数时个数就是5*10*10*10*10*10*10*9=45000000(依次为最后一位到第一位)

以此类推求出到8位数的个数是多少

思路:

首先我们在main函数里定义一个数组指针的指针和int型的证书argc

定义long型初始化为5的表示只有一位数字的奇数个数为5 intj循环从2开始 到10结束

If条件判断当函数j<=2时为1-9的数如果j小于等于2则输出s累乘9的结果else是大于2的情况累乘10的结果每循环一次输出一次 最后跳出循环printf输出奇数的个数为从当前j-1指针前移得出的累乘结果 并输出奇数个数为sum

最后打印出

实验总结:

本次代码实验的整体思路是排列组合的问题 推导出集中的可能性值从而输出相应的结果问题每次实验前都可以先画一个思维导图来判断程序的问题和走向

代码:

#include<stdio.h>

int main(int agrc, char*agrv[])

{

    long sum = 5, s = 5;

    int j;

    for (j = 2; j <= 10; j++)

    {    

        printf("%d位数为奇数的个数%ld\n", j-1, s);

        if (j <= 2)

            s *= 9;

        else

            s *= 10;

        sum += s;    

    }

    printf("%d位数为奇数的个数%ld\n", j-1, s);

printf("奇数的总个数为:%ld\n", sum);

return 0;

}

微信截图_20220703152211.png

结果截图:

微信截图_20220703152220.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。