第1个回答 2009-05-02
#include<stdio.h>
#include<string.h>
void change(long int n,char *a) //将十进制转换成二进制给数组a
{
long int i=0;
while(n)
{
a[i]=n%2+48;
n=n/2;
i++;
}
a[i]=0;
}
void copy(char *a,char *b) //倒置数组a给b
{
int n,i=0,j;
n=strlen(a);
while(n)
{
b[i++]=a[--n];
}
b[i]='\0';
}
void main()
{
long int n;
char a[20],b[20];
for(n=1;n<=10000;n++)
{
change(n,a);
copy(a,b);
if(!strcmp(a,b)) //比较数组a,b
printf("%ld\n",n);
}
}本回答被提问者采纳
第2个回答 2019-02-02
#include<stdio.h>
#include<string.h>
void
change(long
int
n,char
*a)
//将十进制转换成二进制给数组a
{
long
int
i=0;
while(n)
{
a[i]=n%2+48;
n=n/2;
i++;
}
a[i]=0;
}
void
copy(char
*a,char
*b)
//倒置数组a给b
{
int
n,i=0,j;
n=strlen(a);
while(n)
{
b[i++]=a[--n];
}
b[i]='\0';
}
void
main()
{
long
int
n;
char
a[20],b[20];
for(n=1;n<=10000;n++)
{
change(n,a);
copy(a,b);
if(!strcmp(a,b))
//比较数组a,b
printf("%ld\n",n);
}
}
第3个回答 2009-05-02
问题分析与算法设计
可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:
(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)
的i、j、k、l即构成N。
*程序说明与注释
#include<stdio.h>
int main()
{
int i;
for(i=1002;i<1111;i++) /*穷举四位数可能的值*/
if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)
/*判断反序数是否是原整数的9倍*/
printf("The number satisfied stats condition is: %d\n",i);
/*若是则输出*/
}