实验三

Part 1.(1)判断三角形的形状

#include<stdio.h>
int main(){
    int a,b,c;
    scanf("%d,%d,%d",&a,&b,&c);
    if(a+b>c && a+c>b && b+c>a){
        if(a==b&&a==c)
        printf("等边三角形\n");
        else if(a==b||b==c||a==c)
        printf("等腰三角形\n");
        else
        printf("一般三角形\n");
    }
    else
    printf("不构成三角形\n");
    return 0;
} 

可用循环语句进行连续判断

#include<stdio.h>
int main(){
    int a,b,c;
    printf("输入三角形三边\n");
    while(scanf("%d %d %d",&a,&b,&c)){
        if(a+b>c&&a+c>b&&b+c>a){
            if(a==b&&a==c)
            printf("等边三角形\n");
            else if(a==b||b==c||a==c)
            printf("等腰三角形\n");
            else
            printf("一般三角形\n");
        }
        else
        printf("不构成三角形\n");
    printf("\n输入三角形三边\n");
    }
    return 0;
    
}

要注意的还是一些基本问题,比如运行的时候的形式与scanf里的形式还是要一致,否则运行不了真的挺郁闷。

(2)判断学生的成绩等级

#include<stdio.h>
int main(){
    int score;
    char grade;
    while(1){           //1表示条件永远为真,即无限循环,可在循环体内添加某些语句,满足语句时跳出循环 
        printf("输入学生成绩\n");
        if(scanf("%d",&score)==0)
        break;          //跳出循环 
        if(score<0||score>100){
            printf("输入错误\n\n");
            continue;      //结束本次循环,开始下一次循环 
        }
        else if(score>=90&&score<=100)
        grade='A';
        else if(score>=80&&score<90)
        grade='B';
        else if(score>=70&&score<80)
        grade='C';
        else if(score>=60&&score<70)
        grade='D';
        else 
        grade='E';
        printf("等级为%c\n\n",grade);  //两个换行符 
    }    
    return 0;      
}

我有一点好奇为什么这个代码结尾有两个\n,于是我试了试一个\n,会是怎样

原来就是换的行数不同,虽然不是什么大发现(或许老师上课的时候就讲过),但解决了疑惑。

关于while(1),continue,break是什么意思,已经在代码中标注。

当然用switch语句运行结果相同

#include<stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生乘积\n");
            if(scanf("%d",&score)==0)
        break;       
        if(score<0||score>100){
            printf("输入错误\n\n");
            continue;      
        }
        switch(score/10){
            case 10:                //case后必须有空格 
            case 9:   grade='A';break;
            case 8:   grade='B';break;
            case 7:   grade='C';break;
            case 6:   grade='D';break;
            default:  grade='E';break;
        }
        printf("等级为%c\n\n",grade);
    }
    return 0;
}
    

比较两个实验发现一个小细节略有不同,判断三角形形状的代码末尾处还有一个printf("输入三角形三边\n"),这是因为第一个printf("输入三角形三边\n")没有在

while循环里,所以在末尾加一个printf使每一次循环都出现“输入三角形三边”。而判断学生成绩等级while语句中开始有printf,末尾就不用了。

(2)for 循环

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

#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是跳出循环即终止循环。

(3)嵌套循环

#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\n",col);
        }
        printf("\n");
    }
    return 0;
}

#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\n",col);
        }
        printf("\n");
    }
    return 0;
}

内层循环出现continue,break皆不影响外层循环。

Part 2.补写程序,判断最大最小数

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

n<=5,则会有6个数

Part 3.(1)

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

(2)

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

实验结论:

已经在每个部分分别写了,不再重复。

https://www.cnblogs.com/1346si/p/10690776.html#4231907

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

https://www.cnblogs.com/zxy-345/p/10708159.html#4231899

 

posted @ 2019-04-14 17:40  咯嘣儿  阅读(159)  评论(1编辑  收藏  举报