C语言成长学习题(三)

十、编写一个含有逻辑表达式的程序。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int x;
 6 
 7     x = 1;
 8     printf("%d  ", x>=0 && x<=2);
 9     
10     x = 5;
11     printf("%d  ", x>=0 && x<=2);
12     printf("%d  ", x<-3 || x>3);
13 
14     x = 0;
15     printf("%d  ", x<-3 || x>3);
16     printf("%d  ", !x);
17 
18     x = 5;
19     printf("%d  ", !x);
20     printf("%d  ", 3 && 'A');
21     printf("%d  ", (x=2) || 0);
22     printf("x = %d
", x);
23 }

 结果:

1  0  1  0  1  0  1  1  x=2

  “&&"为逻辑与, ”||“为逻辑或, "!"为逻辑非。

  (1) 当关系表达式的判断结果为“真”(“假”)时,关系表达式的值为1(0),如(5>3)+7的值为8(1+7).

  (2) 0<=x<=2永远成立,即为真,因为先判断0<=x,其结果是0或1,而0<=2(1<=2)的判断结果为“真".

十一、编写一个含有特殊逻辑表达式的程序。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int a, b;
 6 
 7     a = 1;
 8     printf("%d  ", 0 && (a=2));                //没执行a=2
 9     printf("a=%d  ", a);
10     printf("%d  ", 5 && (a=2));                //执行了a=2
11     printf("a=%d  ", a);
12 
13     b=1;
14     printf("%d  ", 5 || (b=2));                    //没执行b=2
15     printf("b=%d  ", b);
16     printf("%d  ", 0 || (b=2));                    //执行了b=2
17     printf("b=%d  ", b);
18 }

结果:

0  a=1  1  a=2  1  b=1  1  b=2

十二、输入一个字符,如果是数字字符,则转换成对应的数字。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     char ch;
 6     int a = -1;
 7 
 8     printf("Input ch: ");
 9     ch = getchar();
10     if(ch >= '0' && ch <= '9')
11         a = ch - '0';
12     printf("ch=%c, a=%d
", ch, a);
13 }

结果:

1.Input ch: 2

 ch=2, a=2

2.Input ch: x

 ch=x, a=-1

  注:"ch-'0'"是"ch"的字符对应的十进制减48('0'对应的十进制为48)

    小写字母的ASCII码数(十进制):97~122(a~z)

    大写字母的ASCII码数(十进制):65~90(A~Z)

    数字字符的ASCII码数(十进制):48~57(0~9)

原文地址:https://www.cnblogs.com/zero-jh/p/5022737.html