Part1
demo5_1.cpp
#include <stdio.h> int main() { int i;
for(i=1; i<=5; i++) { if (i%3 == 0) continue; printf("i=%d\n",i); } return 0; }
运行结果
demo5_2.cpp
#include <stdio.h> int main() { int i; for(i=1; i<=5; i++) { if (i%3 == 0) break; printf("i=%d\n",i); } return 0; }
运行结果
小结continue与break
在demo5_1的循环结构中,遇到了continue,程序就跳过了continue后面的语句——printf("i=%d\n",i),开始执行下一次循环,即遇到3的倍数时不输出,继续执行下面的循环,输出i=4,i=5
在demo5_2的循环结构中,遇到了break,程序就结束了整个循环,后面的i=4,i=5也没有输出,即遇到3的倍数时,结束整个循环
在循环结构中,碰到continue语句时,程序就跳过循环体中位于continue后的所有语句,提前结束本次循环并开始新一轮循环;碰到break语句时,这一层循环立即结束,转而执行这层循环体后面的语句。
demo6_1.cpp
#include <stdio.h> const int LINE=3; const int COLUME=5; int main() { int line; int col; for(line=1; line<=LINE; line++) { for(col=1; col<=COLUME; col++) { if(col%3 == 0) continue; printf("%5d", col); } printf("\n"); } return 0; }
运行结果
demo6_2.cpp
#include <stdio.h> const int LINE=3; const int COLUME=5; int main() { int line; int col; for(line=1; line<=LINE; line++) { for(col=1; col<=COLUME; col++) { if(col%3 == 0) break; printf("%5d", col); } printf("\n"); } return 0; }
运行结果
在demo6_1中,由运行结果可知,在遇到continue时,程序不输出第三列的数字,但继续内层循环的下一步,输出第四列、第五列的数,外层循环也正常运行,一直输出到规定的3行。
在demo6_2中,由运行结果可知,在遇到break时,程序停止内层循环的所有步骤,不再输出第四列、第五列的数,但外层循环不受影响,依然输出了3行。
在两层循环结构中,内层循环中出现continue,break,不影响外层循环。
Part2 补足程序
补足后的程序
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; while(n<5&&n>=1) { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>=max) max = number; else if(number<=min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0;
运行结果
用for语句实现
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; for(n=2;n<=5;){ printf("输入第%d个数: ", n); scanf("%d", &number); if(number>=max) max = number; else if(number<=min) min = number; n++; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
运行结果
小结:这一部分我真的做的很不顺利,一开始做程序填空时,光看程序我还没太理解这个程序的运行方法,,看了实验指导文档才理解,但依然不顺利。我逻辑思维不太好,写第一个空时,n>5总是写成n>=5,导致显示到让我输入到第六个数字;if和else if后面的空,我最初写的是n>=number,n<=number,结果出来当然是不对的,但我怎么都发现不了,最终还是参考了别人的程序,又想了一会,才弄明白,程序出来才是对的,唉。换用for语句来写时,也是出现了好多问题,有时候我只输入一个数就出来结果,有时它显示两行字都是请输入第一个数字,反正也是一点点改,一点点试才做对。
Part3 编程练习
1.找出101-200之间的所有素数
2.输出星号
#include<stdio.h> int main() { int i,j,k; for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++) { printf(" "); } for(k=1;k<=2*i-1;k++) { printf("*"); } printf("\n"); } return 0; }
运行结果