实验三(4.9)

实验结论

part 1:验证性内容

1.体会并说明在循环中continue与break的功能与区别

(1)continue

#include <stdio.h>
int main() {
    int i;
    
    // 在循环语句中使用continue 
    for(i=1; i<=5; i++) {
        if (i%3 == 0)  // 如果i是3的倍数,则结束本次循环,开始下一次循环 
            continue;
        
        printf("i=%d\n",i);
    }
    
    return 0;
} 

可观察到跳过是3的倍数的数字输出,继续循环

(2)break

#include <stdio.h>
int main() {
    int i;
    
    // 在循环语句中使用break
    for(i=1; i<=5; i++) {
        if (i%3 == 0)  // 如果i是3的倍数,则结束整个循环 
            break;
        
        printf("i=%d\n",i);
    }
    
    return 0;
} 

可观察到跳过3倍数数字的输出,且提前结束本层循环,执行后面语句

continue与break二者的区别在于跳过后是否继续本层循环,还是跳出结束本层循环

2.体会并回答在两层嵌套循环中,内层出现continue或出现break,是否影响外层循环?

(1)内层出现continue

#include <stdio.h>
const int LINE=3;        // 定义符号常量LINE 
const int COLUME=5;        // 定义符号常量COLUME

int main() {
    int line;    // 定义变量line, 用来控制行数 
    int col;     // 定义变量col, 用来控制列数
    
    // 输出LINE行信息 
    for(line=1; line<=LINE; line++) {
        // 每一行中,利用循环,输出各列信息 
        for(col=1; col<=COLUME; col++) {
            if(col%3 == 0)  // 如果col是3的倍数,则结束本次循环,开始下一次循环 
                continue;
            
            printf("%5d", col);    
        }
        
        printf("\n"); // 每输出完一行,换行 
    }
     
    return 0;
} 

(2)内层出现break

#include <stdio.h>
const int LINE=3;        // 定义符号常量LINE 
const int COLUME=5;        // 定义符号常量COLUME

int main() {
    int line;    // 定义变量line, 用来控制行数 
    int col;     // 定义变量col, 用来控制列数
    
    // 输出LINE行信息 
    for(line=1; line<=LINE; line++) {
        // 每一行中,利用循环,输出各列信息 
        for(col=1; col<=COLUME; col++) {
            if(col%3 == 0)  // 如果col是3的倍数,则结束内层循环体 
                break;
            
            printf("%5d", col);
        }
        
        printf("\n"); // 每输出完一行,换行 
    }
     
    return 0;
}

则由观察可得,无论是使用二者哪一个语句,输出行数均是3行,即continue及break均不影响外层循环,只对填写本层起作用

part 2:补足程序,使程序运行

(1)blank1.cpp<输出五个整数中的最大数与最小数>

#include <stdio.h> 
int main() {    
int number, max, min, n;  
    n=1;    
    printf("输入第%d个数: ", n);    
    scanf("%d", &number);    
    max = number;    
    min = number;
    while(n<=4) 
    {        
      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; 
} 

值得注意的地方:一开始我在while后的括号中填的是n<=5,运行后出现了输入六个数的情况,于是我重新仔细想了想,发现应该填n<=4,原因是这样的,循环前输入了一次数,这个数直接进入循环,先自增之后再要求输入,此时已经算输入第二个数了。同样的道理,当n=4作为通行证进入循环时,直接要求输入第五个数了。我想是否能改进一下,是的while后的条件能变成n<=5.所以抱歉,容我再想想。

(2)尝试用for来做这道题

#include<stdio.h>
int main(){
    int max,min,n,number; 
    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;
        if(number<min)
          min=number;
    }
    printf("最大数为:%d",max);
    printf("最小数为:%d",min);
    return 0;
}

我感到太开心了,因为之前我一直不熟练for语句的使用,刚刚上完体育课,坐在寝室写程序,我自己一次性就把这个for语句写出来了,wow~ ⊙o⊙,好happy

part 3:尝试编写两个程序

(1)素数的问题

让计算机自己计算素数

#include<stdio.h>
#include<math.h>
int main()
{
    int m,n,i;
    for(n=101;n<=200;++n)
    {
       m=sqrt(n);
       for(i=2;i<=m;++i)
          if(n%i==0)break;
       if(i>m)
          printf("%d\t",n);
    } 
    return 0;
}

我的思路就是:首先想到传统的输一个数进去判断是不是素数,这个题不同的方法就是要计算机自己循环,自己挨着挨着计算,所以我就在外面套了一个for语句来让计算机自己计算n的值。

(2)输出星号的图案

#include<stdio.h> 
int main(){
    int line,col,star;
    for(line=1;line<=5;++line)
    {
        for(col=1;col<=5-line;++col)
           printf(" ");
        for(star=1;star<=2*line-1;++star)
           printf("*");
        printf("\n");
    }
    return 0;
}

一开始我打出来的星号是一整行,后来才发现是我循环每行后没有打换行的符号。以后一定要更加注意这些问题。

 

实验总结与体会:

     这一次实验中我学到了很多的东西,比如说循环,循环嵌套的应用。掌握了输出图案的有效方法,解决了素数的问题

     我的实验感悟就是:我们在写程序的时候先构思一个整体框架,我们需要做什么,我们需要用到哪些知识。等到我们把代码写出来后,先不要直接运行,先自己读一遍自己的程序,把自己想象成计算机,把代码转换出来,看看是否能得到自己预期的答案,因为这个方法不仅可以找出自己的问题,还可以锻炼自己对代码的阅读能力。

     还有最后最重要的感悟就是,自己每天必须得挨个练习书上的代码,这样才能够熟能生巧。灵活运用。

 

我的评论:https://www.cnblogs.com/yaoxioana/p/10707530.html

                  https://www.cnblogs.com/LIUxh/p/10707964.html

                  https://www.cnblogs.com/angel-x/p/10706562.html

 

posted @ 2019-04-15 18:10  rainbowhorse  阅读(138)  评论(2编辑  收藏  举报