可以帮我看看哪里有问题嘛,一直显示输出错误,输出0000000000,正确输出1000000000,还有一些其他的错误,不懂改哪里了
应该是因为没有判断为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;
}
【以下回答由 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;
}