免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3538 | 回复: 17
打印 上一主题 下一主题

请高手点拨赐教一个C程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-18 14:41 |只看该作者 |倒序浏览
“A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛,哪些人没参加:A参加时,B也参加;B和C只有一个人参加;C和D或者都参加,或者都不参加;D和E中至少有一个人参加;如果E参加,那么A和D也都参加。用1表示参加,0表示不参加”敬请赐教点拨!!!谢谢

论坛徽章:
0
2 [报告]
发表于 2011-03-18 15:02 |只看该作者
本帖最后由 rolleaway 于 2011-03-18 16:22 编辑

a  b c d e=0,1
a+b=2  or (a=0,b=1) or a+b=0
b+c<=1
c+d=2 or c+d=0
d+e>=1
---------------------
if e=1
  e+a+d=3
then
a+b+ c+ d+ e =5
和b+c<=1冲突

故e=0

c,d参加

论坛徽章:
0
3 [报告]
发表于 2011-03-18 15:44 |只看该作者
回复 2# rolleaway


   请问! 用C怎么实现啊?

论坛徽章:
0
4 [报告]
发表于 2011-03-18 16:36 |只看该作者

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void main()
  4. {
  5.         int n = 31; // 00011111 2的5次方-1


  6.         for(int i=n; i>= 0; i--)
  7.         {
  8.                 int a = (i&16)>>4;// 16: 00010000
  9.                 int b = (i&8)>>3; //  8: 00001000
  10.                 int c = (i&4)>>2; //  4: 00000100
  11.                 int d = (i&2)>>1; //  2: 00000010
  12.                 int e = i&1; //  1: 00000001

  13.                 ////打印
  14.                 //printf("%d,%d,%d,%d,%d\n", a, b, c, d, e);

  15.                 if(a == 1)
  16.                 if(b != 1) continue;

  17.                 if(b == 1)
  18.                 if(c != 0) continue;
  19.                 if(c == 1)
  20.                 if(b != 0) continue;

  21.                 if(c == 1)
  22.                 if(d != 1) continue;
  23.                 if(c == 0)
  24.                 if(d != 0) continue;
  25.                 if(d == 1)
  26.                 if(c != 1) continue;
  27.                 if(d == 0)
  28.                 if(c != 0) continue;

  29.                 if((d == 0)&&(e == 0)) continue;

  30.                 if(e == 1)
  31.                 if((a != 1)||(b != 1)) continue;

  32.                 // 输出结果
  33.                 printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
  34.         }
  35. }
复制代码
a=1,b=1,c=0,d=0,e=1
a=0,b=0,c=1,d=1,e=0

论坛徽章:
0
5 [报告]
发表于 2011-03-18 16:37 |只看该作者
两种结果: a b e  或者 c d

论坛徽章:
0
6 [报告]
发表于 2011-03-18 17:17 |只看该作者
如果E参加,那么A和D也都参加

论坛徽章:
0
7 [报告]
发表于 2011-03-18 17:21 |只看该作者
#include<unistd.h>
int main(void){
int a,b,c,d,e;

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)==2)||(a==0))&&(b+c<=1)&&(((c+d)==2)||((c+d)==0))&&(d+e>=1)&&(((e+a+d)==3)||(e==0)))
          {
           printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);
          }          
exit(0);
}

论坛徽章:
0
8 [报告]
发表于 2011-03-18 17:22 |只看该作者
a=0,b=0,c=1,d=1,e=0

论坛徽章:
0
9 [报告]
发表于 2011-03-18 20:21 |只看该作者
回复 4# wb112200


    编译不能通过啊
改工作目录为:C:\Program Files\超想中英对照编程学习系统\bin
正在写出临时程序文件....
写出临时程序文件成功!
写出批处理文件成功!
正在编译程序....
错误   11: 表达式语法错 在函数        
错误   11: 非法字符 '? (0xb5) 在函数        
错误   11: 非法字符 '? (0xc4) 在函数        
错误   11: 非法字符 '? (0xb4) 在函数        
错误   11: 非法字符 '? (0xce) 在函数        
错误   11: 非法字符 '? (0xb7) 在函数        
错误   11: 非法字符 '? (0xbd) 在函数        
错误   17: 未定义的符号'i' 在函数        
警告?   17: 无效操作代码 在函数        
错误   17: 语句缺少';' 在函数        
错误   33: 非法字符 '? (0xb4) 在函数        
错误   33: 非法字符 '? (0xf2) 在函数        
错误   33: 非法字符 '? (0xd3) 在函数        
错误   33: 非法字符 '? (0xa1) 在函数        
错误   83: 非法字符 '? (0xca) 在函数        
错误   83: 非法字符 '? (0xe4) 在函数        
错误   83: 非法字符 '? (0xb3) 在函数        
错误   83: 非法字符 '? (0xf6) 在函数        
错误   83: 非法字符 '? (0xbd) 在函数        
错误   83: 非法字符 '? (0xe1) 在函数        
错误   83: 非法字符 '? (0xb9) 在函数        
错误   83: 非法字符 '? (0xfb) 在函数        
警告?   89: 'n' 指定一个值给从未使用过的哪一个 在函数        
***    21 错误在编译     ***


        可用内存  392142      

编译失败!

论坛徽章:
0
10 [报告]
发表于 2011-03-18 20:28 |只看该作者
怎么会失败?
gcc通过!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP