我是靠谱客的博主 懵懂路人,最近开发中收集的这篇文章主要介绍c语言学习----选择结构程序设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

顺序结构看完了,然后来看看选择结构。

很好理解,选择么。选这个,要么选那个,要么都不选。就这么EASY。

简单看看知识点。


1、关系运算符与关系表达式

关系运算符比较两个表达式并决定两者的关系,关系运算的结果是假(0)或真(非0)。表5-1中给出了C语言中的关系运算符。

5-1

操作符

用法

>

大于

>=

大于或等于

<

小于

<=

小于或等于

==

等于

!=

不等于

 

 

 

 

 

 

 

 

使用关系运算符时要注意以下几点:

由两个字符组成的运算符之间不可加空格,如>=不能写成> =

关系运算符中,>>=<<= 四种运算符的优先级相同,==!=两种运算符的优先级相同,且前四种运算符的优先级高于后两种。

关系运算符、算术运算符和赋值运算符之间的优先次序依次是:算术运算符级别最高,关系运算符次之、赋值运算符最低。关系运算符按照从左到右的顺序结合。

由关系运算符组成的表达式,称为关系表达式,如:a>=b(a=3)>(d=4)a>b==c 。

C语言中,没有专门的“逻辑值”,而是用零来代表“假”,用非零来代表“真”,因此,关系运算的结果是10

例如:设a=4b=2,则关系表达式a>=b的结果为“真”,表达式值=1

关系表达式2*5>1+6 的结果为“真”,表达式值=1

            关系表达式2+3= =1+4*2 的结果为“假”,表达式值=0

            关系表达式5+8>1+6)的值=6

    关系运算符“= =”和赋值运算符“=”很容易混淆,必须注意两者之间的区别。

    赋值运算符“=

赋值运算的一般形式为:<变量名>=<表达式>

赋值运算符的左面只能是一个变量名,用等号右面的表达式的值对其赋值。运算结果的数据类型取决于赋值号左面变量的数据类型,可以是整型、实型、字符型等。

如表达式str=a’是一个赋值表达式,结果是字符型的。

关系运算符“= =

    关系运算“= =”的一般形式为:<表达式1>= =<表达式2>

关系运算“= =”是在两个表达式之间进行的,左面的表达式可以是一个变量,也可以是一个常数或表达式。运算结果的数据类型只能为整型(01)。

如表达式str= =a’是一个关系表达式,结果是01

关系运算往往作为条件出现在if语句的条件或循环判断条件之中,一般不单独使用。


2、逻辑运算符与逻辑表达式

C语言提供三种逻辑运算符,如表5-2所示:

5-2

运算符

含义

优先级

||

