第四章:选择结构程序设计

例4.1 在例3.5的基础上对程序进行改进。题目要求解得ax²+bx+c=0方程的根。由键盘输入a,b,c。假设a,b,c的值任意,并不保证b²-4ac≥0。需要在程序中进行判别,如果b²-4ac≥0,就计算并输出方程的两个实根,如果b²-4ac<0,就输出“此方程无实根”的信息。

#include<stdio.h> 
#include<math.h>
 int main()
  { 
  double a,b,c,disc,x1,x2,p,q; 
  scanf("%lf%lf%lf",&a,&b,&c); 
  disc=b*b-4*a*c;
   if(disc<0) 
   printf("This equation hasn't real roots\n");
    else
     {
     p=-b/(2.0*a); 
     q=sqrt(disc)/(2.0*a); 
     x1=p+q;x2=p-q;
      printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2);
       }
        return 0;
         }

运行结果如下:

在这里插入图片描述
在这里插入图片描述

例4.2 输入两个实数,按由小到大的顺序输出这两数。

#include<stdio.h>
 int main()
  {
   float a,b,t; 
   scanf("%f,%f",&a,&b);
    if(a>b) 
    {//将a和b的值互换
     t=a; 
     a=b;
      b=t; 
      }
       printf("%5.2f,%5.2f\n",a,b); 
       return 0;
        }

在这里插入图片描述

例4.3 输入3个数a,b,c,要求按由小到大的顺序输出。

#include<stdio.h> 
int main()
 {
  float a,b,c,t; 
  scanf("%f,%f,%f",&a,&b,&c); 
  if(a>b) 
  { 
  t=a; 
  a=b;
   b=t; 
   }
    if(a>c)
     {
      t=a;
       a=c;
        c=t; 
        }
         if(b>c)
          { 
          t=b;
           b=c;
            c=t;
             }
              printf("%5.2f,%5.2f,%5.2f\n",a,b,c); 
              return 0; 
              }

运行结果如下:
在这里插入图片描述

例4.4 输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。

#include<stdio.h>
int main()
{
	char ch;
	scanf("%c",&ch);
	ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
	printf("%c\n",ch);
	return 0;
}

运行结果如下:
在这里插入图片描述例4.5 如下图:
在这里插入图片描述程序1:

#include<stdio.h>
 int main()
 {
  int x,y;
   scanf("%d",&x);
    if(x<0) y=-1;
     else if(x==0) y=0; 
     else y=1;
      printf("x=%d,y=%d\n",x,y); 
      return 0; 
      } 

运行结果如下:
在这里插入图片描述程序2:

#include<stdio.h>
 int main()
 {
  int x,y;
   scanf("%d",&x);
    if(x<0) y=-1;
     else if(x==0) y=0; 
     else y=1;
      printf("x=%d,y=%d\n",x,y); 
      return 0; 
      } 

运行结果如下:
在这里插入图片描述

例4.6 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70至84分,C等为60至69分,D等为60分以下。成绩的等级由键盘输入。

#include<stdio.h> 
int main()
 {
  char grade;
   scanf("%c",&grade); 
   printf("Your score:"); 
   switch(grade)
    { 
    case'A':printf("85~100\n");break;
    case'B':printf("70~84\n");break; 
    case'C':printf("60~69\n");break;
    case'D':printf("<60\n");break;
     default:printf("enter data error!\n");
      } 
      return 0; 
      }

运行结果如下:
在这里插入图片描述

例4.7 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A’或‘a’字符,就会执行A操作,输入一个‘B’或‘b’字符,就会执行B操作。

#include<stdio.h>
 int main()
  { 
  void actionl(int,int),action2(int,int);
   char ch;
    int a=15,b=23;
     ch=getchar();
      switch(ch) 
      {
       case'a':
        case'A':actionl(a,b);break;
         case'b': 
         case'B':action2(a,b);break; 
         default:putchar('\a');
          }
           return 0;
            }
             void actionl(int x,int y)
              { 
              printf("x+y=%d\n",x+y);
               } 
               void action2(int x,int y)
                { 
                printf("x*y=%d\n",x*y);
                 }

运行结果如下:
在这里插入图片描述
在这里插入图片描述

例4.8 写一程序,判断是否为闰年。

程序1

#include<stdio.h>
 int main()
  {
  int year,leap;
   printf("enter year:"); 
   scanf("%d",&year);
    if(year%4==0)
     {
      if(year%100==0)
       { if(year%400==0)
        leap=1; 
        else
         leap=0;
          }
           else
            leap=1;
             }
             else
              leap=0;
               if(leap)
                printf("%d is ",year);
                 else 
                 printf("%d is not ",year);
                  printf("a leap year.\n");
                   return 0;
                    } 

运行结果如下:

在这里插入图片描述在这里插入图片描述程序2

#include<stdio.h>
 int main()
  {
   int year,leap;
    printf("enter year:");
     scanf("%d",&year);
      if(year%4!=0)
       leap=0;
        else if(year%100!=0) 
        leap=1; 
        else if(year%400!=0) 
        leap=0;
         else
          leap=1; 
          if(leap)
           printf("%d is ",year);
            else
             printf("%d is not ",year);
              printf("a leap year.\n");
               return 0; 
               } 

在这里插入图片描述程序3

#include<stdio.h>
 int main() 
 { 
 int year,leap;
  printf("enter year:"); 
  scanf("%d",&year); 
  if((year%4==0&&year%100!=0)||(year%400==0))
   leap=1;
    else
     leap=0;
      if(leap)
       printf("%d is ",year); 
       else
        printf("%d is not ",year); 
        printf("a leap year.\n"); 
        return 0;
         } 

运行结果如下:
在这里插入图片描述

例4.9 求ax²+bx+c=0方程的解。

#include<stdio.h>
 #include<math.h>
  int main() 
  { 
  double a,b,c,disc,x1,x2,realpart,imagpart;
   scanf("%lf,%lf,%lf",&a,&b,&c);
    printf("The equation "); 
    if(fabs(a)<=1e-6) 
    printf("is not a quadratic\n"); 
    else
     {
      disc=b*b-4*a*c; 
      if(fabs(disc)<=1e-6)
       printf("has two equal roots:%8.4f\n",-b/(2*a));
        else
         if(disc>1e-6) 
         {
          x1=(-b+sqrt(disc))/(2*a);
           x2=(-b-sqrt(disc))/(2*a); 
           printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
            } 
            else 
            { 
            realpart=-b/(2*a);
             imagpart=sqrt(-disc)/(2*a);
              printf("has complex roots:\n");
               printf("%8.4f+%8.4fi\n",realpart,imagpart); 
               printf("%8.4f-%8.4fi\n",realpart,imagpart);
                } 
                } 
                return 0;
                 }

运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例4.10 运输公司对用户计算运输费用。路程越远,运费越低。标准如下: s<250 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤s<3000 10%折扣 3000≤s 35%折扣

#include<stdio.h>
 int main() 
 { 
 int c,s;
  float p,w,d,f; 
  printf("please enter price,weight,discount:"); 
  scanf("%f,%f,%d",&p,&w,&s);
   if(s>=3000) c=12;
    else c=s/250;
     switch(c)
      { 
      case 0:d=0;break;
       case 1:d=2;break;
        case 2:
         case 3:d=5;break;
          case 4:
           case 5:
            case 6: 
            case 7:d=8;break; 
            case 8:
             case 9: 
             case 10:
              case 11:d=10;break;
               case 12:d=15;break; 
               }
                f=p*w*s*(1-d/100);
                 printf("freight=%10.2f\n",f); 
                 return 0;
                  }

运行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44679743/article/details/87886570