第三次作业

判断一组数是否能够构成三角形(1)

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

判断一组数是否能够构成三角形(2)

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

(if语句嵌套使用)

 

判断多组数是否能够构成三角形

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

要结束语句时可以按照pdf上提供的CTRL+D也可以输入非数字字符例如abc之类的字母。

 

学生成绩(1)

#include<stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生成绩:");
        if(scanf("%d",&score)==0)//输入成绩语句逻辑值为0,结束循环
        break; 
        if(score<0||score>100){
            printf("输入成绩有误!\n\n");
            continue;//continue结束本次循环并开始下一次循环 
        }
        else if(score>=90&&score<=100)
        grade='A' ;
        else if(score>=80&&score<=89)
        grade='B' ;
        else if(score>=70&&score<=79)
        grade='C' ;
        else if(score>=60&&score<=69)
        grade='D' ;
        else
        grade='E';
        printf("等级为:%c\n\n",grade);
    }
    return 0;
} 

学生成绩(2)

#include<stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生成绩:");
        if(scanf("%d",&score)==0)//输入成绩语句逻辑值为0,结束循环
        break; 
        if(score<0||score>100){
            printf("输入成绩有误!\n\n");
            continue;//continue结束本次循环并开始下一次循环 
        }
        switch(score/10){
            case 10:
            case 9:grade='A';break;
            case 8:grade='B';break;
            case 7:grade='C';break;
            case 6:grade='D';break;
            default:grade='E';
        }
        printf("等级为:%c\n\n",grade);}
    return 0;
} 

对比continue和break

#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结束整个循环程序

 

对比(2)

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

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

若continue与break在内层循环语句则均不影响外层循环

 

一组数中最大值与最小值

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

输出素数

#include<stdio.h>
#include<math.h>
int main(){
    int a,b;
    int c=0;
    for(a=101;a<=200;a++){
        int d=sqrt(a);
        for(b=2;b<=a;b++){
            if(a%b==0)
            break;
        }
        if(b>d){
            c++;
            printf("%d ",a);
        }
    } 
    printf("101~200之间素数个数为%d",c);
    return 0;
}

输出规定符号

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

 

 

在判断素数的程序编写上明显感到逻辑转化为语句有很大困难,在自己独立试行时结果总是同一个数输出数次,在独立解决无果后参考他人程序后发现问题在输出素数语句位置错误导致重复输出。

 

互评地址

   https://www.cnblogs.com/1256096713a/p/10691759.html#commentform

   https://www.cnblogs.com/cnx1252/p/10703189.html#4235728

   https://www.cnblogs.com/ability-1206/p/10703564.html

posted on 2019-04-14 17:38  husky139  阅读(167)  评论(1编辑  收藏  举报