回 帖 发 新 帖 刷新版面

主题:入门必做的题

1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不
                    D F G     同字母。编程求出这些数字并且打出这个数字的
             +      D F G     算术计算竖式。

             ───────

                X Y Z D E



  2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:

   (1)A参加时,B也参加;

   (2)B和C只有一个人参加;

   (3)C和D或者都参加,或者都不参加;

   (4)D和E中至少有一个人参加;

   (5)如果E参加,那么A和D也都参加。



  3. 打印一个 N*N 的方阵,N为每边           N=15  打印出下面图形
 字符的个数(3<N<20), 要求最               TTTTTTTTTTTTTTT
 外一层为"T", 第二层为"J", 从第三层               TJJJJJJJJJJJJJT
 起每层依次打印数字 1,2,3,...                     TJ11111111111JT
 (右图以N为15为例)                           TJ12222222221JT
                                                  TJ12333333321JT
                                                  TJ12344444321JT
                                                  TJ12345554321JT
                                                  TJ12345654321JT
                                                  TJ12345554321JT
                                                  TJ12344444321JT
                                                  TJ12333333321JT
                                                  TJ12222222221JT
                                                  TJ11111111111JT
                                                  TJJJJJJJJJJJJJT
                                                  TTTTTTTTTTTTTTT



  4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅
  出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。
  编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。

        1  2  3  4  5
        2  3  4  5  1
        3  4  5  1  2
        4  5  1  2  3
        5  1  2  3  4


  5. 输入一个十进数,将其转换成 N 进制数(0<N<=16)。

回复列表 (共635个回复)

341 楼

去哪找答案啊.

342 楼

支持楼住~!

343 楼

