上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
条件语句
作者:未知 申领版权
2010年12月12日 共有 1626 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    一个表达式的返回值都可以用来判断真假,除非没有任何返回值的void型和返回无法判断真假的结构。当表达式的值不等于0时,它就是“真”,否则就是假。一样个表达式可以包含其他表达式和运算符,并且基于整个表达式的运算结果可以得到一个真/假的条件值。因此,当一个表达式在程序中被用于检验其真/假的值时,就称为一个条件。
    
    一、if语句
    if(表达式) 语句1;
    如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。
    如果语句1有多于一条语句要执行时, 必须使用{和} 把这些语句包括在其中, 此时条件语句形式为:
    if(表达式)
    {
    语句体1;
    }
    例如:
    if(x>=0) y=x;
    if(a||b&&c)
    {
    z=a b;
    c =z;
    }
    
    二、if--else语句
    除了可以指定在条件为真时执行某些语句外,还可以在条件为假时执行另外一段代码。在C语句中利用else语句来达到这个木的。
    if(表达式) 语句1;
    else 语句2;
    同样,当语句1或语句2是多于一个语句时,需要用{}把语句括起来。
    例如:
    if(x>=0) y=x;
    else y=-x;
    
    三、if--else if--else结构。
    if(表达式1)
    语句1;
    else if(表达式2)
    语句2;
    else if(表达式3)
    语句3;
    .
    .
    .
    else
    语句n;
    这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它有关的语句, 并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个else 语句n。最后这个else常起着缺省条件的作用。同样,如果每一个条件中有多于一条语句要执行时,必须使用{和}把这些语句包括在其中。
    条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。
    例如:
    if(x>20||x<-10)
    if(y<=100&&y>x)
    printf(Good);
    else
    printf(Bad);
    对于上述情况, Turbo C2.0规定: else语句与最近的一个if语句匹配, 上例中的else与if(y<=100&&y>x)相匹配。为了使else与if(x>20||x<-10)相匹配, 必须用花括号。如下所示:
    if(x>20||x<-10)
    {
    if(y<=100&&y>x)
    printf(Good);
    }
    else
    printf(Bad);
    
    下面举几个例子:
    1.输入一个数,如果大于0,输出plus;如果是负数,输出negative;如果正好是0,则输出zero。
    main()
    {
    float num;
    scanf(%f,&f);
    if(num>0)
    printf(plus\n);
    else if(num<0)
    printf(negative\n);
    else
    printf(zero\n);
    }
    先定义两个变量,然后输入一个数,然后判断这个数的范围,输出对应的字符串。
    
    2.输入一个数x,输出y。其中y是x的绝对值。
    main()
    {
    float x,y;
    scanf(%f,&x);
    if(x>=0) y=x;
    else y=-x;
    printf(%f\n,y);
    }
    程序比较简单,这儿就不分析了。
    其实Trubo C 2.0把一些常用的功能都写好了,我们只需要使用就可。例如求绝对值的功能在C的库里面就有。看下面的:
    #include math.h
    main()
    {
    float x,y;
    scanf(%f,&x);
    y=fabs(x); /*求x的绝对值,然后赋值给y*/
    printf(%f\n,y);
    }
    
    这个程序和上面的程序完成的功能是一模一样的,都是求绝对值。可以看出,用下面这个方法比上面就要好一些。由于fabs()是一个函数,系统自带的,所以在使用它的时候,我们必须把它所在的库文件math.h包含都程序中,即程序最前面一行。类似的还有求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。具体哪些有哪些没有,在什么库里面,可以查看一些手册。
    
    3.输入x,输出y,x和y满足关系:
    x<-5 y=x;
    -5<=x<1 y=2*x 5;
    1<=x<4 y=x 6;
    x>=4 y=3*x-2;
    程序如下:
    main()
    {
    float x,y;
    scanf(%f,&x);
    if(x<-5)
    y=x;
    else if(-5<=x&&x<1)
    y=2*x 5;
    else if(1<=x&&x<4)
    y=x 6;
    else
    y=3*x-2;
    printf(%f\n,y);
    }
    
    这里要说明两点:
    (1).-5<=x&&x<1不能写成-5<=x<1;1<=x&&x<4也不能写成1<=x<4;在C语言中,不能认识连续不等式。
    (2).y=2*x 5不能写成y=2x 5;y=3*x-2也不能写成y=3x-2;这与我们平时所写的方法不一样。
    
    4.输入三个数x,y,z,然后按从大到小输出。
    main()
    {
    float x,y,z;
    scanf(%f%f%f,&x,&y,&z);
    if(x>=y&&x>=z)
    {
    printf(%f\t,x);
    if(y>=z) printf(%f\t%f\n,y,z);
    else printf(%f\t%f\n,z,y);
    }
    else if(y>=x&&y>=z)
    {
    printf(%f\t,y);
    if(x>=z) printf(%f\t%f\n,x,z);
    else printf(%f\t%f\n,z,x);
    }
    else
    {
    printf(%f\t,z);
    if(x>=y) printf(%f\t%f\n,x,y);
    else printf(%f\t%f\n,y,x);
    }
    }
    说明:这是一个典型的if语句嵌套结构,如果不使用括号,那么if和else的对应关系就乱了。
    
    四、switch--case语句
    在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套if -else-if语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情况, Turbo C2.0提供了一个开关语句。开关语句格式为:
    switch(变量)
    {
    case 常量1:
    语句1或空;
    case 常量2:
    语句2或空;
    .
    .
    .
    case 常量n:
    语句n或空;
    default:
    语句n 1或空;
    }
    
    执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。
    注意:
    1.switch中变量可以是数值,也可以是字符,但必须是整数。
    2.可以省略一些case和default。
    3.每个case或default后的语句可以是语句体,但不需要使用{和}括起来。
    例如:
    main()
    {
    int x,y;
    scanf(%d,&x);
    witch(x)
    {
    case 1:
    y=x 1;
    break; /*退出开关语句,遇到break才退出*/
    case 4:
    y=2*x 1;
    break;
    default:
    y=x--;
    break;
    }
    printf(%d\n,y);
    }
    
    从上面的例子可以看出,用开关语句编的程序一定可以用if语句做。那么在什么情况下需要用switch语句呢?一般在出现比较整的情况下或者能转化成比较整数的情况下使用。看下面的例子:
    
    例子:一个学生的成绩分成五等,超过90分的为'A',80-89的为'B',70-79为'C',60-69为'D',60分以下为'E'。现在输入一个学生的成绩,输出他的等级。
    
    (1).用if语句
    main()
    {
    float num;
    char grade;
    scanf(%d,&num);
    if(num>=90) grade='A';
    else if(num>=80&&num<89) grade='B';
    else if(num>=70&&num<79) grade='C';
    else if(num>=60&&num<69) grade='D';
    else grade='E';
    printf(%c,grade);
    }
    
    (2).用switch语句
    main()
    {
    int num;
    char grade;
    scanf(%d,&num);
    num/=10;
    switch(num)
    {
    case 10:
    case 9:
    grade='A';
    break;
    case 8:
    grade='B';
    break;
    case 7:
    grade='C';
    break;
    case 6:
    grade='D';
    break;
    default:
    grade='E';
    break;
    }
    printf(%c,grade);
    }
    
    说明一点,并不是每个case里面有都语句,有时侯里面是空的,就好象这一题。switch语句执行的顺序是从第一case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade='A';break;退出。
    想想看,这里为什么要用num/=10;?
    假设当程序中有浮点数时怎么办呢?
    
    
    
    

 

相关新闻

对好点子说“不”
原则1聚焦最重要目标
高效执行4原则
如何使用本书
什么是高效执行4原则
真正的敌人——日常事务
单纯发号施令并不管用
是什么导致执行不力
致读者的一封信
战略与执行

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》