4 条题解
-
4
用数组去接收数字,数组下标代表每个个位数字,用数组的值代表每个数字出现的个数(来自csdn) #include <stdio.h> int main( ) { int i,M,N,b; int a[10]={0}; scanf("%d %d",&M,&N); for(i=M,i<=N;i++) { int num=i;//用变量num去代表i,不然进入while后i的值最终会变成0; while(num>0) { b=num%10; num/=10; a[b]++; } } for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }
-
1
我这个更好理解一些,不过写的话还是按照下面曹操学长写的
#include <stdio.h>
int main () {
int m, n;
scanf("%d %d", &m, &n);
int a[10] = {0};
for (int i = m; i <= n; i++) {
int k = i;
while (k > 0) {
int b = k % 10;
if (b == 0) {
a[0]++;
} else if (b == 1) {
a[1]++;
} else if (b == 2) {
a[2]++;
} else if (b == 3) {
a[3]++;
} else if (b == 4) {
a[4]++;
} else if (b == 5) {
a[5]++;
} else if (b == 6) {
a[6]++;
} else if (b == 7) {
a[7]++;
} else if (b == 8) {
a[8]++;
} else if (b == 9) {
a[9]++;
}
k /= 10;
}
}
for (int k = 0; k <= 9; k++) {
printf("%d ", a[k]);
}
return 0;
}
-
0
#include<stdio.h> #include<iostream> const int N=10; int f[N]; using namespace std; int main() { int m,n; cin>>m>>n; for(int i=m;i<=n;i++) { while(i>0) { int t=i%10; f[t]++; i=i/10; } } for(int i=0;i<10;i++) { cout<<f[i]<<" "; } return 0; } 错误在于我用i直接去操作,你应该赋值一个临时变量去操作,在循环次数的控制上应该用N-M这个条件,这个题这样写侥幸ac,请看下面ALEX大佬写的控制条件🚀️
- 1
信息
- ID
- 101
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 522
- 已通过
- 238
- 上传者