输入9个随机数字(1-9),(可以重复也可以不重复,如1,5,4,6,6,9,7,7,7,)
然后从这9个数中(每个都用到,且不能多用)找出符合"c=(b=a*2)*2"规定的3个3位数
if 有,分别列出;
if 没有,提示“bu cun zai”
[此贴子已经被作者于2006-12-5 10:28:21编辑过]
写了一个,不知对不对!
#include <stdio.h>
int main(void)
{
int a, b, c;
int i, j, k;
for(i = 1;i <= 9;i ++)
for(j = i + 1;j <= 9;j ++)
for(k = j + 1;j <= 9;j ++)
{
a = i*100 + j*10 + k;
b = 2*a;
c = 4*a;
if(b/100 != b/10%10&&b/100 != b%10&&b/10%10 != b%10&&b <= 987&&c/100 != c/10%10&&c/100 != c%10&&c/10%10 != c%10&&c <= 987)
printf("a = %d, b = %d, c = %d\n", a, b, c);
}
return 0;
}
#include<stdio.h>
#include<conio.h>
typedef struct
{
int unit;/*存放个位数*/
int ten;/*存放十位数*/
int hunderd;/*存放百位数*/
}dataType;
int checkNum(dataType *,int);/*传入一个整数, 判断它的各个位数是不是相等并且不为0,然后存入dataType类型的数据中
成功返回1,不成功返回0*/
int checkMember(dataType,dataType);/*判断二个dataType类型的数据的各个位数是不是不相等,
都不相等返回1,否则返回0*/
void main(void)
{
dataType num1,num2,num3;
int number;
clrscr();
for(number=123;number<987/4;number++)
{
if(0!=checkNum(&num1,number))
{
if(0!=checkNum(&num2,2*number)
&& 0!=checkMember(num1,num2))
{
if(0!=checkNum(&num3,4*number)
&& 0!=checkMember(num1,num3)
&& 0!=checkMember(num2,num3))
{
printf("%d %d %d\n",number,2*number,4*number);
}
}
}
}
getch();
}
int checkNum(dataType *num,int number)
{
int i,j,k;
i=number/100;
j=(number-i*100)/10;
k=number%10;
if(i!=j && i!=k && j!=k
&& i!=0 && j!=0 && k!=0)
{
num->hunderd=i;
num->ten=j;
num->unit=k;
return 1;
}
else
return 0;
}
int checkMember(dataType num1,dataType num2)
{
if(num1.unit!=num2.unit && num1.unit!=num2.ten && num1.unit!=num2.hunderd
&& num1.ten!=num2.unit && num1.ten!=num2.ten && num1.ten!=num2.hunderd
&& num1.hunderd!=num2.unit && num1.hunderd!=num2.ten && num1.hunderd!=num2.hunderd)
{
return 1;
}
else
return 0;
}
/*不存在*/