第三题
#include<iostream>
#include<vector>
using namespace std;
class sq
{
public:
  sq(int n=4)
  {
   assert(!(n<4)||!(n>=20));
   N=n;
  };
  ~sq(){};
void process()
{
m_num.push_back('T');
m_num.push_back('J');
for(int t=1;t<=(N-4)/2+N%2;t++)
   m_num.push_back(char(t+'0'));
 for(int i=0;i<N/2+N%2;i++)
 {
   for(int x=0;x<i;x++)
     m_t.push_back(m_num[x]);
   for(int p=0;p<N-i*2;p++)
       m_t.push_back(m_num[i]);
   for(int x=i-1;x>=0;x--)
      m_t.push_back(m_num[x]);          
 }
vector<char>::reverse_iterator it=m_t.rbegin(); 
m_num=m_t;
if(N%2)
{
for(int t=0;t<N;t++)
  m_num.pop_back();
  

while(it!=m_t.rend())
  {
   m_num.push_back(*it);
   it++;
  }
}
void display()
{
vector<char>::const_iterator it=m_num.begin();
int i=0;
while(it!=m_num.end())
  {
    cout<<*it;
    i++;
    if(!(i%N))
      cout<<endl;                  
  it++;
  }
}
private:
   int N;
   vector<char> m_num;
   vector<char>m_t;
};

int main()
{
    sq aa(15);
    aa.process();
    aa.display();
 system("PAUSE");
}

344 楼

第5
#include<iostream>
#include<vector>
#include<string>
#include<iomanip>
using namespace std;
char coverto(const int& n)
{
char a='A';
if(n>=10)
return char(a+n-10);
else
return char(n+'0');
}
int main()
{
int num=0;
int t=0;
int p=0;
int i=0;
vector<char>tt;
cout<<"请输入要转换的数:";
cin>>num;
cout<<"请输入进制数:(1<N<=16)";
cin>>i;
while(num/i>0)
{
  p=num%i;
  tt.push_back(coverto(p));
 num=num/i;             
}
tt.push_back(coverto(num));
vector<char>::reverse_iterator it=tt.rbegin();
while(it!=tt.rend())
{
cout<<*it;
it++;
}
cout<<endl;
system("PAUSE");
}

345 楼

#include<stdio.h>
static int N;
static int Count;
static int map[20];
static int used[20];

void Solve(int start)
{
    int i,j;
    if( start == N )
    {
        Count++;
        printf("Answer*%d:\n", Count);
        for(i=0; i<N; i++)
        {
            for(j=0; j<map[i]; j++)
                printf("☆");
            printf("★");
            for(j=map[i]+1; j<N; j++)
                printf("☆");
            printf("\n");
        }
        printf("\n");
        return;
    }
    for(i=0; i<N; i++)
    {
        if( used[i] )
            continue;
        for(j=0; j<start; j++)
            if( map[j]+j==i+start || map[j]-j==i-start )
                break;
        if( j<start )
            continue;
        used[i] = 1;
        map[start] = i;
        Solve(start+1);
        used[i] = 0;
    }
}

int main(void)
{
    int i;
    printf("Please enter N: \n");
    scanf("%d", &N);
    Count = 0;
    for(i=0; i<N; i++)
        used[i] = 0;
    Solve(0);
    getch();
    return 0;

}

346 楼

wangliang@ubuntu:~/soft$ cc -g math.c -o math
wangliang@ubuntu:~/soft$ gdb math
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

(gdb) l
1       #include<stdio.h>
2       int main()
3           {int A,B,C,D,E,F,G,X,Y,Z;
4           for(A=0;A<=9;A++)
5            {for(B=0;B<=9;B++)
6             if(B!=A)
7              {for(C=0;C<=9;C++)
8               if(C!=B&&C!=A)
9                {for(D=0;D<=9;D++)
10                if(D!=A&&D!=B&&D!=C)
(gdb)
11                 {for(E=0;E<=9;E++)
12                  if(E!=A&&E!=B&&E!=C&&E!=D)
13                   {for(F=0;F<=9;F++)
14                    if(F!=A&&F!=B&&F!=C&&F!=D&&F!=E)
15                     {for(G=0;G<=9;G++)
16                      if(G!=A&&G!=B&&G!=C&&G!=D&&G!=E&&G!=F)
17                       {for(X=0;X<=9;X++)
18                        if(X!=A&&X!=B&&X!=C&&X!=D&&X!=E&&X!=F&&X!=G)
19                         {for(Y=0;Y<=9;Y++)
20                          if(Y!=A&&Y!=B&&Y!=C&&Y!=D&&Y!=E&&Y!=F&&Y!=G&&Y!=X)
(gdb)
21                           {for(Z=0;Z<=9;Z++)
22                            if(Z!=A&&Z!=B&&Z!=C&&Z!=D&&Z!=E&&Z!=F&&Z!=G&&Z!=X&&Z!=Y&&((A*10000+B*1000+(C+D+D)*100+(D+F+F)*10+(E+G+G))==(X*10000+Y*1000+Z*100+D*10+E)))
23                             {printf(" %d%d%d%d%d\n",A,B,C,D,E);
24                              printf("   %d%d%d\n",D,F,G);
25                              printf("+  %d%d%d\n",D,F,G);
26                              printf(" %d%d%d%d%d\n",X,Y,Z,D,E);
27                              }
28                      }
29              }
30      }
(gdb)
31      }
32      }
33      }
34      }
35      }
36      }
37      return(0);}
(gdb) r
Starting program: /home/wangliang/soft/math
 29786
   850
+  850
 31486

Program exited normally.
(gdb)

347 楼


题目不错,是不是把这些题目都在没有任何提示的情况下完成了,
就算入门了。

348 楼

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
//  2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
//  人参加了竞赛:                        //  1为参加,0为没有参加///
//   (1)A参加时,B也参加;                 if(b>=a)  
//   (2)B和C只有一个人参加;               if(b!=c)
//   (3)C和D或者都参加,或者都不参加;     if(c=d)
//   (4)D和E中至少有一个人参加;           if(d+e=1)
//   (5)如果E参加,那么A和D也都参加。     if(e=1)   a=1,d=1;
//////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
void main()
{
    int a,b,c,d,e;  //  1为参加,0为没有参加///
    for(a=0;a<2;a++)
        for(b=0;b<2;b++)
            for(c=0;c<2;c++)
                for(d=0;d<2;d++)
                    for(e=0;e<2;e++)
                        if(b>=a)      
                            if(b+c==1)
                                if(c==d)
                                    if(d+e>=1)
                                        if(a>=e)
                                            if(d>=e)
                                                printf("a=%d  b=%d c=%d  d=%d  e=%d\n",a,b,c,d,e);
}////我是一个刚学C++的,我用了  for 和if  把第2题解了,
////在这里我想问一下,我在用  if(b>=a,b+c==1,c==d,d+e>=1,a>=e,d>=e)为什么不可以解出来

    

349 楼

哇,这才叫入门呀
完了,以前学的全忘了
现在想学又从头开始了

晕哟

350 楼

好难啊`~~不过支持

我来回复

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