实验三

验证性实验

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

注意输入格式 数字之间要有空格

1.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 || a==c || b==c) {
             if (a==b && a==c)
                 printf("构成等边三角形\n");
             else
                 printf("构成等腰三角形\n");
         }
         else
             printf("构成一般三角形\n");
     }
     else
         printf("不能构成三角形\n");
         
     return 0;
 } 

程序结果相同 第一个程序是根据等边,等腰三角形的性质判断三角形的形状,第二个程序是先判断三角形是否具有等腰三角形的性质再判断是不是等边三角形

1.3

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

增加了可以连续判断多组数的while循环。直到输入停止指令

1.4

 
 #include <stdio.h>
 int main() {
     int score;     // 用于存放百分制分数 
     char grade;  // 用于存放等级制分数(取值'A', 'B','C','D', 'E') 
    
    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;
 } 

字母要用单引号 增while循环,方便输入多组数据

1.5

#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整除,则结束循环,则不输出,因此这个陈旭的功能是输出1到5内不能被3整除的数字

1.6

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

break的功能是结束循环,因此此代码,当i增加到3的倍数就结束循环,因此输出1 2 

1.7

#include <stdio.h>
const int LINE=3;        // 定义符号常量LINE 
const int COLUME=5;        // 定义符号常量COLUME

int main() {
    int line;    // 定义变量line, 用来控制行数 
    int col;     // 定义变量col, 用来控制列数
    
    // 输出LINE行信息 
    for(line=1; line<=LINE; line++) {
        // 每一行中,利用循环,输出各列信息 
        for(col=1; col<=COLUME; col++) {
            if(col%3 == 0)  // 如果col是3的倍数,则结束本次循环,开始下一次循环 
                continue;
            
            printf("%5d", col);    
        }
        
        printf("\n"); // 每输出完一行,换行 
    }
     
    return 0;
} 

我们可以看到当line等于1时 执行内层循环,输出1 2 后col等于3 ,内层循环结束 不输出3 但是仍然输出4 因此内层循环出现continue 不会影响外层循环

1.8

#include <stdio.h>
const int LINE=3;        // 定义符号常量LINE 
const int COLUME=5;        // 定义符号常量COLUME

int main() {
    int line;    // 定义变量line, 用来控制行数 
    int col;     // 定义变量col, 用来控制列数
    
    // 输出LINE行信息 
    for(line=1; line<=LINE; line++) {
        // 每一行中,利用循环,输出各列信息 
        for(col=1; col<=COLUME; col++) {
            if(col%3 == 0)  // 如果col是3的倍数,则结束内层循环体 
                break;
            
            printf("%5d", col);
        }
        
        printf("\n"); // 每输出完一行,换行 
    }
     
    return 0;
} 

当第一行col输出2后,col=3 break使内层循环结束 但第一行结束后仍然有第二行输出,因此,在两层嵌套循环中,内层循环如果出现break,不影响外层

2.1

#include <stdio.h>
const int LINE=3;        // 定义符号常量LINE 
const int COLUME=5;        // 定义符号常量COLUME

int main() {
    int line;    // 定义变量line, 用来控制行数 
    int col;     // 定义变量col, 用来控制列数
    
    // 输出LINE行信息 
    for(line=1; line<=LINE; line++) {
        // 每一行中,利用循环,输出各列信息 
        for(col=1; col<=COLUME; col++) {
            if(col%3 == 0)  // 如果col是3的倍数,则结束内层循环体 
                break;
            
            printf("%5d", col);
        }
        
        printf("\n"); // 每输出完一行,换行 
    }
     
    return 0;
} 

2.2 用FOR改写

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

for语句可以简化程序代码

3.1

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

4.2

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

https://www.cnblogs.com/suzhen/p/10639213.html

https://www.cnblogs.com/linmuqiao/p/10596479.html

https://www.cnblogs.com/blogdzm/p/10638551.html

转载于:https://www.cnblogs.com/lxzblogs/p/10731748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值