C语言 分支经典练习

1.请完成分段函数,x<=0 ,y=x+10;<0x<=1,y=0, x>1,y=x-10输入不同的x值进行验证并输出相应的y值。

#include<stdio.h>
main()
{ double x=0, y=0;
 printf("请输入: x\n");
 scanf("%lf",&x);
 if(x<=0) y=x+10;

 if(x>0&&x<1&&x==1)  y=0;
 if(x>1)  y=x-10;
 printf("x=%.2f,y=%.2f",x,y);
}

2,请输入三条边长,判断这三条边能否构成三角形,若能构成三角形,则继续判断该三角形是属于等边三角形、等腰三角形还是普通三角形.(提示:判断三条边能否构成三角形的条件是任意两条边之和总是大于第三边)

#include<stdio.h>
main()
{
 double a, b, c;
    printf("请输入三角形的三条边\n");
    scanf("%lf%lf%lf", &a, &b, &c);   //输入三条边
    if (a + b > c && a + c > b && b + c > a)   //先判断是否能构成三角形
    {
        if (a == b && b == c) //再判断较为特殊的三角形
         {
            printf("此为等边三角形\n");
         }     
        else if (a == b || a == c || b == c)    //判断是否等腰
        {
           
                printf("此为等腰三角形\n");
                
        } else if (a + b > c && a + c > b && b + c > a) 
       
          {
           printf("此为普通三角形\n");
           
           
          } else  printf("您输入的数据构不成三角形\n");   //若前面判断不能构成三角形
          
          
    } 
}

3.某百货公司采用打折的形式促销商品,请输入顾客的购物金额,根据打折规则判断顾客的实际付款金额。已知折扣率如下:

(1)少于500元不打折;

(2)500元以上~1000元,按照九五折收取;

(3)1000元以上~2000元,按照九折收取;

(4)2000元以上~3000元,按照八五折收取;

(5)3000元以上按照八折收取;

计算过程中所有小数四舍五入,保留小数点后面两位。

#include<stdio.h>
main()
{
double x=0,y=0;
printf("请输入消费金额:\n");
scanf("%lf",&x);
if(x<500) y=x;
if(x>=500&&x<1000)
y=x*0.95;
if(x>=1000&&x<2000)
y=x*0.9;
if(x>=2000&&x<3000)
y=x*0.85;
if(x>=3000) 
y=x*0.8;
printf("实际收费为=%.2f圆\n",y);



}

4.从键盘输入一个年份1970年至2025年之间的年份,判断这一年到底是平年还是闰年。判断方法如下:若该年份能被400整除,或能被4整除而不能被100整除,则此年为闰年,否则为平年。

#include<stdio.h>
main()
{

int a=0;
printf("请输入1970-2025区间年份\n");
scanf("%d",&a);
if (a<1970 || a>2025){	printf("输入错误,请输入区间内的年份"); 
}
else if((a%4==0&&a%100!=0)||a%400==0){
	printf("%d:是闰年",a);
	 
} else {printf("%d:是平年",a);
}


}

5.根据输入的生日(年y、月m、日d)和今天的日期(年yt、月mt、日dt )计算并输出十足年纪。

注意:在两种情况下,需要将计算出的年龄(age=yt-y)减1,才是十足年龄。

一、本年还未到出生年月,即当前月份mt小于出生月份;

二、本年已经进入出生月份,即当前月份mt等于出生月份,但还未到出生日。即当前日dt小于出生日d。

#include<stdio.h>
main()
{
 int y, m, d;    // 输入的生日
    int yt, mt, dt; // 今天的日期
    int age;        // 十足年纪
    // 输入生日和今天的日期
    printf("请输入生日(年 月 日):");
    scanf("%d %d %d", &y, &m, &d);
    printf("请输入今天的日期(年 月 日):");
    scanf("%d %d %d", &yt, &mt, &dt);
    // 计算年龄
    age = yt - y;
    if (mt < m || (mt == m && dt < d)) {
        age--;
    }
    // 输出十足年纪
    printf("十足年纪为:%d岁\n", age);
    return 0;

}

6.给定一个不多于4位数的正整数,求其有效位的个数。

#include<stdio.h>
main()
{
 int num, digitCount = 0;
    printf("请输入一个不多于4位的正整数:");
    scanf("%d", &num);
    
    if (num == 0) {
        digitCount = 1;
    }
    else {
        if (num >= 1000) {
            digitCount = 4;
        }
        else if (num >= 100) {
            digitCount = 3;
        }
        else if (num >= 10) {
            digitCount = 2;
        }
        else {
            digitCount = 1;
        }
    }
    
    printf("有效位的个数为:%d\n", digitCount);

}

7.输入三角形的3个边长,并计算三角形的面积。

注:三角形的面积公式为:area=sqrt(s(s-a)(s-b)(s-c))其中,s=(a+b+c)/2。

#include<stdio.h>
#include<math.h>
main()
{

   double a, b, c, s, area;
    
    printf("请输入三角形的三个边长:\n");
    scanf("%lf %lf %lf", &a, &b, &c);
    
    s = (a + b + c) / 2;
    area = sqrt (s*(s - a)*(s - b)*(s - c));
    
    printf("三角形的面积为:%.2lf\n", area);

}

猜你喜欢

转载自blog.csdn.net/qq_44856617/article/details/133832662