实验三

Part1.验证性内容

a.在键盘上输入三个数,判断能够成何种三角形。

#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("构成等边三角形\n");
    else if(a==b || a==c || b==c)
    printf("构成等腰三角形\n");
    else
    printf("构成一般三角形\n");
    
}

else
printf("不能构成三角形\n");



return 0;
}

使用while语句

#include <stdio.h>
int main(){
double a,b ,c;
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;
}

使用scanf()函数输入一个百分制成绩,要求输出成绩等级为A,B,C,D,E。

#include <stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生成绩:");
        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<=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;
}

用switch语句改写上述程序

#include <stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生成绩:");
        if(scanf("%d",&score)==0)
        break;
        if(score<0 || score>100){
            printf("输入成绩有误!\n\n");
            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,其功能区别是什么?

使用continue会跳过本层循环,并开始下一轮循环;而break语句则直接跳出循环。

 

 

对比和理解在嵌套的循环中控制语句continue和break 的功能。

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

思考

1.在两层嵌套循环中,内层循环中如果出现continue,是否影响外层循环?

不影响

2.在两层嵌套循环中,内层循环中如果出现break,是否影响外层循环?

不影响

Part 2.补足程序,使得程序运行

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

#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++;
printf("输入第%d个数: ", n);
scanf("%d", &number);
if(max<number)
max = number;
else if(min>number)
min = number;
}
}

Part 3.

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

#include<stdio.h>
#include <math.h>
int isprime(int n)

{    //返回1表示判断为质数,0为非质数,在此没有进行输入异常检测

    float n_sqrt;

    if(n==2 || n==3) return 1;

    if(n%6!=1 && n%6!=5) return 0;

    n_sqrt=floor(sqrt((float)n));

    for(int i=5;i<=n_sqrt;i+=6)

    {

        if(n%(i)==0 | n%(i+2)==0) return 0;

    }

        return 1;

}

int main()
{
    int num=0;
    int t=0;
    int i; 
    for( i=101 ; i<=200 ; ++i )
    {
        if(isprime(i))
        {
            num++;
            printf("%2d  ",i);
            t++;
            if(t==4)
            {
                printf("\n");
                t=0;
            }
        }
    }
    return 0;
 } 

编程打印出如下图形

#include<stdio.h>          /*输入输出头文件*/
int main()          /*空类型:主函数*/
{
    int a,b;          /*定义变量的数据类型为整型*/
    for(a=0;a<=4;a++)         /*确定行数*/
    {
        for(b=4-a;b>=0;b--)         /*确定空格数量*/
            printf(" ");
        for(b=1;b<=a*2+1;b++)         /*确定每一行星号数量*/
            printf("*");
        printf("\n");         /*换行*/
    }
    return 0;
    
}

 

posted @ 2019-04-15 22:04  阚ztkzt  阅读(165)  评论(1编辑  收藏  举报