主题:入门必做的题
GCC
[专家分:14380] 发布于 2006-04-14 11:53:00
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 楼
sgni1986 [专家分:330] 发布于 2006-10-24 22:00:00
去哪找答案啊.
342 楼
007wang [专家分:0] 发布于 2006-10-28 16:38:00
支持楼住~!
343 楼
高手成长ing [专家分:0] 发布于 2006-11-01 21:26:00
第三题
#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 楼
高手成长ing [专家分:0] 发布于 2006-11-01 21:49:00
第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 楼
yehua1207 [专家分:10] 发布于 2006-11-02 11:12:00
#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 楼
wl13364 [专家分:0] 发布于 2006-11-02 14:04:00
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 楼
fangqi [专家分:0] 发布于 2006-11-03 00:14:00
题目不错,是不是把这些题目都在没有任何提示的情况下完成了,
就算入门了。
348 楼
pcyanlun [专家分:30] 发布于 2006-11-06 14:10:00
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// 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 楼
lxh1999 [专家分:30] 发布于 2006-11-06 15:49:00
哇,这才叫入门呀
完了,以前学的全忘了
现在想学又从头开始了
晕哟
350 楼
mynameislyy [专家分:0] 发布于 2006-11-08 20:52:00
好难啊`~~不过支持
我来回复