关于枚举问题

本文介绍了C语言中的abc算法实现、常见编译与链接错误解决方案,以及如何处理反序数计算和对称平方数的查找。同时提到了定位和解决死循环的方法,强调了编程规范的重要性。
摘要由CSDN通过智能技术生成

一、abc算法

在这里插入图片描述

#include "cstdio"
int main(){
    int a,b,c;//定义名字为a,b,c的三个整型变量
    for(a=0;a<=9;++a){
//        a的初始值是0,当a满足a<=9的时候,可以执行循环体
//++自增的意思
        for(b=0;b<=9;++b){
            for(c=0;c<=9;++c){
                //abc+bcc=532
                //abc-->100*a+10*b+c
                if(100*a+10*b+c+100*b+10*c+c == 532){
                    printf("%d %d %d\n",a,b,c);
                    //%d是占位符 d是decimal 十进制整数
                }
            }

        }

    }
}

1.1对运行遇到的问题解决

程序错误:编译错误,链接错误,运行错误

1.2 编译错误:一般程序有语法问题,如少一个“;”

在这里插入图片描述

1.3链接错误:一般是函数名写错了,如main写成“man”

在这里插入图片描述

1.4当运行错误时,可进行打断点来进行调试,程序暂停观察监视窗口,点步过

在这里插入图片描述

二、反序数

在这里插入图片描述

#include "cstdio"
//int main(){
//    int a,b,c;//定义名字为a,b,c的三个整型变量
//    for(a=0;a<=9;++a){
        a的初始值是0,当a满足a<=9的时候,可以执行循环体
++自增的意思
//        for(b=0;b<=9;++b){
//            for(c=0;c<=9;++c){
//                //abc+bcc=532
//                //abc-->100*a+10*b+c
//                if(100*a+10*b+c+100*b+10*c+c == 532){
//                    printf("%d %d %d\n",a,b,c);
//                    //%d是占位符 d是decimal 十进制整数
//                }
//            }
//
//        }
//
//    }
//}
int Reverse(int n) {
    //名为Reverse的函数,有一个int参数,返回int类型
    int remain;
    int reverse = 0;
    while (true) {
        remain = n % 10;
        n = n / 10;
        reverse = reverse * 10 + remain;
        //当最后一次循环执行时,推出循环
        if (n == 0) {
            break;
        }

    }
    return reverse;//返回结果
}
int main(){
//    int n=1234;
//    int remain;
//    int reverse=0;
    while(n>0){
        remain=n%10;//4
        n=n/10;//1234->123->12
        reverse=reverse*10+remain;//0->4->43
//    while(true){
//        remain=n%10;
//        n =n/10;
//        reverse =reverse*10 +remain;
//        //当最后一次循环执行时,推出循环
//        if(n==0){
//            break;
//        }
    int a,b,c,d;
    for (a = 1; a <= 9; ++a) {
        for (b = 0; b <= 9; ++b) {
            for (c = 0; c <= 9; ++c) {
                for (d = 0; d <= 9; ++d) {
                    int n = 1000 * a + 100 * b + 10 * c + d;
                    if (n*9 == Reverse(n)) {
                        printf("%d\n",n);
                    }
                }
            }
        }
    }
}

三、对称平方数

在这里插入图片描述

#include<cstdio>
int Reverse(int n){
    int remain;//每一次余数
    int reverse=0;
    while(true){
        remain=n%10;
        reverse=reverse*10 +remain;
        n=n/10;
        if(n==0){
            break;
        }
    }
    return reverse;
}
int main(){
    int i=0;
    for(i=0;i<=256;++i){
        if(i*i== Reverse(i*i)){
            printf("%d\n",i);
        }
    }

}

四、定位死循环问题

在这里插入图片描述

出现这种情况说明是死循环,占用很大的cpu。
如果解决:可用任务管理器查看
出现死循环时,检查入口,break的地方。
c语言中0代表假,也可打开断点进行调试。
编程规范1. if(0==n){}不省略{}

总结

人生的意义于我而言在于追求卓越。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值