1、商人过河C语言程序编程#include #include #include void basic_interface() /基本界面 system(clear); system(tput cup 5 20); printf(=n); system(tput cup 6 20); printf(* *n); system(tput cup 7 20); printf(* _欢迎使用商人过河游戏!_ *n); system(tput cup 8 20); printf(* *n); system(tput cup 9 20); printf(* 游戏说明: *n); system(tput cup
2、 10 20); printf(* 三个商人带着三个随从和货物过河,船每次最多只能载两个人,要求在过河期间,任一岸上商人的人数 *n); system(tput cup 11 20); printf(* 要大于或等于随从的人数,否则随从会杀掉商人抢走货物。 *n); system(tput cup 12 20); printf(* *n); system(tput cup 13 20); printf(* 游戏操作: *n); system(tput cup 14 20 ); printf(* (1)依次输入过河的商人和随从人数; *n); system(tput cup 15 20); pr
3、intf(* (2)非法输入按键将重新开始。 *n); system(tput cup 16 20); printf(*-*n); system(tput cup 17 20);printf(*n);system(tput cup 17 113);printf(*n); system(tput cup 18 20);printf(*n);system(tput cup 18 113);printf(*n); system(tput cup 19 20);printf(*n);system(tput cup 19 113);printf(*n); system(tput cup 20 20);p
4、rintf(*n);system(tput cup 20 113);printf(*n); system(tput cup 21 20);printf(*n);system(tput cup 21 113);printf(*n); system(tput cup 22 20);printf(*n);system(tput cup 22 113);printf(*n); system(tput cup 23 20);printf(*n);system(tput cup 23 113);printf(*n); system(tput cup 24 20);printf(*n);system(tpu
5、t cup 24 113);printf(*n); system(tput cup 25 20);printf(*n);system(tput cup 25 113);printf(*n); system(tput cup 26 20);printf(*n);system(tput cup 26 113);printf(*n); system(tput cup 27 20);printf(*n);system(tput cup 27 113);printf(*n); system(tput cup 28 20); printf(*n);char a6; /此岸char b6; /彼岸void
6、print_state(char a,char b) /打印渡河状态 int i,j,ab,aa,ba,bb; /ab 此岸商人数 ,aa 此岸随从数 bb彼岸商人数,ba,彼岸随从数 aa=ab=ba=bb=0; basic_interface() ; system(tput cup 18 40);printf(此岸商人数:n); system(tput cup 19 40);printf(此岸随从数:n); system(tput cup 18 73);printf(彼岸商人数: n); system(tput cup 19 73);printf(彼岸随从数:n); for(i=0;i6;
7、i+) /计算此岸商人数和随从数 if(ai=B) ab+; else if (ai=A) aa+; system(tput cup 18 53); printf(%dn,ab); /输出此岸商人数 system(tput cup 19 53); printf(%dn,aa); /输出此岸随从数 for(j=0;j6;j+) /计算彼岸商人数和随从数 if(bj=B) bb+; else if(bj=A) ba+; system(tput cup 18 86); printf(%dn,bb); /输出彼岸商人数 system(tput cup 19 86); printf(%dn,ba); /
8、输出彼岸随从数 if(ab=0 & aa=0 & bb=3 & ba=3) /判断是否渡河成功 system(tput cup 23 40); printf(恭喜你!你已成功帮助商人安全过河!按任意键退出.n); system(tput cup 30 0); getchar(); system(clear); exit(0); void process() int i,j,go_b,go_a,back_b,back_a,ab,aa,bb,ba; /go_b,过去商人数,go_a,过去随从数, back_b,回来商人数,back_a,回来随从数, char ch;Start: basic_int
9、erface(); system(tput cup 20 40); printf(请按任意键开始游戏(按Q键退出).); ch=getchar(); if(ch=Q|ch=q) system(clear); exit(0); for(i=0;i3;i+) ai=B; for(i=3;i6;i+) ai=A; for(i=0;i6;i+) bi=0; print_state(a,b); while(1) /过去 for(ab=0,aa=0,i=0;i6;i+) /计算此岸的商人数和随从数 if(ai=B) ab+; else if(ai=A) aa+; system(tput cup 21 43
10、); printf(输入去彼岸商人的人数:n); system(tput cup 22 43); printf(输入去彼岸随从的人数:n); system(tput cup 21 65); scanf(%d,&go_b); /输入去彼岸的商人数 getchar(); system(tput cup 22 65); scanf(%d,&go_a); /输入去彼岸的随从数 getchar(); if(go_bab | go_aaa | go_a+go_b2) /输入不合法 system(tput cup 24 40); printf(输入有误!按任意键重新开始.); getchar(); goto
11、 Start; for(i=1;i=go_b;i+) /过河后两边的状态 for(j=0;j6;j+) if(aj=B) aj=0; break; for(i=1;i=go_b;i+) for(j=0;j6;j+) if(bj=0) bj=B; break; for(i=1;i=go_a;i+) for(j=0;j6;j+) if(aj=A) aj=0; break; for(i=1;i=go_a;i+) for(j=0;j6;j+) if(bj=0) bj=A; break; for(aa=0,ab=0,i=0;i6;i+) /统计过河后a岸的商人数和随从数 if(ai=A) aa+; el
12、se if(ai=B) ab+; for(ba=0,bb=0,i=0;i6;i+) /统计过河后b按的商人数和随从数 if(bi=A) ba+; else if(bi=B) bb+; if(ab=3) |(bb=3) | (ab=aa) | (bb=ba) /可以继续下一步的条件 print_state(a,b); else system(tput cup 24 40); printf(商人被杀,按任意键重新开始.n); system(tput cup 30 0); getchar(); goto Start; /回来 for(bb=0,ba=0,i=0;i6;i+) /统计对岸的商人数和随从
13、数 if(bi=B) bb+; else if(bi=A) ba+; system(tput cup 24 43); printf(输入回此岸商人的人数:n); system(tput cup 25 43); printf(输入回此岸随从的人数:n); system(tput cup 24 65); scanf(%d,&back_b); system(tput cup 25 65); scanf(%d,&back_a); if(back_bbb | back_aba | back_a+back_b2) /判断输入是否合法 system(tput cup 26 40); printf(输入有误!
14、按任意键重新开始.n); system(tput cup 30 0); getchar(); goto Start; for(i=1;i=back_b;i+) /返回后的状态 for(j=0;j6;j+) if(bj=B) bj=0; break; for(i=1;i=back_b;i+) for(j=0;j6;j+) if(aj=0) aj=B; break; for(i=1;i=back_a;i+) for(j=0;j6;j+) if(bj=A) bj=0; break; for(i=1;i=back_a;i+) for(j=0;j6;j+) if(aj=0) aj=A; break; f
15、or(ab=0,aa=0,i=0;i6;i+) /计算返回后此岸的商人数和随从数 if(ai=B) ab+; else if(ai=A) aa+; for(bb=0,ba=0,i=0;i6;i+) /计算返回后彼岸的商人数和随从数 if(bi=B) bb+; else if(bi=A) ba+; if(ab=3) |(bb=3) | (ab=aa) | (bb=ba) /判断是否会进一步继续进行 print_state(a,b); else system(tput cup 24,40); printf(商人被杀,按任意键重新开始.n); system(tput cup 30,0); getchar(); goto Start; void main() process();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1