定义一个大小为10整型数组,可以包含0,1,2,3,4,5,6,7,8,9这十个数字的基本单位。
对于位数的问题就可以充分利用这个数组来解决。
题目:
在小于99999的数中找出既是平方数,又有两位数位相同的数。
程序
#include<stdio.h>
#include<math.h>
#define NUM 99999
int test(int num)
{
int i,j;
char a[10] = {0};
int t;
t=num;
while(num>0)
{
j=num%10;
a[j]+=1;
num=num/10;
} //这个循环是解析所有位数。并把位数存到数组中
for(i=0;i<10;i++)
{
if(a[i]==2){printf("%-8d",t);break;} //判断从0到9的位数是否有两位的。有则打印,无则跳过。
}
}
int main(void)
{
int i,j,m;
m=(int)sqrt(NUM);
for(i=1;i<m;i++)
{
j=i*i;
test(j);
}
getchar();
}
题目:
输入0到20的值,超出范围停止输入,并且按顺序无重复输出
程序:
#include<stdio.h>
#define NUM 21
int main(void)
{
int a[NUM]={0};
int x,i;
while(scanf("%d",&x),x>=0&&x<NUM) //逗号运算符的作用
{
a[x]++;
}
for(i=0;i<21;i++)
{
if (a[i]>0)printf("%d/n",i);
}
getchar(); //使在DEV编译器中窗口悬停
getchar(); //使在DEV编译器中窗口悬停
}