精华内容
下载资源
问答
  •  根据布尔值的定义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE),TRUE的值究竟是多少没有统一的标准。例如:VC++将TRUE定义为TRUE,VB则将TRUE定义为-1。 例:假设flag被定义为一个布尔变量,...

    不可将布尔值直接与TRUR、FALSE或者“0”、“1”进行比较。

        根据布尔值的定义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE),TRUE的值究竟是多少没有统一的标准。例如:VC++将TRUE定义为TRUE,VB则将TRUE定义为-1。

    例:假设flag被定义为一个布尔变量,它与零值的比较标准if语句如下:

    if (flag)    //表示flag为真时满足条件

    if (!flag)    //表示flag为假时满足条件

    展开全文
  • C语言中,用数字0表示假,用一个0整数表示真(通常用1表示)。 条件表达式由变量与条件运算符组成: 1. C语言中的条件运算符 符号 说明 > 大于 < 小于 == 等于 != 不等于 >=

    一、条件表达式

    条件表达式用来表示一个条件是否成立,它只有两个值,即真(true)和假(false)。

    例如“a > 0”就是一个条件表达式,如果a>0,则条件成立,即该表达式的值为;如果a <= 0,则条件不成立,即该表达式的值为


    在C语言中,用数字0表示假,用一个非0整数表示真(通常用1表示)。


    条件表达式由变量与条件运算符组成:

    1. C语言中的条件运算符

    符号 说明
    > 大于
    < 小于
    == 等于
    != 不等于
    >= 大于等于
    <= 小于等于

    #include<stdio.h>
    
    void main()
    {
    	int a = 1;
    	printf("%d\n", a == 1); // 结果为真,输出1 
    	printf("%d\n", a > 1);  // 结果为假,输出0 
    	printf("%d\n", a < 1);  // 结果为假,输出0 
    	printf("%d\n", a != 1); // 结果为假,输出0 
    	printf("%d\n", a >= 1); // 结果为真,输出1 
    	printf("%d\n", a <= 1); // 结果为真,输出1 
    }
    

    2. C语言中的逻辑运算符

    符号 说明 作用
    && 并且 如果两个条件表达式都为真,则结果为真,否则结果为假
    || 或者 只要其中一个条件表达式的结果为真,则结果为真;如果两个表达式的结果都为假,则结果为假
    ! 取反 对一个条件表达式使用,将真变为假,将假变为真

    逻辑运算符用于条件表达式间的运算:

    #include<stdio.h>
    
    void main()
    {
    	int a = 1, b = 2;
    	printf("%d\n", a == 1 && b == 2); // 结果为真,输出1 
    	printf("%d\n", !(a == 1));        // 结果为假,输出0 
    	printf("%d\n", a == 2 || b == 2);  // 结果为真,输出1 
    } 
    

    二、if分支结构

    1. 单分支结构

    如果条件表达式的结果为真,则执行代码块中的代码

    if(条件表达式)
    {
        代码; 
    }
    

    2. 二分支结构

    • 如果条件表达式的结果为真,则执行代码块1中的代码;
    • 如果条件表达式的结果为假,则执行代码块2中的代码
    if(条件表达式)
    {
        代码块1;
    }
    else
    {
        代码块2;
    }
    

    3 . 多分支结构

    • 如果条件表达式1的结果为真,则执行代码块1中的代码;
    • 如果条件表达式1的结果为假,且条件表达式2的结果为真,则执行代码块2中的代码;
    • 如果条件表达式1的结果为假,且条件表达式2的结果为假,则执行代码块2中的代码;
    if(条件表达式1)
    {
        代码块1;
    }
    else
    {
        if(条件表达式2)
        {
        	代码块2;
        }
        else
        {
            代码块3;
        }
    }
    

    多分支结构本质上是二分支结构或单分支结构间的组合。


    如果if或else下面的代码块里只有一行语句,我们可以省略“{}”,如下面的代码:

    #include<stdio.h>
    
    void main()
    {
    	int a = 1;
    	if(a > 0)
    		printf("a是正数");
    	else if(a < 0)
    		printf("a是负数"); 
    	else
    		printf("a是0");
    }
    

    三、三元表达式

    条件表达式 ? 表达式1 : 表达式2

    如果条件表达式的值为真,则执行表达式1,否则执行表达式2。

    利用 三元表达式 可以减少代码量。

    例如:

    #include<stdio.h>
    
    void main()
    {
    	int x, y;
    	y = x > 0 ? x + 1 : x - 1;
    	printf("%d", y);
    }
    

    等价于

    #include<stdio.h>
    
    void main()
    {
    	int x, y;
    	x = 5;
    	if(x > 0)
    		y = x + 1;
    	else 	
    		y = x - 1;
    	printf("%d", y);
    } 
    

    四、switch分支结构

    switch(变量)
    {
            case 1:  //如果变量的值为1,则跳转到这里,并向下执行
            	代码1;
            	break;
            case 2:  //如果变量的值为2,则跳转到这里,并向下执行
            	代码2;
            	break;
            case 3:  //如果变量的值为3,则跳转到这里,并向下执行
            	代码3;
            	break;
        	default: //如果变量的值不是1,不是2,也不是3,则跳转到这里,并向下执行
        		代码4;
        		break;
    }
    
    • break指跳出当前switch语句。
    • 传入到switch语句里的变量只能是整数。(char型变量也是可以的,因为char型也是整数)

    如果不加break,在跳转到某处时,代码就会依次向下执行,直到代码块的最后。

    #include<stdio.h>
    
    void main()
    {
    	int a = 2; 
    	switch(a)
        {
    		case 1:
    			printf("a是1\n");
    		case 2:
    			printf("a是2\n");
    		case 3:
    			printf("a是3\n");
    		case 4:
    			printf("a是4\n");
    	}
    }
    

    上面的代码会输出

    a是2

    a是3

    a是4

    这是因为在跳转到“case 2:”后,没有遇到break语句,所以代码块中余下的代码都被执行了。正确的做法是为它们添加break语句。

    #include<stdio.h>
    
    void main()
    {
    	int a = 2; 
    	switch(a){
    		case 1:
    			printf("a是1\n");
    			break;
    		case 2:
    			printf("a是2\n");
    			break;
    		case 3:
    			printf("a是3\n");
    			break;
    		case 4:
    			printf("a是4\n");
    			break;
    	}
    }
    

    小练习

    编写一个程序,输入一个学生的成绩(整数),然后按下列规则输出对其成绩的评价:

    1. 90-100为 优
    2. 80-89为 良
    3. 70-79为 中
    4. 60-69为 可
    5. 60分以下为 差









    解析

    1. 利用if语句

      #include<stdio.h>
      
      void main()
      {
      	int n;
      	scanf("%d", &n); 
      	if(n >= 90)
      		printf("优"); 
      	else if(n >= 80)
      			printf("良");
      		else if(n >= 70)
      				printf("中");
      			else if(n >= 60)
      					printf("可"); 
      				else
      					printf("差"); 		
      } 
      
    2. 利用switch语句

      #include<stdio.h>
      
      void main()
      {
      	int n;
      	scanf("%d", &n); 
      	switch(n / 10)
      	{
      		case 10:
      		case 9:
      			printf("优");
      			break;
      		case 8:
      			printf("良");
      			break;
      		case 7:
      			printf("中");
      			break;
      		case 6:
      			printf("可");
      			break;
      		default:
      			printf("差");
      			break;
      			
      	}
      } 
      

    好了,文章到这里就结束了,我们下一节再见

    点击查看更多【C语言从零到入门】系列

    每周五晚20:00更新

    展开全文
  • 根据布尔类型的语义,零值为“假” (记为 FALSE) ,任何非零值都是“真” (记为TRUE) 。TRUE 的值究竟是什么并没有统一的标准。例如 Visual C++ 将 TRUE 定义为 1,而 Visual Basic 则将 TRUE 定义为-1。 假设...
     
    

     1、布尔变量与零值比较

    不可将布尔变量直接与 TRUE、FALSE 或者 1、0 进行比较。
    根据布尔类型的语义,零值为“假” (记为 FALSE) ,任何非零值都是“真” (记为TRUE) 。TRUE 的值究竟是什么并没有统一的标准。例如 Visual C++  将 TRUE 定义为 1,而 Visual Basic 则将 TRUE 定义为-1。
    假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:
    if (flag)  // 表示 flag 为真

    if (!flag) // 表示 flag 为假
    其它的用法都属于不良风格,例如:
      if (flag == TRUE)  
      if (flag == 1 )   
      if (flag == FALSE)  
      if (flag == 0)

     

    2、整型变量与零值比较

    应当将整型变量用“==”或“!=”直接与 0比较。 
    假设整型变量的名字为 value,它与零值比较的标准 if 语句如下:
    if (value == 0)  
    if (value != 0)
    不可模仿布尔变量的风格而写成
    if (value)   // 会让人误解 value 是布尔变量
    if (!value)

     

    3、浮点变量与零值比较

    不可将浮点变量用“==”或“!=”与任何数字比较。 
    千万要留意,无论是 float 还是 double 类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。 
    假设浮点变量的名字为 x,应当将  if (x == 0.0)  // 隐含错误的比较 转化为 

    if ((x>=-EPSINON) && (x<=EPSINON))
    其中 EPSINON是允许的误差(即精度)

     

    4、指针变量与零值比较

    应当将指针变量用“==”或“!=”与 NULL比较。 
     指针变量的零值是“空” (记为 NULL) 。尽管 NULL 的值与 0 相同,但是两者意义不
    同。假设指针变量的名字为 p,它与零值比较的标准 if 语句如下:
        if (p == NULL) // p 与 NULL 显式比较,强调 p 是指针变量
        if (p != NULL)
     
    不要写成
        if (p == 0)   // 容易让人误解 p 是整型变量
        if (p != 0)    
      或者
    if (p)      // 容易让人误解 p 是布尔变量
      if (!p) 

    展开全文
  • 零值比较--BOOL,int,float,指针变量与零值比较的if语句 这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本...首先给个提示:题目中要求的是零值比较,而与0进行比较,在C++里“零值”的范

    零值比较--BOOL,int,float,指针变量与零值比较的if语句

    这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。
    首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0, 0.0 , FALSE或者“空指针”。int型变量 n 与“零值”比较的 if 语句就是:

    if ( n == 0 )

    if ( n != 0 )

    如下写法均属不良风格.。

    if ( n )              // 会让人误解 n 是布尔变量

    if ( !n  )

    请写出 BOOL flag 与“零值”比较的 if 语句。

    根 据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,而Visual Basic 则将TRUE 定义为-1。所以我们不可以将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。

    标准答案:

    if ( flag )

    if ( !flag )

    如下写法均属不良风格。

    if (flag == TRUE) 

    if (flag == 1 ) 

    if (flag == FALSE) 

    if (flag == 0) 

    请写出 float x 与“零值”比较的 if 语句。

    千万要留意,无论是float 还是double 类型的变量,都有精度限制,都不可以用“==”或“!=”与任何数字比较,应该设法转化成“>=”或“<=”形式。(为什么?文章之后有详细的讨论,可参考)

    假设浮点变量的名字为x,应当将

    if (x == 0.0)         // 隐含错误的比较

    转化为

    if ((x>=-EPSINON) && (x<=EPSINON))

    其中EPSINON 是允许的误差(即精度)。

    标准答案示例:

    const float EPSINON = 0.00001;

    if ((x >= - EPSINON) && (x <= EPSINON)

    如下是错误的写法。

    if (x == 0.0) 

    if (x != 0.0) 

    请写出 char *p 与“零值”比较的 if 语句。

    标准答案:

    if (p == NULL)

    if (p != NULL)

    如下写法均属不良风格。

    if (p == 0)        // 容易让人误解p是整型变量

    if (p != 0) 

    if (p)                // 容易让人误解p是bool型变量

    if (!p) 

    以 上的不良风格很多都能通过编译,但是语句并不能很好的表达与零值进行比较的逻辑依据。一般的,如果想用 if 语句判断一个变量的真假,应该直接使用if(var)、if(!var),表明此 if 语句的功能为“逻辑”判断;如果想用 if 语句判断一个数值型变量(short、int、long等),应该用if(var==0),表明此 if 语句是将变量与0进行“数值”上的比较;而检视指针是否为空则适宜用if(var==NULL),这是一种很好的编程习惯。

    浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。以下给出详细原因:
    浮点数在内存中的存贮机制和整型数不同,有舍入误差,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 
    所以浮点数在运算过成功运算通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。 
    例如,一个指数范围为±4的4位十进制浮点数可以用来表示43210,4.321或0.0004321,但是没有足够的精度来表示432.123和43212.3(必须近似为432.1和43210)。当然,实际使用的位数通常远大于4。 
    所以浮点数不能够判断相等,像 if(x==0)的这样的编码是不总是正确的,我们在判断浮点数相等时,推荐用范围来确定,若x在某一范围内,我们就认为相等,至于范围怎么定义,要看实际情况而已了,float,和double 各有不同 
    所以const float EPSINON = 0.00001; 
    if ((x >= - EPSINON) && (x <= EPSINON) 这样判断是可取的 
    至于为什么取0.00001,可以自己按实际情况定义
    展开全文
  • C语言中的真假

    万次阅读 2011-12-17 17:50:34
    在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出...
  • 硬件家园单片机C语言零基础入门资料汇总链接: https://mp.weixin.qq.com/s/hMTreNUX_V90461tvALjJA ​ 一、逻辑与或 基础理论: 逻辑与或,运算对象是布尔(1或0,真或假),类似于数字电路的与门,或门,非门...
  • [C] C语言中的布尔

    2015-03-12 09:37:00
    C不具备显示的布尔类型,所以使用整数来代替,规则是:零是假,任何非零值皆为真。 反过来说,如果逻辑表达式为真其值一定为真,若逻辑表达式为假其值一定为零。 转载于:...
  • C语言

    2019-09-27 11:55:37
    2. C把任何非零都认为是真。非零即为真! 3. C99 添加_Bool 类型,以前是用int类型,包含stdbool.h头文件 可以用bool代替_Bool 4. scanf 得到正确的输入,返回1,否则返回0 5. 关系运算符到优先级低于+ - *...
  • C语言习题

    千次阅读 2019-01-02 08:55:48
    C语言习题 填空 1. 一个C源程序中一定要有一个_______函数。 2. 在C语言中,变量在使用前一定要先_______ 3. 设定义int y, m=27;...5. C语言中,非零表示逻辑_________,零表示逻辑_____...
  • C语言错题整理

    万次阅读 多人点赞 2018-03-10 16:53:13
    B:当A(非零值)是真,且B(非零值)是真,才会返回1,表示真;否则,返回0,表示假。 A||B:当A(非零值)是真,或者B(非零值)是真,会返回1,表示真;否则,返回0,表示假。 !A,将A取反,假设A的值或者表达式为真...
  • isalpha 函数:isalpha ...功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,在标准c中相当于使用“isupper(ch)||islower(ch)”做测试,返回非零值(不一定是1),否则返回零。 isdigit 原型:e...
  • 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 ...
  • 第4章 选择结构 信息工程学院 基本内容 41 关系运算与逻辑运算 42 if语句 43 条件表达式构成的选择结构 44 switch语句 41 关系运算与逻辑运算 4.1.1 C语言的逻辑值 在C语言中:用非零值来表示真 用零来表示假 4.1.2 ...
  • 下面分别用函数CompactArr_vl和CompactArr_v2来实现上述处理要求,函数的返回值为非零元素的个数。 函数CompactArr_vl(int a[], intn)的处理思路是:首先申请一个与数组a的大小相同的动态数组空间,然后顺序扫描数组...
  • C语言实现稀疏矩阵

    2021-01-01 08:31:13
    //非零元素的 }Triple; typedef struct { Triple data[maxsize]; int m,n; //矩阵的行、列 }TSMarix; InitTriple(TSMarix *M) { int i,j,k,v,t; printf(请输入稀疏矩阵非零元素的个数:\n); scanf(%d,&v); ...
  • c语言api

    2013-07-31 21:06:33
    原型:extern int isalnum(int c); 用法:#include 功能:判断字符变量c是否为字母或数字 说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。
  • 题目解决代码及点评/************************************************************************/ /* 4. 编一个程序,把一批非零整数中的偶数、奇数的平均分别计算出来。用零作为终止标记
  • C语言判断

    2020-05-21 11:58:01
    C 语言把任何非零和非空的假定为true,把零或null假定为false。 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 C 语言提供了以下类型的判断语句。点击链接查看每个语句的细节。 语句 描述 ...
  • C语言笔记

    2018-06-16 15:59:45
    (iNumber=3)执行之后还是2在计算机里面非零为真,0为假逻辑运算与关系运算返回值为0或1按位运算符(数学)&amp; 有零则 0| 有1则 1~ 非^异或 同则0不同则1 每一个二进制位按相同为零,不同为一的运算方式特殊...
  • if语句是C++/C语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if...根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如V
  • c语言格式大整理

    2013-08-10 10:06:00
    1、C语言中,非零值为真,真用1表示;零值为假,假用0表示。 2、转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,...
  • 据布尔类型的语义,零值为“ 假”(记为 FALSE),任何非零值都是“ 真”(记为TRUE)。 TRUE的值究竟是什么并没有统一的标准。例如 Visual C++ 将 TRUE定义为 1, 而 Visual Basic则将 TRUE定义为-1 。 假设布尔...
  • 最后一个字节内容为'/0',即值为0,用来标识字符串的结束,C语言标准库中关于字符串的处理程序如strcat, strcpy, strcmp等都是通过它来找到字符串的结束位置,如果把这个字节修改成非零值,程序会继续搜索,直到
  • 在高中数学中,我们学过...在编程中,我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。 1) 与运算(&&) 参与运算的两个量都为真时,结
  • C语言-选择结构

    2020-04-04 21:26:34
    文章目录1.逻辑2.关系运算符3.逻辑运算符4.优先级5.短路现象6.选择结构if语句7.if...else8.交换9.复合语句10.if语句嵌套11....C语言中:任何非零的数都当做为真!!!! int a=4,b=-5,c=b+5; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 405
精华内容 162
关键字:

c语言非零值

c语言 订阅