关于#c语言#的问题,请各位专家解答!

代码无法运行

#include
#include
int main()
{
    int  i, b, a, c;
    int sum = 0;
    for (a = 100; a<=999; a++)
    {
        c = a;
        for (i = 1; i <= 3; i++)
        {
            b = c % 10;
            c = c / 10;
            sum = b * b * b + sum;
        }
        if (sum == a)
        printf("%d", a);
    }
    return 0;
}

c = a;
后面加上
sum = 0;
每次循环前需要复位下。

参考GPT和自己的思路:

这段代码的问题在于变量sum没有在每次内层循环中清零,导致sum累加了上一次循环的结果,从而影响了结果的判断。解决方法是在每次内层循环前将sum变量赋值为0,即:

#include<stdio.h>
#include<math.h>
int main()
{
    int  i, b, a, c;
    int sum = 0;
    for (a = 100; a<=999; a++)
    {
        c = a;
        sum = 0; // 解决方案:每次循环前先清零
        for (i = 1; i <= 3; i++)
        {
            b = c % 10;
            c = c / 10;
            sum = b * b * b + sum;
        }
        if (sum == a)
            printf("%d", a);
    }
    return 0;
}

另外,代码中最后的输出语句应该添加换行符,即printf("%d\n", a);,方便阅读。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/216499
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:执行安装程序验证所需的初始设置失败(无法访问临时位置)解决方法!
  • 除此之外, 这篇博客: 【C语言程序设计】二分查找算法,折半查找算法!中的 程序代码如下: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    
    int binary_search(int key,int a[],int n) //自定义函数binary_search()
    
    {
    
        int low,high,mid,count=0,count1=0;
    
        low=0;
    
        high=n-1;
    
        while(low<high)    //査找范围不为0时执行循环体语句
    
        {
    
            count++;    //count记录査找次数
    
            mid=(low+high)/2;    //求中间位置
    
            if(key<a[mid])    //key小于中间值时
    
                high=mid-1;    //确定左子表范围
    
            else if(key>a[mid])    //key 大于中间值时
    
                low=mid+1;    //确定右子表范围
    
            else if(key==a[mid])    //当key等于中间值时,证明查找成功
    
            {
    
                printf("查找成功!\n 查找 %d 次!a[%d]=%d",count,mid,key);    //输出査找次数及所査找元素在数组中的位置
    
                count1++;    //count1记录查找成功次数
    
                break;
    
            }
    
        }
    
        if(count1==0)    //判断是否查找失敗
    
            printf("查找失敗!");    //査找失敗输出no found
    
        return 0;
    
    }
    
    int main()
    
    {
    
        int i,key,a[100],n;
    
        printf("请输入数组的长度:\n");
    
        scanf("%d",&n);    //输入数组元素个数
    
        printf("请输入数组元素:\n");
    
        for(i=0;i<n;i++)
    
            scanf("%d",&a[i]);    //输入有序数列到数组a中
    
        printf("请输入你想查找的元素:\n");
    
        scanf("%d",&key);    //输入要^找的关键字
    
        binary_search(key,a,n);    //调用自定义函数
    
        printf("\n");
    
        return 0;
    
    }

     

  • 您还可以看一下 王西猛老师的商超收银软件中的扫码识别商品编程解析课程中的 扫描枪扫码识别解析概述小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^