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/jiyuan201088/

 

https://www.cnblogs.com/333y/

https://www.cnblogs.com/lstx/