循环练习题 c语言

1.输入一个整数,判断是否是对称数,如果是,输出yes,否则输出no。

例如:12321是对称数,输出Yes;124不是对称数,输出No
思路:

  • 第一步:把数字逆置(124变成421)
  • 第二步:判断
#include 
//判断一个数是否是对称数
int main() {
    int a,b=0,backup_a;
    scanf("%d",&a);//读取一个整数a
    backup_a=a;//把a的值备份
    while(a){
        b=b*10+a%10;//43 a%10的值是3,第一次b=3;第二次b=3*10+4=43
        a=a/10;
    }
    if(b==backup_a){
        printf("Yes\n");
    } else{
        printf("No\n");
    }
    return 0;
}

2.求n的阶乘

#include 
//求n!
//while循环
//int main() {
//    int n,Factorial;
//    scanf("%d",&n);
//    Factorial=n;
//    while(n>1){
//        n-=1;//初始值n=3,n=2,Factorial=3*2;n=1,Factorial=3*2*1
//        Factorial*=n;
//    }
//    printf("%d\n",Factorial);
//    return 0;
//}
//for循环
int main() {
    int i,n,Factorial;
    scanf("%d",&n);
    Factorial=1;
    for(int i=1;i<=n;i++){
        Factorial*=i;
    }
    printf("%d\n",Factorial);
    return 0;
}

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

思路:10元、5元、2元、1元的票子数量分别是:
a,b,c,d
a+b+c+d=40 && 10a+5b+2c+1d=100

#include 
//换钞票
int main(){
    int count=0;
    int a,b,c,d;
    for(a=1;a<=10;a++){
        for(b=1;b<=20;b++){
            for(c=1;c<=40;c++){
                for(d=1;d<=40;d++){
                    if(a+b+c+d==40 && 10*a+5*b+2*c+1*d==100){
                        count++;//换法加一
                    }
                }
            }
        }
    }
    printf("count=%d",count);
    return 0;
}

你可能感兴趣的:(c语言笔记,c语言,算法)