打表题,基本不需要想。打表后进行查询输出即可。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 10000+5
int array[maxn][10];
// 打表查询
void make_array()
{
memset(array,0,sizeof(array));
for(int i = 1; i < maxn; i++)
{
for(int j = 0; j < 10; j++) array[i][j] = array[i-1][j];
int temp = i;
while(temp)
{
array[i][temp%10]++;
temp /= 10;
}
}
}
int main()
{
make_array();
int T;
scanf("%d", &T);
while(T--)
{
int n;
scanf("%d", &n);
// 注意输出格式
for(int i = 0; i < 9; i++) printf("%d ", array[n][i]);
printf("%d\n", array[n][9]);
}
return 0;
}
本文介绍了一道简单的C语言编程题目,通过预先计算并存储数据(打表)来快速查询输出结果。主要讲解了如何使用二维数组存储从1到10000内每个数字中各数字出现的次数,并通过循环遍历实现这一过程。
255

被折叠的 条评论
为什么被折叠?



