【实验结论】

Part1:验证性内容

• demo5_1.cpp和demo5_2.cpp运行结果对比:

                                                                            

                                                    demo5_1                                       demo5_2

       从运行结果可以看到,在使用continue语句的demo5_1中,当 i 的值为三的倍数时,则跳过输出 i=3 这次循环,继续执行下一次循环,直到i=5为止;而在使用break语句的demo6_2中,当 i 的值为三的倍数时,直接结束整个循环结构。

  由此我们可以得出结论:在循环结构中,当遇到continue语句,程序就跳过循环体中位于该语句后的所有语句,提前结束本次循环并开始新一轮循环;而当遇到break语句时,则结束本层循环,转而执行本层循环语句后的语句。

• demo6_1.cpp和demo6_2.cpp运行结果对比:

                                                  

                                                      demo6_1                                                          demo6_2         

      从运行结果可以看到,在使用continue语句的demo6_1中,程序只跳过了 col=3 的那次内循环,而不影响其他的内循环和外循环;而在使用break语句的demo6_2中,当遇到 col=3 的那次内循环时,则跳过该层内循环转而执行下一次外循环。

  由此我们可以得出结论:在两层嵌套循环中,内层循环不论是出现continue还是出现break,都不会影响外层循环,只会影响其所在的内循环。

Part2:补足程序,使得程序运行

• 补足后的程序源码blank.cpp

 1 /* 
 2 编程找出5个整数的最大数和最小数 
 3 《C语言程序设计教程学习指导》p122实验内容(3) 
 4 */ 
 5 
 6 #include <stdio.h>
 7 int main() {
 8     int number, max, min, n;
 9     
10     n=1;
11     printf("输入第%d个数: ", n);
12     scanf("%d", &number);
13     
14     max = number;
15     min = number;
16     
17     while(n<5) {
18         n++;
19         printf("输入第%d个数: ", n);
20         scanf("%d", &number);
21         
22         if(number>max)
23             max = number;
24         else if(number<min)
25             min = number;
26     }
27     
28     printf("最大数为: %d\n", max);
29     printf("最小数为: %d\n", min);
30     
31     return 0;
32 } 

运行测试结果截图:

                                                       

 

使用for语句实现的程序源码:

 1 /* 
 2 编程找出5个整数的最大数和最小数 
 3 《C语言程序设计教程学习指导》p122实验内容(3) 
 4 */ 
 5 
 6 #include <stdio.h>
 7 int main() {
 8     int number, max, min, n;
 9     
10     n=1;
11     printf("输入第%d个数: ", n);
12     scanf("%d", &number);
13     
14     max = number;
15     min = number;
16     
17     for(n=2;n<=5;n++) {
18         printf("输入第%d个数: ", n);
19         scanf("%d", &number);
20         
21         if(number>max)
22             max = number;
23         else if(number<min)
24             min = number;
25     }
26     
27     printf("最大数为: %d\n", max);
28     printf("最小数为: %d\n", min);
29     
30     return 0;
31 } 

运行测试结果截图:

                                                             

 

Part3:编程练习

(1)编程输出101~200之间的所有素数,并输出这一区间内素数的个数。

   程序源代码:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     int num=0,n,i,m;
 6     for (n=101;n<=200;n++)
 7     {
 8        m=sqrt(n);
 9        for(i=2;i<=m;i++)
10        if(n%i==0)break;
11        if(i>m)
12        {
13            printf("%d ",n);
14            num++;
15            if(num%5==0)printf("\n");
16        }
17     }
18     printf("\n101~200之间共有&d个素数",num);
19     return 0;
20 }

 

运行结果截图:

                                               

 

(2)编程输出星号图案。

  程序源代码:

 1 # include <stdio.h>
 2 int main()
 3 {
 4    void blank(int x);     //声明blank函数 
 5    int a,b,c,i;
 6    for(a=1;a<=9;a+=2)
 7    {
 8    b=(9-a)/2;
 9    blank(b);              //调用blank函数打印空格 
10    for(c=1;c<=a;c++)      //打印‘*’ 
11    printf("*");
12    blank(b);
13    printf("\n");    
14    }
15 return 0;
16 } 
17 void blank(int x)         //编写blank函数 
18     {
19         int i;
20         for(i=1;i<=x;i++)
21         printf(" ");
22     }    
23  

 

ps:关于打印每行星号前后的空格一时没有想到更好的办法,于是想到定义一个打印空格的函数试试。

 运行结果截图:

                                                              

【实验总结与体会】

  本次实验所接触的三种循环,感觉在解决很多问题时都非常的实用、方便,很高兴能get到这项新技能,希望能够继续深入。由于循环结构的特殊性,很多时候一些节点处还不能够理得很清楚,个人感觉把一组数据代进去把循环走几次就能够很好地解决,或者逐行逐段地调试也很有用。

给别人的评论:

http://www.cnblogs.com/neorenaissance/
https://www.cnblogs.com/blogdzm/
https://www.cnblogs.com/nuist-tyl/