主题:[讨论]GCC入门题部分题目解答
wuchengwei
[专家分:1650] 发布于 2006-11-03 03:44:00
以下程序在VC6.0环境下测试通过
若出现程序编译不了,或需要注释的,可以加Q634419082
//////////////////////////////////////////////////////////////////////////////
//
// 1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
// D F G 同字母。编程求出这些数字并且打出这个数字的
// / + D F G 算术计算竖式。
// ───────
// X Y Z D E
//////////////////////////////////////////////////////////////////////////////
//
// (DE+FG+FG)%100 = DE -> FG = 50
// Z = (C+D+D+1)%10
// Y = ((C+D+D+1)/10 + B)%10 && Y != 0 && Z != 0
// -> B == 9 && C +D +D +1 > 20 -> C >= 5 && D >= 5
// X != A ->X = A+1
// E = 45 - (A +9 + C +D +E + 5 +0 +X +Y +Z) = 31 - A -C -D -E -X -Y -Z
/////////////////////////////////////////////////////////////////////////////
#include "stdio.h"
void main()
{
unsigned int a, c, d, e, x, y, z;
printf("%10s\n", "A B C D E");
printf("%10s\n", "D F G");
printf("+%9s\n", "D F G");
printf("%10s\n", "───────");
printf("%10s\n\n\n", "X Y Z D E");
for(a = 1; a < 9; a++)
{
if(a == 5)
continue;
for(c = 5; c < 9; c++)
{
if(c == a )
continue;
for(d = 5; d < 9; d++)
{
if(d == a || d == c)
continue;
x = a +1;
y = ((c +2*d +1)/10 + 9)%10;
z = (c +2*d +1)%10;
e = 31-a-c-d-x-y-z;
if(x != a && y != a && z != a && e != a
&& x != 9 && y != 9 && z != 9 && e != 9
&& x != c && y != c && z != c && e != c
&& x != d && y != d && z != d && e != d
&& x != 5 && y != 5 && z != 5 && e != 5
&& x != 0 && y != 0 && z != 0 && e != 0
&& x != y && x != z && x != e && y != z
&& y != e && z != e
&& 10000*a +9000 +100*c +10*d +e +2*(100*d +50)
== 10000*x +1000*y +100*z +10*d +e)
{
printf("%2d%2d%2d%2d%2d\n", a, 9, c, d, e);
printf("%*d%2d%2d\n", 6, d, 5, 0);
printf("+%*d%2d%2d\n", 5, d, 5, 0);
printf("%10s------------\n", "------------");
printf("%2d%2d%2d%2d%2d\n", x, y, z, d, e);
}
}
}
}
}
最后更新于:2007-06-01 02:37:00
回复列表 (共144个回复)
41 楼
psy1234 [专家分:40] 发布于 2006-09-12 20:41:00
楼主你是大米,我就老鼠,爱死你了
^_^^_^!!!
42 楼
wuchengwei [专家分:1650] 发布于 2006-09-12 22:25:00
[em8]男的女的?
43 楼
波者无双 [专家分:0] 发布于 2006-09-19 11:06:00
斑竹无敌~~在那里搜刮回来的??!!
44 楼
wuchengwei [专家分:1650] 发布于 2006-09-19 12:16:00
自己写的
45 楼
qqssqs [专家分:320] 发布于 2006-09-23 15:54:00
关于第一题,我这样写,把所有要思考的都交给电脑,你看看如何,算起来很慢,不过人可以偷懒了。
int main()
{ int a,b,c,d,e,f,g,x,y,z;
printf("A B C D E \n");
printf(" D F G \n");
printf("+ D F G \n");
printf("____________\n");
printf("X Y Z D E \n");
printf("\n\n");
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
for(f=0;f<10;f++)
for(g=0;g<10;g++)
for(x=0;x<10;x++)
for(y=0;y<10;y++)
for(z=0;z<10;z++)
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z&&
b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z&&
c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z&&
d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z&&
e!=f&&e!=g&&e!=x&&e!=y&&e!=z&&
f!=g&&f!=x&&f!=y&&f!=z&&
g!=x&&g!=y&&g!=z&&
x!=y&&x!=z&&
y!=z&&
a*10000+b*1000+c*100+d*10+e+d*100+f*10+g+d*100+f*10+g-(x*10000+y*1000+z*100+d*10+e)==0&&a+1==x)
{
printf("%d %d %d %d %d \n",a,b,c,d,e);
printf(" %d %d %d \n",d,f,g);
printf(" %d %d %d \n",d,f,g);
printf("_______________\n");
printf("%d %d %d %d %d \n",x,y,z,d,e);
printf("\n");
}
return 0 ;
}
46 楼
qqssqs [专家分:320] 发布于 2006-09-23 16:01:00
第三题的
int main()
{ int n,i,j,k;
char array[19][19];
printf("Please input N\n");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
for(k=n/2;k>1;k--)
if(i==k||j==k||i==n-k-1||j==n-k-1)
array[i][j]=k+47;
if(i==1||j==1||i==n-2||j==n-2)
array[i][j]='J';
if(i==0||j==0||i==n-1||j==n-1)
array[i][j]='T';
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%c",array[i][j]);
printf("\n");
}
return 0;
}
47 楼
wuchengwei [专家分:1650] 发布于 2006-09-23 18:32:00
先把答案做出来就行
再来简化程序
第三题的算法复杂度高了点
48 楼
hushengwei [专家分:220] 发布于 2006-09-25 12:14:00
关于第一题的!
#include "stdio.h"
int main(a,b,c,d,e,f,g,x,y,z)
{
for(a=0;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
for(e=0;e<=9;e++)
for(f=0;f<=9;f++)
for(g=0;g<=9;g++)
for(x=0;x<=9;x++)
for(y=0;y<=9;y++)
for(z=0;z<=9;z++)
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z&&
b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z&&
c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z&&
d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z&&
e!=f&&e!=g&&e!=x&&e!=y&&e!=z&&
f!=g&&f!=x&&f!=y&&f!=z&&
g!=x&&g!=y&&g!=z&&
x!=y&&x!=z&&
y!=z&&
a*10000+b*1000+c*100+d*10+e+d*100+f*10+g+d*100+f*10+g
==x*10000+y*1000+z*100+d*10+e&&g==0)
{
printf("%d%d%d%d%d\n", a,b,c,d,e);
printf(" %d%d%d\n",d,f,g);
printf("+ %d%d%d\n",d,f,g);
printf("%s---\n","---");
printf("%d%d%d%d%d\n", x,y,z,d,e);
}
}
头脑笨,看楼主的贴子没有看明白算法!按前两天我发的求助贴(abcd-abc=dcdc)的思路做出的
因为才开始学习,所以打印格式是在上面几位师兄的格式上抄出来改动一下的!
思路与45楼基本一致,只是没有看懂45楼的a+1==x.
49 楼
wuchengwei [专家分:1650] 发布于 2006-09-25 16:58:00
int main(a,b,c,d,e,f,g,x,y,z)???????
50 楼
hutian280 [专家分:240] 发布于 2006-09-25 19:30:00
入门的时候,多动手、思考和耐心,就足够了...佩服楼主的塌实
我来回复