实验三实验报告

实验结论

part 1:

1 从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类型(一般三角形、等腰三角形、等边三角形或不构成三角形)。

1)两种if语句都可以达到实验目的,因此条件语句写法很灵活,所以自己以后写一个程序时也会考虑多种写法

2)while和if组合使用时使程序测试运行更加便捷,不需要每组数据一遍又一遍地重新编译再运行,用户在测试完所有数据后结束返回即可

3)while(scanf("%ld%ld%ld",&a,&b,&c))写法和while(scanf("%ld", &a) && scanf("%ld", &b) && scanf("%ld", &c) )写法在多组数据测试后并没有发现有什么不同,没有体会出第二种写法的合理性

2 用scanf()函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E。其中,90~100分为A,80~89分为B, 70~79分为C, 60~69分为D,60分以下为E。

1)break会使整个循环结束continue只是结束本次循环,下次循环依旧进行

2)break可以出现在循环语句或switch语句中continue只出现在循环语句中

3 分别运行程序demo5_1.cpp和demo5_2.cpp,结合运行结果,对比和理解控制语句continue和break的功能。

demo5_1.cpp的运行结果

 demo5_2.cpp的运行结果

continue跳过本次循环执行下次循环。break结束该循环

分别运行程序demo6_1.cpp和demo6_2.cpp,结合运行结果,对比和理解在嵌套的循环中控制语句continue和break的功能。

 demo6_1.cpp的运行结果

demo6_2.cpp的运行结果

在两层嵌套循环中,内层循环中如果出现continue,不影响外层循环
在两层嵌套循环中,内层循环中如果出现break,不影响外层循环

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

1 编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。

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

第一次尝试的时候写的条件是n<=5,循环执行了六次,从而发现错误并改正

for改写1

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

2

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

将n++放到()里面和外面有区别,在()里面先做n++运算在判断条件。在()外面则先判断条件在做n++,所以两次的判断条件有所不同

do...while改写

#include <stdio.h>
int main() {
    int number, max, min, n;
    
    n=1;
    printf("输入第%d个数: ", n);
    scanf("%d", &number);
    
    max = number;
    min = number;
    
    do {
        n++;
        printf("输入第%d个数: ", n);
        scanf("%d", &number);
        
        if(number>max)
            max = number;
        else if(number<min)
            min = number;
    }while(n<=4);
    
    printf("最大数为: %d\n", max);
    printf("最小数为: %d\n", min);
    
    return 0;
} 

part 3

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

#include <stdio.h>
#include <math.h>
int main(){
    int n,m,i,k;
    k=0;
    for(n=101;n<=200;n++){
        m=sqrt(n);
        for(i=2;i<=m;i++){
            if(n%i==0)
            break;
        }
        if(i>m){
            printf("%16d",n);
            k=k+1;
        }
    }
    printf("\n");
    printf("101~200之间共有%d个素数",k);
    return 0;
}

格式控制不太对,尝试了很多次还是不行,不知道怎样才能前面不留空

2 编程打印输出如下图案。

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

实验总结与体会

1.改写补全程序没什么问题,自己写程序时漏洞百出,都是小细节出错,还是要多练习

2.循环条件语句的嵌套使用不熟悉,很容易出错,

互评

猜你喜欢

转载自www.cnblogs.com/angel-x/p/10706562.html