1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
00110 c、d
#include
int main()
{
int a,b,c,d,e; /*0表示不参加, 1表示参加.*/
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(a&&!b) continue;
if(b&&c||!b&&!c) continue;
if(c&&!d||!c&&d) continue;
if(!d&&!e) continue;
if(e&&(!a||!d))continue;
printf("%d%d%d%d%d",a,b,c,d,e);
}
return 0;
}
2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
1)A和B两人中至少去一人;
2)A和D不能一起去;
3)A、E和F三人中要派两人去;
4)B和C都去或都不去;
5)C和D两人中去一个;
6)若D不去,则E也不去。
试编写一个程序,输出问应当让哪几个人去?
#include
int main()
{
int a,b,c,d,e,f;
for(a=1;a>=0;a--)
for(b=1;b>=0;b--)/*1:去 0:不去*/
for(c=1;c>=0;c--)
for(d=1;d>=0;d--)
for(e=1;e>=0;e--)
for(f=1;f>=0;f--)
{
if(a+b>=1&&a+d!=2&&a+e+f==2&&b==c&&c+d==1&&(d+e==0||d==1))
printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d",a,b,c,d,e,f);
}
return 0;
}
3、警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”;
B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。
现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷?
提示:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用四重循环穷举a,b,c,d可能的取值的组合,
对每一种组合判断其是否符合题目中给出的约束。最后结论:C是小偷。
#include
int main()
{
int a,b,c,d;
for(a=1;a>=0;a--)
for(b=1;b>=0;b--)/*1:是小偷 0:不是小偷*/
for(c=1;c>=0;c--)
for(d=1;d>=0;d--)
{
if((a==0)+(c==1)+(d==1)+(d==0)==3&&a+b+c+d==1)/*4人的说法中有3个真的,且只有一个小偷*/
printf("%d %d %d %d",a,d,c,d);
}
return 0;
}
有限五位数
个位数为6且能被3整除的五位数有多少个?
#include
int main()
{
long int i;
int sum=0;
for(i=1000;i<=9999;i++)
{
if((i*10+6)%3==0)
{
sum++;
}
}
printf("%d",sum);
return 0;
}
5、标题:错误票据
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。 假设断号不可能发生在最大和最小号。
要求程序首先输入一个整数N(N<100)表示后面数据行数。 接着读入N行数据。