实验三(没写完,手滑发布了,先别评论。。。。)

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;
} 

运行结果

猜你喜欢

转载自www.cnblogs.com/lsy17/p/10695954.html