逻辑或(OR

&&

逻辑与(AND

逻辑非(NOT

在一个逻辑表达式中如果包含多个逻辑运算符,按优先级由高到低(!(非)→&&(与)→||(或))进行运算。

如:!a&&b 相当于 (!a&&(!b

    a||b&&c 相当于  a||b&&c

5-3中给出了C语言中的逻辑运算规则。

5-3

a

b

!a

!b

a&&b

a||b

0

0

0

0

1

1

0

0

0

1

0

1

0

0

1

0

0

1

0

0

1

1

0

0

 

用逻辑运算符将关系表达式或逻辑量连接起来构成逻辑表达式。在C程序中,经常会使用逻辑运算符,将简单的条件组合起来,形成更复杂的条件。


5-1判断某年份(year)是否为闰年的条件是看此年份是否满足下述两个条件之一:

能被4整除但不能被100整除;

能被400整除;

由此得到作为判断某年份是闰年的逻辑表达式:

year%4==0&&year%100!=0||year%400==0

反之,可得到判断某年份不是闰年的逻辑表达式:

!(year%4==0&&year%100!=0||year%400==0


3if语句

1) if语句的格式

简单if语句格式如下:

if(表达式)

语句;

括号中的表达式可以是任何形式的,但它通常情况下包含一个关系表达式,如果它的结果为真,则执行语句,否则就跳过去不执行。该语句的执行过程如图5-1所示。

                                     

 

 

5-1

例如:

if (Number1>=Number2)

Number1= Number2

该代码对变量Number1Number2的值进行比较,如果Number1较大,则把Number2的值赋给Number1

C语言中,用括号括起来的语句块与一个单语句等价,因此如果表达式的值为真时可以执行多个语句。由此可以得到if语句的第二种形式:

if(表达式)                  

{ 语句1

语句2

语句3

}

 

    该语句的执行过程如图5-2所示。

 

 

下面是有关if用法的一个简单的例子。



    5-3

if (Number1< Number2)

{ Number1= Number2

  printf (“The bigNumber is %d”, Number1)

}

在这个例子中,如果Number1小于Number2,不仅要给Number1赋值,还要输出Number1

有时,我们需要在某种条件下让程序执行一个分支,否则执行另一分支。这时,可以采用If……else语句。

if(表达式)

语句1

else

语句2

 

 

 

5-4在学生分数高于或等于60分时显示Passed,否则显示Failed。如图5-3所示。

 

 

 

5-3

程序如下:

if (grade>=60)

        printf(“Passedn”)

else

  printf(“Failedn”)

 

5-5某商品的零售价为每公斤8.5元,批发价为每公斤6.5元,购买量在10公斤以上,便可按批发价计算,设某顾客购买此商品weight公斤,请编程计算该顾客需付费(pay)多少?

程序如下:

main()

{

float weightpay

printf(“Please input the weight:”);

scanf(“%f”,&weight);

if weight>=10

pay=weight*6.5

else

pay=weight*8.5

printf(“You should pay  %f  yuansnpay);

}



2) if语句的嵌套

if else子句中,可以是任意合法的C语句或语句块,如果这子句是个if语句,则构成了if语句的嵌套。内嵌的if语句可以嵌套在if子句中,也可以嵌套在else子句中。

嵌套的if语句有以下几种格式:


if (条件1

  if(条件2

     语句1

  else 

     语句2

else

语句3

 

if (条件1

语句1

else

if(条件2

 语句2

  else

语句3

 

if (条件1

   if(条件2

     语句1

   else 语句2

else

if(条件3

语句3

   else 语句4


 

5-6根据输入的百分制成绩(score),要求输出成绩等级(gradeABCDE90分以上为A80~89分为B70~79分为C60~69分为D60分以下为E。用if语句实现,程序如下:

main()

{

int score

char grade

printf(“n Please  input  a  score0~100):”);

scanf“%d”,&score);

 if score>=90

   grade=’A

else if score>=80

       grade=’B

else if score>=70

       grade=’C

    else if score>=60

               grade=’ D

else

grade=’E’

printf(“The grade is %c.n”,grade);

}

程序的运行情况如下:

Please  input  a  score0~100):

86

The grade is B.



  1. 条件运算符

       假设要编制一个程序,求两数中的较大数。执行的过程是比较a是否大于b,如果是,则较大数(max)为a,否则令max等于b。程序如下:

    ifa>b

    max=a

    else

    max=b

    C语言提供了一种特殊的条件运算符,可以简化上面的语句。

    条件表达式的一般形式:表达式1 ?表达式2 :表达式3

    条件表达式的执行过程:先计算表达式1的值,如果表达式1的值不等于0,则求解表达式2,表达式2的值作为整个条件表达式的值,否则,求解表达式3,表达式3的值作为整个条件表达式的值。

    若用条件运算符表示,则上面的语句可表示如下:

    max=a>bab

       ↓    ↓ ↓

    表达式①   ② ③

    条件运算符的优先级高于赋值运算,低于其他运算。其功能相当于一个if-else语句。例如5-4就可用条件表达式来实现:printfgrade>=60?“Passedn” :“Failedn”);。


4switch 语句

  1. switch语句的一般格式

    switch(表达式)

    {  case 1:语句1

               [break]

    case 2:语句2

               [break]

    ……

    case N:语句N

               [break]

    [default  语句N+1]

    }

    其中的表达式的数据类型只能为整型或字符型,语句可以是任何有效的语句或语句块。


  1. switch语句的执行过程

    执行switch语句时,首先计算switch后表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值,如果找到,则执行该case后的各语句,直至遇到一个break语句为止;如果找不到匹配的case值,则执行switch的默认语句(default),直到switch语句体结束。如果找不到匹配的case值且不存在默认语句(default),则跳过switch语句体,什么也不做。

    5-6switch语句来实现,则程序如下:

    main()

    { 

    int  scorem

    printfnPlease  input  a  score0~100n);

    scanf%d”,&score);

    m=score/10

    switchm

    {

    case 9

    case10printfnThe grade is A.);break

    case 8printfnThe grade is B.);break

    case 7printfnThe grade is C.);break

    case 6printfnThe grade is D.);break

    defaultprintfnThe grade is E.);

    }

    }

    假设运行时输入75,则m=7,执行case 7:后的语句printfnThe grade is C.);break结束switch语句的执行。程序的运行情况如下:

    Please  input  a  score0~100):

    75

    The grade is C.

    break语句用于改变程序流程。当在switch语句中执行break语句时,break语句使程序从该结构中退出,程序接着执行该结构后的第一条语句。如果去掉上例中的所有break语句,运行程序并输入75,则程序的运行情况如下:

    Please  input  a  score0~100):

    75

    The grade is C.

    The grade is D.

    The grade is E.

    注意:该算法中。Switch语句后的表达式是m=score/10)而不是score,这样处理可以大大减少分支数目,简化程序。


