C++,数组的,关于区间的

可以帮我看看哪里有问题嘛,一直显示输出错误,输出0000000000,正确输出1000000000,还有一些其他的错误,不懂改哪里了

img

img

应该是因为没有判断为0,以及小于0的情况。

修改如下:


#include <iostream>
using namespace std;

int main(void){


    int n,m;
    cin>>n>>m;
    int a[10]={0};
    for(int i=n;i<=m;i++){
        int p=i;
        //cout<<"i="<<i;
        while(p!=0){ // 将p>0改为p!=0,以便可以计算小于0的数 
            int k=p%10;
            if(k<0){  // 这里获取到的每个数字,如果小于0,则将其转为对应的正数 
                k=-k;
            }
            a[k]++;
            p=p/10;
        }
        if(i==0){  // 判断为0的情况 
            a[i]++;
        }
        
    }
    
    for(int i=0;i<10;i++){
        cout<<a[i]<<" ";
    } 
    
    return 0;
    
} 



img

【以下回答由 GPT 生成】

在回答这个问题之前,我需要看到你的代码。可以将涉及这个问题的代码粘贴在这里吗?这样我才能帮助你找到问题和提供解决方案。



【相关推荐】



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

m和n可能小于0

这么改,供参考:

#include <iostream>
using namespace std;
int main()
{
    int i, n, m, p, a[10] = { 0 };
    cin >> n >> m;
    for (i = n; i <= m; i++) {
        p = i;
        if (i < 0)  p = -i;
        if (!p) {
            a[p]++;
            continue;
        }
        while (p) {
            a[p % 10]++;
            p /= 10;
        }
    }
    for (i = 0; i < 10; i++)
        cout << a[i] << " ";
    return 0;
}