我们主要是学习C语言的流程转移控制,5种方法结合韩信点兵来实现流程转移控制.循环采用了for,while,do while,控制采用了goto,break,exit(0)以及标志变量find,建议采用标志变量,可读性强。
枚举法
枚举法(Enumeration),常常称之为穷举法(Exhaustion),也就是列举所有可能,逐一试探,常用于密码的破译(暴力搜索)
韩信点兵
韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。编程求韩信至少有多少兵?
方法一
#include <stdio.h> int main(){ int x; for(x=1; ;x++) { if(x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf("x=%d\n",x); goto END; } } END: ; return 0; }
方法二
#include <stdio.h> int main() { int x; for(x=1; ;x++) { if(x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf("x=%d\n",x); break; } } return 0; }
方法三
#include <stdio.h> #include <stdlib.h> int main() { int x; for(x=1; ;x++) { if(x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf("x=%d\n",x); exit(0); } } return 0; }
方法四
#include <stdio.h> int main() { int x; int find=0; for(x=1;!find;x++) { if(x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf("x=%d\n",x); find=1; } } return 0; }
方法五
#include <stdio.h> int main() { int x=0; do{ x++; }while(!(x%5==1 && x%6==5 && x%7==4 && x%11==10)); printf("x=%d\n",x); return 0; }
方法六
#include <stdio.h> int main() { int x=0; int find=0; while(!find) { if(x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf("x=%d\n",x); find=1; } x++; } return 0; }