回 帖 发 新 帖 刷新版面

主题:[讨论]GCC入门题部分题目解答

以下程序在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);
                }
            }
        }
    }
}

回复列表 (共144个回复)

141 楼

偶的第三题(原来要发这)!
#include <stdio.h>

int main()
{
int N,i,j;   
printf("请输入方阵阶数:");
ab: scanf("%d",&N);
if(N<3||N>20)
{
printf("请保持阶数在3-20之间");
goto ab;
}
char Str[]="TJ123456789",a[N][N],ch;
for(i=0;i<=N/2;i++)
{
ch=*(Str+i);
for(j=i;j<=N-1-i;j++)
{
a[i][j]=ch;
a[j][i]=ch;
a[N-1-i][j]=ch;
a[j][N-1-i]=ch;
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%c",a[i][j]);
printf("\n");
}

142 楼

第14题,黑白用1,0表示(取巧了):
#include "stdio.h"

int main()
{
int N,i,k,j;
printf("请输入棋子数(需为正整数):");
scanf("%d",&N);
k=2*N;
int a[k],t;
for(i=0;i<k;i++)
{
if(i>=N)
{
a[i]=0;
printf("%d",a[i]);
}
else
{
a[i]=1;
printf("%d",a[i]);
}
}
printf("\n");
for(i=N-1;i>=0;i--)
for(j=0;j<=i;j++)
{
if((i+j>=1)&&(i+j<k-2)&&(a[i+j]!=a[i+2+j]))
{
t=a[i+j];
a[i+j]=a[i+1+j];
a[i+1+j]=t;
}
}
for(i=0;i<k;i++)
printf("%d",a[i]);
}

143 楼

我做的第四题,请大家多多指教
#include<stdio.h>
#define N 5

void main(void)
{
    int s[N][N];
    int i,j;
    for(i=0;i<N;i++)
    {    
        for(j=0;j<N;j++)
        {
            s[i][j]=i+j+1;
            if(s[i][j]>5)
                s[i][j]=s[i][j]%5;
            printf("%d",s[i][j]);
        }
        printf("\n");
    }
}

144 楼


[em1]第四题好像是输出任意N维的拉丁方阵吧
[em1]3阶拉丁方阵12个,四阶好像是576(打印页太多,没法验证)

我来回复

您尚未登录,请登录后再回复。点此登录或注册