深刻体悟细节\优化在代码中的重要性

本文讲述了如何使用C++编程实现Armstrong数检测,指出了原始代码中的错误,并提出优化后的while循环判断条件,强调了程序设计中的细节处理和优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
    int m = 0,k =0, a = 0;
    int t = 0;//输入数值变量
    double result = 0;
    printf("请输入一个数值\n");
    scanf("%d", &t);
    a = t; //保存数值
    while (t != 0)//用while 循环求位数
    {
        t = t / 10;
        m++;
    }
    a = t;//保存数值  ❌
    while (a % 10 != 0)
    {
        k = a % 10;
        result = result + pow(k, m);//求和
        a = a/ 10;
    }

    if (a == result)//判断是否相等
    {
        printf("是Armstrong");
    }
    else
    {
        printf("不是Armstrong");
    }
    return 0;
}


#include<stdio.h>

#include<math.h>

int main()

    int n,m = 0,p = 0,x,y;

    printf("请输入一个数字: "); //最大能支持9位数字的判断 

    scanf("%d",&n);

    y = n;

    while(y > 0) //使用while循环判断数字的位数,进而判断数字的次幂 

 { 

        y = y / 10;

        p++;

    }

    y = n;

    while(n > 0) //使用while循环进行次幂运算 

    {

        x = n % 10;

        m+= pow(x,p);

        n = n / 10;

    }

    if(y == m) //比较次幂运算值和原始值是否相等 

 { 

     printf("这个数是armstrong数");

    }

    else

    {

     printf("这个数不是armstrong数");

 }

    return 0;

}


就是从这样一道看起来很简单的题目中体悟到了许多细节:

①在进行过第一部分的运算过后,我们输入的t\y的值已经改变为计算所得到的结果 不能直接用现在的t\y进行下一步计算  

这就是第一个代码错误的地方  因此很关键的一步就是y=n 第一次对y运算第二次才对n运算

②优化  本题中while循环内的判断条件 可进行优化:

很明显>0的这种写法更加简单 也便于我们自我检验计算  (while(n))也是一种非常简单的写法!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山野潮声

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

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

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

打赏作者

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

抵扣说明:

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

余额充值