《C程序设计》课程学习(5)——第5章 选择结构程序设计

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_34573534/article/details/102674200

5.1  关系运算符和关系表达式

一.关系运算符及其优先次序

二. 关系表达式

1.概念:用关系运算符将两个表达式连接起来的式子,称关系表达式。

2.关系表达式的值

5.2  逻辑运算符和逻辑表达式

一.逻辑运算符及其优先次序

二.逻辑表达式

1.概念: 用逻辑运算符将表达式连接起来的式子就是逻辑表达式。

2.逻辑表达式的值

5.3  if 语句

一.  if语句的三种形式

例1.输入两个实数,按由小到大次序输出。

方法1:

main( )
{ float a,b,t;
  scanf("%f,%f ",&a,&b);
  if(a>b) {t=a;a=b;b=t;}
  printf("%f,%f\n",a,b);
}

例1.输入两个实数,按由小到大次序输出。

方法2:

 main()
 { float a,b;
   scanf("%f,%f",&a,&b);
   if(a>b) printf("%f,%f\n",b,a);
   else printf("%f,%f\n",a,b);
 }

说明:

    if 和else后面都可以使用复合语句,即用{ }将若干个语句括起来。

例2.输入一个数,若大于零则输出。

         main( )
         { float a;
           scanf("%f",&a);
           if(a>0)  printf("%15.2f\n",a);
         }

例3.输入三个数,按由小到大顺序输出。

        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("%15.2f,%15.2f,%15.2f\n",a,b,c);
         }

二.  if语句的嵌套

        在 if 语句中又包含一个或多个 if 语句称为 if语句的嵌套。

例4   函数

方法一:

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

方法二:

if(x<=0)
    if (x==0) y=0;
    else  y=-1; 
else
   y=1;

三、条件运算符

说明:  

  • 优先于赋值运算符。  
  • 右结合。  
  • 若表达式2和表达式3的类型不同,则条件表达式的值为二者中较高的类型。

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

       main( )
        { char ch;
           scanf("%c",&ch);
           ch=(ch>= 'A '&& ch<= 'Z ')?(ch+32):ch;
           printf(“%c\n",ch);
        }

5.4  switch语句

一.一般形式:

5.5  程序举例

例1.任给三角形的三边,判断该三角形是等边、等腰、直角或一般。

分析: 用变量a, b, c表示三角形三条边的长。

  #include "math.h"
  main( )
  { int a,b,c;
     scanf{"%d%d%d",&a,&b,&c);
     if(a+b>c && b+c>a && c+a>b)
    {if(a= =b&&b= =c) printf("dengbian\n");
      else if(a= =b||b= =c||a= =c) printf("dengyao\n");
      else if(a*a+b*b= =c*c||a*a+c*c= =b*b||b*b+c*c= =a*a)
              printf("zhijiao\n");
      else  printf("yiban\n");
         }
      else  printf("data error\n");
       }

#include "math.h"
main( )
{float a,b,c,disc,x1,x2,realpart,imagpart;
  scanf("%f,%f,%f",&a,&b,&c);
  disc=b*b-4*a*c; 
  if (fabs(a)<=1e-6)  printf("no\n"); 
  else  if (fabs(disc)<=1e-6 ) printf("%8.4f\n",-b/(2*a));
  else  if (disc>1e-6 ) 
            { x1=(-b+sqrt(disc))/(2*a);
               x2=(-b-sqrt(disc))/(2*a);
               printf("%8.4f and %8.4f\n",x1,x2);
            }
else    
{  realpart=-b/(2*a);
    imagpart=fabs(sqrt(-disc)/(2*a);)
    printf("%8.4f+%8.4f  i \n", realpart, imagpart);
    printf("%8.4f-%8.4f  i  \n", realpart, imagpart);
     }
 }

例4.  给一百分制成绩,要求输出成绩等级'A','B','C','D','E'。90分以上为'A' ,80-89分为'B',70-79分为'C',60-69分为'D',60分以下为'E'。

  main( )
  {int score,temp;
   char grade;
   scanf("%d",&score);
   if ((score>100)||(score<0))
     printf("\ndata error\n");
  else
    { if(score= =100)temp=9;
      else  temp=score/10;
switch (temp)
  {case 9 : grade='A';break;
    case 8 : grade='B';break;
    case 7:  grade='C';break;
  case  6: grade='D' ; break; 
  case  5:
  case  4:
  case  3:
  case  2:
  case  1:
  case  0: grade='E' ; }
  printf("%d,%c\n",score,grade);
     
   }
 }

猜你喜欢

转载自blog.csdn.net/qq_34573534/article/details/102674200
今日推荐