Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104598109
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-20 15:02:58

【目的与要求】

      1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);

       2.学会正确使用逻辑运算符和逻辑表达式;

       3 熟练掌握if语句和switch语句。

【上机内容】

【一般示例】

【例1 已知三个数abc,找出最大值放于max中。

分析:由已知可得在变量定义时定义四个变量abcmaxabc是任意输入的三个数,max是用来存放结果最大值的。第一次比较ab,把大数存入max中,因ab都可能是大值,所以用if语句中if——else 形式。第二次比较maxc,把最大数存入max中,用if语句的第一种形式if形式。Max即为abc中的最大值。

include "stdio.h"

main()

{    

int a,b,c,max;          /*定义四个整型变量*/

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

if (a>=b)

max=a;              /*a>=b*/

else

  max=b;              /*a

if (c>max)

  max=c;              /*c是最大值*/

printf("max=%d",max);

}

  若输入下列数据,分析程序的执行顺序并写出运行结果

1a=1b=2c=3   

2a=2b=1c=3 

3a=3b=2c=1 

4a=3b=1c=2  

5a=3b=3c=2 

6a=2b=1c=2 

【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下:

       90分以上(包括90): A

       8090分(包括80):B

       7080分(包括70):C

       6070分(包括60):D

       60分以下:           E

方法一:(if嵌套`)

分析:

由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。

#include"stdio.h"

main()

{

 int  score;

 char  grade;

 printf("\nplease input a student score:");

 scanf("%f",&score);

 if(score>100||score<0)

  printf("\ninput error!");

 else

  { 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("\nthe student grade:%c",grade);

 }

}      

输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。

 

方法二:用switch语句

分析:

switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),BCD类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。

#include"stdio.h"

main()

{

int g,s;

char ch;

printf("\ninput a student grade:");

scanf("%d",&g);

s=g/10;

if(s<0||s>10)

 printf("\ninput error!");

else

    { switch (s)

    { case 10:

     case 9:  ch='A';  break;

     case 8:  ch='B';  break;

     case 7:  ch='C';  break;

     case 6:  ch='D';  break;

     default: ch='E';

     }

    printf("\nthe student scort:%c",ch);

 }

}                       

输入测试数据,同方法一一样调试程序并写出结果。

【例3】有一函数:

y=
x x<1
2x-1 1=
3x-11 x>=10

scanf函数输入x的值(分别为x<1,1~10,>=10三种情况),y值。

分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用If语句。

main()

{

int x,y;

printf(“please input x :”);

scanf(“%d”,&x);

if (x<1)

{

y=x;

printf(“y=%d\n”,y);

}

else if (x<10)

       {

         y=2*x-1;

printf(“y=%d\n”,y);

}

else

{

y=3*x-11;

printf(“y=%d\n”,y);

}

 

【作业】

1.       c语言如何表示“真”与“假”?系统如何判断一个量的“真”与“假”?

2.       写出下面各逻辑表达式的值。设a=3,b=4,c=5

(1)    a+b>c&&b= =c

(2)    a||b+c&&b-c

(3)    (a>b)&&!c||1

(4)    !(x=a)&&(y=b)&&0

(5)    !(a+b)+c-1&&b+c/2

3.       3个整数abc,由键盘输入,输出其中最大的数。

4.有一函数:

y=
x x<1
2x-1 1=
3x-11 x>=10

写一程序,输入x, 输出y

5.给出一百分制成绩,要求输出成绩等级ABCDE90分以上为A80~89B  70~79分为C60~69分为D60分以下为E

6 给一个不多于5位的正整数,要求:

a.       求出它是几位数;

b.       分别打出每一位数字;

c.       按逆序打出各位数字,例如原数为321,应输出123

7.输入4个整数,要求按由小到大的顺序输出。

阅读(341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~