part. 1:判断三角形

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

通过这次编程了解到如何利用输入控制循环。

如果将while(scanf("%lf%lf%lf",&a,&b,&c)!=0)改成while(scanf("%lf",&a)&&scanf("%lf",&b)&&scanf("%lf",&c)!=0),前者只要第一个输入数字,后面输入字母就会循环一次,然后结束;若第一个是字母,则直接结束;而后者只要有一个是字母,就会结束。

 

part. 2: 输入百分制分数,得等级制分数

#include<stdio.h>
int main(){
    int score;
    char grade;
    
    while(1){
    printf("输入成绩:");
    scanf("%d",&score);
    
    if(score<0||score>100){
    printf("结束输入");
    break; 
}
    else
    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';break;
    } 
    
    printf("等级是%c\n",grade);
}
    return 0;
} 

 

 

这里是用if()判断分数值然后break跳出循环。

 

part. 3: 比较continue与break用法

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

continue是结束循环进入下次循环,只对循环语句起作用。i=3不输出。

 

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

 

break是结束整个循环,可用于循环语句和switch()语句。i=3后面的都不输出。

 

part.4:判断5个数中最大与最小

#include<stdio.h>
int main(){
    double number,max,min;
    int n;
    printf("输入第1个数:"); 
    scanf("%lf",&number);
    max=min=number;
    
    for(n=2;n<6;++n){
        printf("输入第%d个数:",n);
        scanf("%lf",&number);
        
        if(number>max)
        max=number;
        else if(number<min)
        min=number;
        
    }
    
    printf("\nmax=%lf\nmin=%lf",max,min);
    return 0;
} 

 

 

 

编程练习:

1.求101~200间全部素数

#include<stdio.h>
#include<math.h>
int main(){//101~200
    int i,n,line=0;
    int a,b;
    printf("输入a,b:"); 
    scanf("%d%d",&a,&b);
    printf("输出%d~%d之间所有素数:\n",a,b);
    for(i=a;i<=b;i++){
        if(i<=1)
        continue;
        
        for(n=2;n<=sqrt(i);n++){
            if(i%n==0)
            break;
        }
        if(n>sqrt(i)){
            if(line++%6==0)
            printf("\n");
        printf("%d\t",i);
        }
    }
    return 0;
}

控制间隔与换行

 

2.打出星号塔

#include<stdio.h>
int main(){
    
    int line,col,n;   //列数,行数 
    char ch;
    printf("输入你要打印的字符:");
    ch=getchar();
    
    while(printf("输入你要打印的行数:"),scanf("%d",&n)) {

        
    if(n>0){
        for(col=1;col<=n;col++){
        line=col;
         
            while(line<n){     /*空格*/
                printf(" ");
                line++;
            }
        
        putchar(ch);
        
            for(line=col;line>1;line--){   /*星号*/
                
                printf("%c%c",ch,ch);
            }
        printf("\n");
        }
    }
        else
        break;
}
    return 0;
}