用C语言输出一个5位数乘一个一位数等于5位数的反序

初学C++请教各位大神了

我这个程序输出所有满足条件的5位数,及其反序,请参考。

#include <stdio.h>
#include <tchar.h>

#define MIN_1_DIG_INTEGER 0
#define MAX_1_DIG_INTEGER 9

#define MIN_5_DIG_INTEGER 10000
#define MAX_5_DIG_INTEGER 99999

//求一个整数的反序函数
int reserve(int);

int main()
{
int i, j;
//此处列出所有满足5位数乘以1位数仍然是5位数的整数,以及其的反序
for (i = MIN_5_DIG_INTEGER; i <= MAX_5_DIG_INTEGER; i++)
{
for (j = MIN_1_DIG_INTEGER; j <= MAX_1_DIG_INTEGER; j++)
{
//求5位整数与1位整数的乘积。如果乘积也为5位数,则求其反序并打印出来
int result = i * j;
int i_reserved;
if (result >= MIN_5_DIG_INTEGER && result <= MAX_5_DIG_INTEGER)
{
i_reserved = reserve(i);
if (i_reserved != -1)
{
printf("%d 乘以 %d 等于 %d, 仍然为5位数。其反序为 %05d\n", i, j, result, i_reserved);
break;
}
}
}
}

getchar();

return 0;
}

//求一个整数的反序
//出错的话反回-1
int reserve(int num)
{
int i;
int result = -1;

int ones = num % 10; //求个位数
int tens = (num % 100 - ones)/10; //求十位数
int hundreds = (num % 1000 - tens - ones)/100; //求百位数
int thousands = (num % 10000 - hundreds - tens - ones)/1000; //求千位数
int ten_thousands = (num - thousands - hundreds - tens - ones)/10000; //求万位数

//生成反序整数
result = ones * 10000 + tens * 1000 + hundreds * 100 + thousands * 10 + ten_thousands;

return result;
}

追问

应该不是这个意思吧,是求哪一个5位数成一个1位数等于他的反序。应该是a=10000;a<=99999;

追答

比如 99599乘以1,等于其反序,就输出99599吗?


如下:

#include <stdio.h>
#include <tchar.h>

#define MIN_1_DIG_INTEGER 0
#define MAX_1_DIG_INTEGER 9

#define MIN_5_DIG_INTEGER 10000
#define MAX_5_DIG_INTEGER 99999

//求一个整数的反序函数
int reserve(int);

int main()
{
int i, j;
//此处列出所有满足5位数乘以1位数仍然是5位数的整数,以及其的反序
for (i = MIN_5_DIG_INTEGER; i <= MAX_5_DIG_INTEGER; i++)
{
int i_reserved = reserve(i);

for (j = MIN_1_DIG_INTEGER; j <= MAX_1_DIG_INTEGER; j++)
{
//求5位整数与1位整数的乘积。如果乘积也为5位数,则求其反序并打印出来
int result = i * j;
if (i_reserved == result)
{
printf("%d 乘以 %d 等于其反数 %d\n", i, j, result);
break;
}
}
}

getchar();

return 0;
}

//求一个整数的反序
//出错的话反回-1
int reserve(int num)
{
int i;
int result = -1;

int ones = num % 10; //求个位数
int tens = (num % 100 - ones)/10; //求十位数
int hundreds = (num % 1000 - tens - ones)/100; //求百位数
int thousands = (num % 10000 - hundreds - tens - ones)/1000; //求千位数
int ten_thousands = (num - thousands - hundreds - tens - ones)/10000; //求万位数

//生成反序整数
result = ones * 10000 + tens * 1000 + hundreds * 100 + thousands * 10 + ten_thousands;

return result;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-14
#include <stdio.h>

void main()
{
int integer1,integer2,product,i;

printf("请输入一个五位数:\n");
scanf("%d",&integer1);

printf("请输入一个一位数:\n");
scanf("%d",&integer2);

product=integer1*integer2;

for(i=0;i<5;i++)
{
printf("%d",product%10);
product=product/10;

}
printf("\n");

}
不确定的意思是不是这样的追问

不是,是不知道5位数是多少,但是它成一个一位数等于他的反序

追答

#include

void main()
{
int integer,product,i,j;
int a[5];

for(integer=10000;integer<100000;integer++)
{
for(i=0;i<10;i++)
{
product=integer*i;
if(product<100000)
{
for(j=0;j<5;j++)
{
a[j]=product%10;
product=product/10;
}

product=a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];

if(product==integer)
{
printf("五位数是%d,一位数是%d\n",integer,i);
}
}

}
}

}

追问

哎呀,就是这个,太感谢了!!不过手贱,采纳错了不好意思哈

追答

我要哭瞎了

追问

额,实在是抱歉。还是有点问题,我记得输出结果还有21918 4;10989 9.

追答

是21978 4,数据太多,前面的都看不到了,这是我一步一步跟出来的

第2个回答  2014-11-14
#include <iostream>
#include<stdio.h>

int check(int p1,int p2 ){
int sum = p1 * p2,temp;
int temp1,temp2,temp3,temp4,temp5;
//判断sum跟p1的反序是否相等
if( p1%10==0 ){
return 0;
}else{
//求p1反序
temp5 = p1/10000;
temp4 = (p1 - temp5*10000)/1000;
temp3 = (p1 - temp5*10000 - temp4*1000)/100;
temp2 = (p1 - temp5*10000 - temp4*1000 -temp3*100)/10;
temp1 = p1 - temp5*10000 - temp4*1000 -temp3*100 - temp2*10;
temp = temp1*10000 + temp2*1000 +temp3*100 +temp2*10 +temp5;
if( sum==temp ){
return 1;
}else{
return 0;
}
}

}

int main(){

int five,one,count_five[1000],count_one[1000],temp=0;
for( five=10000;five<100000;five++ ){

for( one=1;one<10;one++ ){
if( check(five,one)==1 ){
count_five[temp] = five;
count_one[temp++] = one;
printf("%d",five);
printf(" ");
printf("%d",one);
printf(" ");
}
}
}

system("pause");
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网