Part1: 验证性内容
先给出两个demo的程序源码以及运行结果的截图~
运用continue:

运用break:

仔细观察了两个语句的运行结果以后,我总结出下面两个结论:
1) continue语句只结束本次循环,而不是终止整个循环的执行。
2) break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
这里再顺便总结一下两个语句的用法:
1)break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
2)continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环,常与if条件语句一起使用,用来加速循环。
接下来比较的是在嵌套的循环中控制语句中continue和break的差异。
给出两个demo的程序源码以及运行结果的截图~
运用continue:

运用break:
运行之后发现,两个语句直接导致了运行结果的不同啊,现在应该可以回答实验中的问题了。
在两层嵌套循环中,内层循环中如果出现continue,不影响外层循环。
在两层嵌套循环中,内层循环中如果出现break,影响外层循环。
(如果不对请大家指正o(╥﹏╥)o)
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++; 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;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; }
运行结果:

似乎是比原来的代码要简单了一点点。
Part3: 编程练习
1)编程输出101~200之间所有素数,并输出这一区间内素数个数。
这道题目有、难,看了好久都没什么头绪,于是去翻了一下教材,根据教材写出了这个程序的第一个版本:
程序源码:
#include<stdio.h> #include<math.h> int isprime(int n); int main() { int i,number=0,x=0,n; for(i=101;i<=200;i++) { if(isprime(i)) { printf("%4d",i); number++,n++,x++; } if(number==5) { number=0; printf("\n"); } } printf("\n101`200之间共有%d个素数",x); return 0; } int isprime(int n) { int k; for(k=2;k<=sqrt(n);k++) if(n%k==0) return 0 ; return 1 ; }
运行结果没啥问题,我稍微松了一口气:

对代码做一些解释:
isprime()的用处是用来判断一个数是否为素数,它是一个自定义函数,相当于自己创造出来的一个函数。自定义这个函数时,需要写清楚它执行的时候是一个什么样的运算过程,也就是它的内部规则结构,这样它才能愉快地去执行你给它布置的任务。也就是代码中的这一部分 (如图): 
这样我就定义好了这个函数,当以后我想要再来判断素数的时候,直接使用它来判断就ok了,还是挺方便的~
合上教材之后我又写了这个程序的2.0版本,没有用到自定义函数。
程序源码:
#include<stdio.h> #include<math.h> int main() { int i=100,number=0,x=0,m,k; while(i<=200){ k=(int)sqrt(i); for(m=2;m<=k;m++) {if(i%m==0) break;} if(m>k) { printf("%4d",i); number++,x++; if(number==5) { number=0; printf("\n"); } } else printf(""); i++; } printf("\n101`200之间共有%d个素数",x); return 0; }
运行结果是妥妥的没什么问题,就不再放图上来了。这个代码我就不做解释啦,总之就是嵌套就完事了~
2)编程打印输出小星星
话不多说,直接上程序源码:
#include<stdio.h> int main() { int a,b; for(a=0;a<=4;a++) { for(b=4-a;b>=0;b--) printf(" "); for(b=1;b<=a*2+1;b++) printf("*"); printf("\n"); } }
运行结果:
这个代码的基本思路就是:依靠输入空格来改变星号的位置,从而实现星号打印出预期形状。
刚开始写这个代码的时候我就走入了一个误区,在考虑左边空格的同时还考虑右边的空格该怎么输入。浪费了很多时间之后我突然醒悟过来,右边不管输入多少空格都是没办法改变星号的位置的啊...这个题目只需要考虑左边的空格如何输入就可以了~
实验总结与体会
这次写程序时,有一道题目因为刚开始的时候没有什么头绪,所以向某位大佬求救了,通过向他请教的过程中学到了很多如何灵活使用for语句以及灵活嵌套的方法。遇到难题时,和身边的人沟通交流探讨也是一种很好的办法鸭~
这次的实验报告就到这里了,谢谢你抽出时间看完我写的东西,祝你生活愉快~
附上实验二的评论连接:
https://www.cnblogs.com/333y/
https://www.cnblogs.com/lstx/