5、程序设计举例

5-7对分段函数:
                        x        (x<1)
                   y=   2x-1     (1x<10)
                        3x-11    (x10)
输入x的值,求y值。
#include stdio.h

main()

{

float xy

printf(“n”);

scanf(“%f ”,&x);

ifx<1

  y=x

else ifx>=10

y=3*x-11

    else  y=2*x-1

printf(“ y=%fy);

}

程序的运行情况如下:

运行时输入一个小于1的数

Please input x

-2

y=-2.000000

运行时输入一个介于110之间的数

Please input x

8

y=15.000000

 

5-8编程求一元二次方程ax2+bx+c=0的实数根。

#include stdio.h

main()

{

float  abcdeltax1x2

printf(“nPlease input abc:”);

scanf(“%f%f%f”,&a&b&c);

delta=b*b-4*a*c

ifdelta<0

   printf(“There is no real fact!”);

else  ifdelta= =0

{x1 =-b/2*a);

printf(“x1 =%f”,x1);

}

else { x1 =-b+sqrtdelta))/2*a);

     x2=-b-sqrtdelta))/2*a);

printf(“x1=%f x2=%f”,x1x2);}

}

程序的运行情况如下:

运行时输入使△>0的情况

Please input abc

891

x1=-0.125000x2=-1.000000

运行时输入使△=0的情况

Please input abc

484

x1=-1.000000



5-9输入1~7之间的任意数字,程序将按照用户的输入数据输出对应的星期值。如用户输入3,则程序输出Wednesday。如果输入1~7以外的数字,则提示输入错误。

main()

{ 

int  week

printfnPlease  input  a integer1~7n);

scanf%d”,&score);

switchweek

{

case 1printfMondayn);break

case 2printfTuesdayn);break

case 3printfWednesdayn);break

case 4printfThursdayn);break

case 5printfFridayn);break

case 6printfSaterdayn);break

case 7printfSundayn);break

defaultprintfThe input is wrongn);

}

}

程序的运行情况:

 Please  input  a integer1~7

5

Friday

 Please  input  a integer1~7

9

The input is wrong



选择结构也比较简单。

哎呀,就不多说了。




最后

以上就是懵懂路人为你收集整理的c语言学习----选择结构程序设计的全部内容,希望文章能够帮你解决c语言学习----选择结构程序设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(27)

评论列表共有 0 条评论

立即
投稿
返回
顶部