实验三

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

 

转载于:https://www.cnblogs.com/kzt1121/p/10713565.html

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值