博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

G.C--YANG

  guoyangyang.cublog.cn

关于作者
姓名:G.C--YANG
职业:学生
年龄:20
位置:辽宁省丹东
个性介绍:咋天是历史,明天是未知,今天是礼物。
|| << >> ||
我的分类


C语言选择结构程序设计

  

一:关系运算符和关系表达式:

 1 C语言有6种关系运算符: 〈(小于)、〈=(小于等于)、〉(大于)、〉=(大于等于)、!=(不等于)。

其中前四种运算符优先级别相同,后两种相同,且前四种优先级别大于后两种。

关系运算符优先级低于算术运算符(+ - * / %);

关系运算符优先级高于赋值运算符(=);

例:c>a+b 等效于 c>(a+b);

    a>b==c等效于 (a>b)==c;

   a=b>c等效于 a=(b>c);

建议:新手在编写程序时最好把括号加上,防止混淆。

 

 

 2 关系表达式:用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)边接起来的式子。

  例:a!=b   a+b>b+c   (a=3)>(b=5)   'a'<'b'   (a>b)<(b<c)

关系表达式的值是一个逻辑值(真或假),用“0”或“1”表示。

 下面来看一个程序:

 #include<stdio.h>

  void main()

  {

   char c='k';

   int i=1,j=2,k=3;

   float x=3e+5,y=0.85;

   printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1);

   pirntf("%d,%d\n",1<j<5,x-5.25<=x+y);

   printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);

   getch();

  }

 运行结果为:1,0

             1,1

            0,0 

在本例中求出各种关系运算符的值,对于含有多种关系运算符的表达式,如k==j==i+5根据运算符的左结合性,先求k==j,该式不成立,其值为0,再算0==i+5;也不成立,故表达式的值为0。

 

 

 

二:逻辑运算符和表达式

 

  C语言中提供了三种逻辑运算符:&&(与运算) ||(或运算)  !(非运算)

  前两种具有左给合性,后一种为右结合.

  赋值运算符--&&,||--关系运算符--算术运算符--! (优先级由低到高)

 

  

  a>b && c>d等价于(a>b) && (c>d)
  !b==c||d<a等价于((!b)==c)||(d<a)
  a+b>c && x+y<b等价于((a+b)>c) && ((x+y)<b)

 

 

  同关系表达式,逻辑表达式也为一个值.真(1)或假(0).

  在逻辑表达式的求解中,并不是所有的运算符都被执行,例:

  a&&b&&c 只有a为真时,才需要判别b的值,只有a和b都为真时的情况下才需要判别c的值.只要a为假,就不必判别b和c的值.

   与之相同,只要a为真,就不必判别b和c.只有a为假时,才判别b,只有a和b都为假时,才判别c.

下面来看一个用到逻辑运算符比较多的程序:

 与程序:判别某一年是否为闰年.

 #include<stdio.h>

   void main()

  {

   long year;

  printf("Please input year:");

   scanf("%ld",&year);

    if((year%4==0&&year%100!=0)||year%400==0);

    printf("%ld is run year",year);

    else

    printf("%ld is not run year",year);

   getch();

  }

 

在这个程序中也可以在第七行前加一个"!"来判别非闰年.

   

 

 

三:if 语句

用if语句可以构成分支结构,根据给定的条件进行判断,以执行某个分支程序段。C语言中的if语句有三种形式。

 

1 if(表达式)语句

  来看一个程序,输入两个实数,按代数值的由小到大的顺序输出这两个数。

#include<stdio.h>

void main()

{

float a,b,f;

scanf("%f,%f",&a,&b);

if(a>b)

 {

 t=a;a=b;b=t;

 }

printf("%5.2f,%5.2f\n",a,b);

getch();

}

该语句的语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。

 

2 if(表达式)

  语句1 

  else

  语句2

  其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。

3 if(表达式1)语句1

  else if(表达式2)语句2

  else if(表达式3)语句3

  .

  .

  .

  else if(表达式M)语句M

  else 语句N

其语义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n 。 然后继续执行后续程序。

  

再来看两个程序,(1)

#include<stdio.h>

void main()

{

 float a;

 scanf("%f\n",&a);

 if(a<10)

 printf("one");

 else if(a<100)

 printf("two");

 else if(a<1000)

 printf("three");

 else if(a<10000)

 printf("four");

 else

 printf("error");

getch();

}

 

 

(2)

#include<stdio.h>

void main()

{

 float x,y;

 printf("Please input x:");

 scanf("%f\n",&x);

 if(x<1) y=x;

 else if(x>=1&&x<15) y=2*x+1;

 else if(x>=10&&x<24) y=6*x;

 else y=x;

 printf("%f\n",y);

 getch();

}

 

 

4  在使用if语句中还应注意以下问题

(1) 在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如: if(a=5) 语句;if(b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。如在if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。
又如,有程序段:

if(a=b)
printf("%d",a);
else
printf("a=0");

本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的.

 

 

if语句的嵌套

   if(表达式)

    if(表达式)语句1 

      else 语句2

    else

       if(表达式) 语句3

       else       语句4

 

6 条件运算符

  表达式1?表达式2:表达式3

   如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。

   其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。

   来看程序:

 写程序:输入三个数,求其最大.

  #include<stdio.h>

     void main()

    {

    long a,b,c,max;

    printf("Please input a,b,c:");

    scanf("%ld%ld%ld\n",&a,&b,&c);

    max=(a>b)?a:b;

    max=(max>c)?max:c;

   printf("The biggest is %ld\n",max);

   }

写程序:输入一个字型,判别它是否为大写字母,如果是,把它转换成小写字母;如果不是,原样输出.

 #include<stdio.h>

  void main()

  {

   char c;

   scanf("%c",&c);

   c=(c>='A'&&c<='Z')?(c+32):c;

   printf("%c\n",c);

  }

发表于: 2007-11-13,修改于: 2007-12-17 11:14,已浏览424次,有评论0条 推荐 投诉


网友评论
 发表评论