C语言王道练习题第三周三题

文章讲述了三个编程题目:判断给定整数是否对称,使用循环计算阶乘,以及解决兑换100元人民币成不同面额票子的问题。每个问题都涉及到基础的算法和条件控制。
摘要由CSDN通过智能技术生成

目录

第一题---照镜子

第二题---阶乘

第三题---换票子


第一题---照镜子

Description
输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,
不用考虑负值;
例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出 no
Input
一个整型数
Output
输出是yes,或者no

思路:

       从右向左取出整数的每一个数字,并以十进制的形式保存,得到数字,再将得到的数字与整数进行比较。

代码:

#include<stdio.h>
int main()
{
//Description
//输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,
//不用考虑负值;
//例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出 no
//Input
//一个整型数
//Output
//输出是yes,或者no
    int a,b,tmp;
    scanf("%d",&a);
    tmp = a;
    while(a){
        b = b * 10 + a % 10;
        a = a/10;
    }
    if(b == tmp){
        printf("yes");
    }else{
        printf("no");
    }
    return 0;
}

第二题---阶乘

Description

利用 while或者for循环计算 n!的值。

提示:n! =1*2*3 ...* n

Input

一个正整数n, 1≤n≤10。

Output

n!的值。

代码:

#include<stdio.h>
int main()
{
//    Description
//    利用 while或者for循环计算 n!的值。
//    提示:n! =1*2*3 ...* n
//    Input
//    一个正整数n, 1≤n≤10。
//    Output
//    n!的值。
    int i,n,result = 1;
    scanf("%d",&n);
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    printf("%d\n",result);
    return 0;
}

第三题---换票子

Description

某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?

Input

无输入

Output

一个数,表示共有多少种换法

分析:

ten+five+two+one == 40且10*ten+5*five+2*two+1*one == 100的条件下,总数+1

注意:

范围的缩放

代码:

#include<stdio.h>
int main()
{
//    Description
//某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
//Input
//无输入
//Output
//一个数,表示共有多少种换法
    int ten,five,two,one,total = 0;
    for (int ten = 1; ten <= 10 ; ten++) {  //100/10=10
        for (int five = 1; five <= 20  ;five++) {  //100/5=20
            for (int two = 1; two <= 40; two++) {
                for (int one = 1; one <= 40 ; one++) {
                    if(ten+five+two+one == 40 && 10 * ten + 5 * five + 2 * two + one == 100){
                        total++;
                    }
                }
            }
        }
    }
    printf("total=%d",total);
    return 0;
}

结果:34

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂小羊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值