两个让我抓狂的C语言编程题目,我搞了半天也没有搞定,不知道有高手能编出来 !!
1. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
2. 打印一个 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
原来自己这么笨啊
谢谢各位的帮助!!你们让我知道没有困难解决不了的,只是自己没有去动脑。有不多看别人的编程思想。
以后要好好练习
[[it] 本帖最后由 wwbbqq 于 2008-4-15 20:52 编辑 [/it]]
----------------解决方案--------------------------------------------------------
这是LZ给大家的作业题?
----------------解决方案--------------------------------------------------------
LZ自己做吧,不难的
----------------解决方案--------------------------------------------------------
来个没有技术含量的
#include "stdio.h"
int main()
{
printf("TTTTTTTTTTTTTTT
TJJJJJJJJJJJJJT
TJ11111111111JT
TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT");
retrun 0;
}
----------------解决方案--------------------------------------------------------
够简单吧..效率高
----------------解决方案--------------------------------------------------------
我狂晕!!!!
难道没人知道 ??? ----------------解决方案--------------------------------------------------------
都蛮简单的,
自己做
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define min(a,b) (((a)<(b))?(a):(b))
#define MinOfFour(a,b,c,d) min( (min(a,b)), (min(c,d)) )
int main(void)
{
char Charactor[] = "TJ123456789";
int n,mid;
int i,j;
scanf("%d",&n);
mid = n/2;
for(i=0; i<n; ++i)
{
for(j=0; j<n; ++j)
{
putchar(Charactor[MinOfFour(i,j,n-i-1,n-j-1)]);
}
putchar('\n');
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{ int a,b,c,d,e; /*其中值1为参加,0为不参加*/
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
for(d=0;d<=1;d++)
for(e=0;e<=1;e++)
if(((b&&!c)||(!b&&c))&&((c&&d)||(!c&&!d))&&(!(!d&&!e))&&(!(!d&&!e)))
/*分别代表条件2~4*/
if((a&&b||!a)&&(e&&(a&&d)||!e))/*代表条件1和5,特别注意a,e不一定参加*/
printf("\n\na=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define TestBit(number,bit) (((number)&(1<<(bit)))!=0)
int main(void)
{
int i,j;
for(i=0; i<32; ++i)
{
if( TestBit(i,0) && !TestBit(i,1) ) /* A参加但B不参加,不符合第一条 */
continue;
if( TestBit(i,1) && TestBit(i,2) ) /* B和C都参加,不符合第二条 */
continue;
if( TestBit(i,2) != TestBit(i,3) ) /* C和D只有一个参加,不符合第三条 */
continue;
if( !TestBit(i,3) && !TestBit(i,4) ) /* D和E都没参加,不符合第四条 */
continue;
if( TestBit(i,4) && !(TestBit(i,0)&&TestBit(i,3)) )
/* D参加,但A和D不全参加,不符合第五条 */
continue; printf("参加竞赛的人是:\n");
for(j=0;j<5;++j)
if(TestBit(i,j))
putchar('A'+j);
printf("\n");
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------