文档详情

第三章程序流程控制结构.ppt

发布:2017-09-02约2.46万字共58页下载文档
文本预览下载声明
【例3-9】求2个正整数 m,n 的最大公约数。 分析 对于这类问题,多用“辗转相除法”,又称欧几里德法。 ㈠ 输入 m,n; ㈡ 以 n 除 m,得余数 r (0≤r≤n); ㈢ 判断余数 r 是否为0,若=0,当前除数 n 即为最大公约数, 结束。否则执行㈣; ㈣ r≠0,更新被除数和除数(被除数为原除数,除数为余数), 再执行㈡。 #include stdio.h void main(void) { int m, n, a, b ,r; scanf(“%d%d”, m, n); a = m; b = n; do { r = a%b; a = b; b = r; } while (r != 0); printf(“ %d和%d的 最大公约数是 %d\n”, m, n, a); } 【例3-9】求2个正整数 m,n 的最大公约数。 #include stdio.h void main(void) { int m, n, r=0; scanf(%d%d, m, n); do r ++; while (m%r==0 n%r==0); printf(%d和%d的最大公约数是%d\n, m, n, --r); } for 循环 语法:for (表达式1; 表达式2; 表达式3) 语句S;  表达式2为真? 语句S 表达式1 表达式3 Y N 功能:先运算表达式1(赋初值)。 运算表达式2(循环终止条 件),若其运算结果≠0 (为真),则执行语句S,之 后先运算表达式 3(步进条 件),并再次运算表达式2, 若结果仍≠0,则再次执行 语句S,直至运算结果=0 (为假) ,结束循环。 【注】 ① 表达式1、2、3 分别对应初值、终值、步长(某种意义 上); ② 语句S可为简单/复合语句; ③ 表达式1只执行一次。表达式2、3可能执行多次; ④ 表达式1、2、3 可以省略之一、二或全部。但 2 分号不 可略; ⑤ 可使用逗号运算符来扩大for语句的作用范围(多句); ⑥ for 循环不仅可用于已知次数的循环,亦可用于未知次 数的循环;不仅可用于整数控制量,亦可实数控制量; ⑦ 允许嵌套; for 循环 【例】输出100~200之间的能被3整除的整数。 #include stdio.h void main(void) { int n; for (n=100; n=200; n++) if (n%3==0) printf(“%d\n”, n); } 【例】解释下列 for 语句的功能 for (x=0.3; x=5.0; x+=0.1) for (; ;) for (n=1; ;n++) int up, down; for (up=1, down=9; up=down; up++, down--) 置x初值0.3,终值5.0,每循环1次,步长加0.1 while (1) /* 无穷循环 */ n置初值1,无穷循环,每循环1次,n+1 置 up=1 每循环一次使 up ++ 直至 updown down=9 down -- (双向对进) #include stdio.h void main(void) { int m, n, i; printf(“输入2个整数:”); scanf(“%d%d”, m, n); // 求最小公倍数 for (i=mn? m: n; !(i%m==0 i%n==0); i++); printf(“%d和%d的最小公倍数为:%d
显示全部
相似文档