c语言练习题

准备记录一下自己不太会的c语言练习题,方便之后考研复习

学习的过程是从简单到难,所以写的代码也是从简单到复杂,使用的方法也不唯一

希望自己能坚持下去QAQ

目录

1、对称数

2、换钱


1、对称数

  Description

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

  Input

  一个整型数

  Output

  输出是yes,或者no

这个题我的思想是:输入的整数逆序过来和该整数相同,就是对称数

那么如何实现逆序呢,我用的方法是循环

下面是我的代码:

#include <stdio.h>

int main() {
    int x,y;
    scanf("%d",&x);
    int temp_x=x;//把原来的x存下来
    while(x){
        y=y*10+x%10;//把个位换成最高位,依次递减,实现逆序
        x/=10;//x逐渐降位
    }
    if(y==temp_x){
        printf("yes");
    }else{
        printf("no");
    }
}

2、换钱

  Description

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

  Input

  无输入

  Output

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

这个题我想的很复杂,结果实现起来很简单,就是通过循环

下面是我的代码:

#include <stdio.h>

int main() {
    int x,y,z,w;//表示100、5、2、1的张数
    int cnt=0;
    for(int x=1;x<=10;x++){
        for(int y=1;y<=20;y++){
            for(int z=1;z<=40;z++){
                for(int w=1;w<=40;w++){
                    if(x+y+z+w==40&&(x*10+y*5+z*2+w==100)){
                        cnt++;
                    }
                }
            }
        }
    }
    printf("%d",cnt);
}

持续更新up!up!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值