C语言练习-运算符和表达式

更新时间:2024-04-17 05:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 单项选择题

(1)以下字符串为标识符的是 。

A. _MY B. 2_2222 C. short D. LINE 5 【答】A

(2)下列符号可以作为变量名的是 。 A. +a

B. *p C. _DAY D. next day 【答】C

(3)设c是字符变量,则以下表达式正确的是 。 A. c=666 B. c='c' C. c=\【答】B

(4)23+'m'+3.6-123.45/'b'的结果是 型数据。 A. char B. double C. int D. long int

【答】3.6和123.45均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是 。 A. a=a+7; B. a=7+b+c,a++

C. int(12.3%4) D. a=a+7=c+b

【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。

(6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是 。 A. x=(x=1+2,x*2) B. x=y>2?6:5

C. x=9-(--y)-(--y) D. x=y*(int)(4.8/2)

【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12;

则能得到值为3的表达式是 。

A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5)

【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是 。 #include main() {

int i=5,j=6,m=i+++j;

printf(\}

A. 6,6,11 B. 5,6,11 C. 5,6,12 D. 6,6,12 【答】m=i+++j等价于m=(i++)+j。本题答案为A。 (9)以下程序的运行结果是 。 #include void main() {

double f=3.14159; int n;

n=(int)(f+10)%3; printf(\}

A. 1 B. 0 C. 2 D. 3

【答】f+10=13.14159,(int)(f+10)=13,13%3=1。本题答案为A。 (10)以下程序的运行结果是 。 #include void main() {

int n,i=2,j=4; n=(++i==j--); printf(\}

A. 0 B. 1 C. 2 D. 3

【答】++i返回3,j--返回4,两者不等,故n=0。本题答案为A。 2. 填空题

(1)表达式语句与表达式的不同是 。

【答】语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中(嵌套出现)。 (2)在C语言中可以利用 将一个表达式的值转换成指定的类型。 【答】强制类型转换

(3)写出完成下列功能的表达式:

· 如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变。 ① · 如果d是数字,则将d转换成相应的整数,否则d的值不改变。 ② · 返回两个整数x、y中较大者。 ③ · 返回三个整数x、y和z中最大者。 ④ 【答】① c=(c>='A' && c<='Z') ? c-'A'+'a' : c ② d=(d>='0' && d<='9') ? d-'0' : d

③ (x>y) ? x : y

④ (x>y) ? (x>z ? x : z) : (y>z ? y : z) 或 (x>y && x>z) ? x : (y>z ? y : z) (4)以下程序的运行结果是 。 #include #include main() {

char s[]=\

printf(\}

【答】字符串s由字符'a'、'b'、'\\n'、'\\\\'、'\\''、'\\r'、'\\b'等7个字符组成,故长度为7,但字符串本身有一个结束标志'\\0'。所以,s的长度为7,在内存中占用8个字节。输出为:8,7。 (5)以下程序的运行结果是 。 #include main() {

int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c);

printf(\}

【答】结果为y=6,x=6。

(6)以下程序的运行结果是 。 #include main() {

char a,b; a='a';b='b'; a=a-32;b=b-32;

printf(\}

【答】A,B,65,66

(7)以下程序的运行结果是 。 #include main() {

int i,j,x,y; i=5;j=7; x=++i;y=j++;

printf(\}

【答】执行x=++i后,i=6,x=6;执行y=j++后,j=8,y=7;所以输出为:6,8,6,7。 (8)以下程序的运行结果是 。 #include main()

{

int a=1; char c='a'; float f=2.0;

printf(\\\n\ printf(\\\n\ printf(\\\n\

printf(\\\n\ printf(\\\n\ printf(\\\n\}

【答】①:1 (a+2=3,c-100=-3,表达式结果=1(真)) ②:1(a>c的结果是0(假),f>4的结果是0,表达式结果=1) ③:1(!a的结果是0,!f的结果是0,表达式结果=1) ④:1(!a&&1的结果是0,!c||1的结果是1,表达式结果=1)

⑤:0(!a>2的结果是0,(!a>2)?3:0的结果是0,f!=1的结果是1,(f!=1)?0:1的结果是0,表达式结果=0)

⑥:1((1,2,3)表达式的结果是3,(3,3,3)的结果是3,表达v

本文来源:https://www.bwwdw.com/article/d6mp.html

Top