C语言经典习题及其答案详解
C语言程序设计试题及答案解析

C语言程序设计试题第1、2、3章 概述、类型、表达式一、选择题1、 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( )A、 任意B、 第一个函数必须是主函数,其他函数任意C、 必须完全按照执行的顺序排列D、 其他函数可以任意,主函数必须在最后2、 下列四个叙述中,正确的是:( )A、 C程序中的所有字母都必须小写B、 C程序中的关键字必须小写,其他标示符不区分大小写C、 C程序中的所有字母都不区分大小写D、 C语言中的所有关键字必须小写3、 下列四个叙述中,错误的是:( )A、 一个C源程序必须有且只能有一个主函数B、 一个C源程序可以有多个函数C、 在C源程序中注释说明必须位于语句之后D、 C源程序的基本结构是函数4、 下面不是C语言合法标识符的是:( )A、abcB、5nC、_4mD、x35、 以下叙述不正确的是:( )A. 分号是C语句的必要组成部分B. C程序的注释可以写在语句的后面C. 函数是C程序的基本单位D. 主函数的名字不一定非用main来表示6、 C语言中允许的基本数据类型包括:( )A. 整型、实型、逻辑型B. 整型、实型、字符型C. 整型、字符型、逻辑型D. 整型、实型、逻辑型、字符型7、 C语言中能用八进制表示的数据类型为:( )A、字符型、整型B、整形、实型C、字符型、实型、双精度型D、字符型、整型、实型、双精度型8、 下列属于C语言合法的字符常数是:( )A、’\97’B、”A”C、’\t’D、”\0”9、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )A、char<int<=long int <=float<doubleB、char=int<long int <=float<doubleC、char<int<long int=float=doubleD、char=int=<long int <=float<double10、 在C语言中(VC环境),一定是长整型常数的是:( )A、0LB、4962710C、0412765D、0xa34b7fe11、 若有以下定义语句char c1=’b’, c2=’e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是:( )A、2,MB、3,EC、2,ED、输出项与相应的格式控制不一致,输出结果不确定12、 以下合法的赋值语句是:( )A、x=y=100B、d--;C、x + yD、c = int(a+b);13、 设变量t为int型,下列选项中不正确的赋值语句是:( )A、++t;B、n1=(n2=(n3=0));C、k=i==m;D、a=b+c=1;14、 在以下一组运算符中,优先级最高的是:( )A、<=B、==C、%D、&&15、 下列能正确表示a≥10或a≤0的关系表达式是:( )A、a>=10 or a<=0B、a<=10 || a>=0C、a>=10 || a<=0D、a>=10 && a<=016、 下列只有当整数x为奇数时,其值为“真”的表达式是:( )A、x%2==0B、!(x%2==0)C、(x-x/2*2)==0D、! (x%2)17、 设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是:( )A、1 0< a < 15B、!(a<=10 || a>=15)C、a>10 && a<15D、!(a<=10) && !(a>=15)18、 已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:( )A、0B、语法错C、1D、“假”19、 表达式17%4 /8的值为:( )A、0B、1C、2D、320、 语句printf(“%d”,(a=2)&&(b= -2));的输出结果是:( )A、无输出B、结果不确定C、-1D、121、 一个可执行的C程序的开始执行点是:( )A. 程序中的第一个语句B. 包含文件中的第一个函数C. 名为main的函数D. 程序中的第一个函数22、 组成C语句的一个必不可少的符号是:( )A. 逗号B. 引号C. 冒号D. 分号23、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:( )A. intB. longC. floatD. double24、 下述是C语言中有关变量定义的几个说法,正确的是:( )A. 变量可以不定义直接使用B. 一个说明语句只能定义一个变量C. 几个不同类型的变量可在同一语句中定义D. 变量可以在定义时进行初绐化25、 与x * = y + z等价的赋值表达式是:( )A. x = y + zB. x = x * y + zC. x = x * (y + z)D. x = x + y * z26、 当代电子计算机能够自动地处理指定的问题是因为:( )A.计算机是电动的B.有解决该问题的计算机程序C.事先存储了解决该问题的程序D.以上都不是27、 以下叙述中最准确的是:( )A.计算机程序是处理某一问题所有指令的集合B.计算机程序是处理某一问题所用到的所有数据的集合C.计算机程序是处理某一问题的所有指令及其数据的集合D.计算机程序是处理某一问题的所有指令及其数据的有序集合28、 关于计算机程序设计,以下描述最准确的是:( )A.程序设计就是用语言来编写程序B.程序设计就是用计算机语言来编写程序C.程序设计就是用计算机程序设计语言来编写程序D.程序设计就是用计算机能识别的语言来编写程序29、 目前编写计算机程序一般采用的是:( )A.机器语言 B.汇编语言 C.高级语言 D.英语30、 设计一个计算机程序最基本的工作是:( )A.制定正确的算法 B.选择合理的数据结构C.制定正确的算法和选择合理的数据结构 D.以上都不是31、 算法具有五个特性,以下选项中不属于算法特性的是:( )A.有穷性 B.简洁性 C.可行性 D.确定性32、 下述哪一个不是结构化程序基本结构:( )A.顺序 B.选择 C.循环 D.嵌套33、 C语言是一种:( )A.机器语言 B.汇编语言 C.高级语言 D.以上都不是34、 C语言源程序的扩展名为:( )A..exe B..c C..obj D..cpp35、 C程序编译后最终产生(即计算机执行)的文件的扩展名为()A..exe B..c C..obj D..cpp36、 下列各项中,不是C语言的特点是:( )A.语言简洁、紧凑,使用方便B.程序执行效率高,可移植性好C.能实现汇编语言的大多数功能D.有较强的网络操作功能37、 构成C语言源程序的基本单位是:( ) A.子程序 B.过程 C.文本 D.函数38、 下列叙述正确的是:( )A.C语言源程序可以直接在DOS环境中运行B.编译C语言源程序得到的目标文件可以直接在DOS环境中运行C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行D.C语言源程序可以直接在VC++环境中运行39、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:( )A.写在前面的函数先开始执行B.总是从main()函数开始执行C.总是从max()函数开始执行D.写在后面的函数先开始执行40、 以下叙述不正确的是:( )A.分号是C语句的必要组成部分B.C程序的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定用mian表示41、 以下为C语句的是:( )A.a=8 B.a++; C.if(a>8) D.#include <stdio.h>以下不是C语句的是:( )A.a=8; B.a++; C.if(a>8); D.for(i=1;i<5;i++)42、 以下所列语句中,合法的语句是:( )A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);43、 C程序中的复合语句指的是:( )A.并列的多个C语句 B.写在同一行中的多个C 语句C.用一对大括号对括的多个C语句 D.就是函数体中的语句44、 当一个很长的C语句(中间无字符串)在一行写不下(超出屏幕的宽度)时,应该:( )A.由系统自动换行 B.立即按回车键换行C.在任意一个空格处按回车键换行D.输入一个分号后并按回车键换行换行45、 在x值处于-2~2,4~8时值为“真”,否则为“假”的表达式是:( )。
《C语言》练习题及答案解析

《C语言》练习题及答案解析一.选择题1.下列字符序列中,不可用作C语言标识符的是(B)。
A.abc123 B.no.1 C._123_ D._ok2.一个C语言源程序是由(B)。
A.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成3. 正确的C语言标识符是(A )。
A._buy_2 B.2_buy C.?_buy D.buy?4.已知字母A的ASCII码为十进制数65,且S为字符型,则执行语句S=’A’+’6’-’3’;后,S中的值为(A)。
A.’D’B.68 C.不确定的值D.’C’5.下列说法中,错误的是(A)。
A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用D.程序是由若干个函数组成的,但是必须有且仅有一个主函数6.有如下程序段,从键盘输入数据的正确形式应是(B)。
(注:└┘代表空格)float x,y,z;scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);A.123 B.x=1,y=2,z=3C.1,2,3 D.x=1└┘ y=2└┘ z=37.在C语言中,char型数据在内存中的存储形式是(D)。
A.补码B.反码C.原码D.ASCII码8. 下列符号中,不属于转义字符的是(B )。
A.\\ B.\0xAA C.\t D.\09. 不属于C语言关键字的是(D)。
A.int B.break C.while D.character10. 以下说法中正确的是(C)。
A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main( )函数中定义C.C语言程序总是从main( )函数开始执行D.C语言程序中的main( )函数必须放在程序的开始部分11. C语言程序的基本单位是(C)。
C语言编程题带答案

C语言编程题带答案C 语言作为一门广泛应用的编程语言,在学习过程中,通过编程题的练习可以更好地掌握其语法和逻辑。
下面为您带来几道 C 语言编程题以及详细的答案解析。
题目一:求两个整数的和要求编写一个 C 语言程序,输入两个整数,计算并输出它们的和。
```cinclude <stdioh>int main(){int num1, num2, sum;printf("请输入第一个整数:");scanf("%d",&num1);printf("请输入第二个整数:");scanf("%d",&num2);sum = num1 + num2;printf("这两个整数的和是:%d\n", sum);return 0;```解析:在这个程序中,首先使用`printf`函数提示用户输入两个整数,然后通过`scanf`函数获取用户输入的值并存储在变量`num1`和`num2`中。
接下来,将这两个数相加并将结果存储在变量`sum`中,最后使用`printf`函数输出结果。
题目二:判断一个数是否为奇数编写一个 C 语言程序,输入一个整数,判断它是否为奇数,如果是奇数输出“是奇数”,否则输出“不是奇数”。
```cinclude <stdioh>int main(){int num;printf("请输入一个整数:");scanf("%d",&num);if (num % 2!= 0) {printf("是奇数\n");} else {printf("不是奇数\n");return 0;}```解析:在这个程序中,使用取余运算符`%`来判断一个数是否能被2 整除。
如果取余结果不为 0,说明该数不能被 2 整除,即为奇数;否则,不是奇数。
题目三:计算 1 到 100 的累加和编写一个 C 语言程序,计算 1 到 100 的累加和。
```cinclude <stdioh>int main(){int sum = 0, i;for (i = 1; i <= 100; i++){sum += i;}printf("1 到 100 的累加和是:%d\n", sum);return 0;```解析:这里使用了`for`循环从 1 迭代到 100,每次迭代都将当前的数字加到变量`sum`中,最终得到 1 到 100 的累加和。
(完整版)C语言程序设计练习题(含程序及参考答案)

(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
C语言练习题(带详解答案)

C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
计算机二级c语言经典练习题及解析答案

计算机二级c语言经典练习题及解析答案一、单选题1. C语言中的三大基本数据类型包括( B )A.整型、实型、逻辑型B.整型、实型、字符型C.整型、逻辑型、字符型D.整型、实型、逻辑型、数组型2. 在C语言中,以下合法的字符常量是( c )A. '\048'B. 'ab'C. '\43'D. "\0"3.设x 为 int 型变量,执行下列语句: x=10; x+=x-=x-x; 则x的值为 ( B )A. 15B. 20C. 25D. 304. 定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的输出结果是( C )A. 1 4 7B. 1 5 9C. 3 5 7D. 3 6 95.逗号表达式(a=3*5,a*4),a+15的值是( b )A.15B. 30C. 60D. 756. .以下程序的输出结果是( c )。
main( ){ int x=10,y=11;printf("%d,%d\n",x--,--y);}A. 11,11B. 10,11C. 10, 10D.11,107.若一个外部变量的定义形式为static int x ; 其中static的作用是( d )A.将变量存放在静态存储区,使x的值可以永久保留B.使变量x可以由系统自动初始化C.使x的值可以永久保留D.使x只能在本文件内引用8.有如下变量说明:int k=2;则下面的循环共执行多少( d )次while (k!=0) {printf("%d",k);k--;}A.无限多次 B.0次 C.1次 D. 2次9.设有变量说明:int a=7,b=8;那么语句:printf("%d,%d\n",(a+b,a),(b,a+b));的输出应该是( a )A. 7,15B. 8,15C. 15,7D.15,810.若已定义:int a[9], *p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( b )A. p+1B. a++C. a+1D. ++p11. C语言变量名中不能使用的字符是( d )A. 数字B. 字母C. 下划线D. 关键字12.以下变量定义中合法的是( a )A.short a=2.1e-1;B. double b=1+5e0.5;C. long do=0xffe ;D. float 3_end=1-e3;13.若有说明语句char ch1=′\x79′;则ch1( c )A.包含4个字符B.包含3个字符C. 包含2个字符D.包含1个字符14.C语言中的函数( b )A. 可以嵌套定义B.嵌套调用和递归调用均可C. 不可以嵌套调用D. 可以嵌套调用但不可以递归调用15. 设整形变量a=12;则执行完语句a+=a-=a*a后a的值为( c )A. 552B. 264C. -264D. 14416.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c<d?a:d的结果是( a )A.1 B.2 C.3 D.417.若有说明语句:int b[][4]={ 3,1,2,5,7,6,4}; 则b数组的行数为( b )A. 3B. 2C.无确定值D. 118. 若有定义:char c[10];从键盘输入“LiFang”,则正确的函数引用是( c )A. scanf(″%c″,&c[10]);B. gets(c);C. scanf(″%s″,&c);D. gets(c[10]);19. 两个基类型相同的指针变量之间,不能进行的运算是( c )A. <B. =C. +D.-20. 下面程序段执行结果是( b )int i=5,k; k=(++i)+(++i)+(i++); printf("%d,%d",k,i);A. 24,8B. 21,8C. 21,7D. 24,721.以下选项中属于C语言的数据类型是( b )。
C语言习题答案全解

4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=3.75,z=67.8,请问 在键盘上如何输入数据? scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z); 解: main() { int a,b; float x,y,z; char c1,c2; scanf("%5d%5d%c%c%f %f %*f ,%f",&a,&b,&c1,&c2,&x,&y,&z); } 运行时输入: _ _ _ 10 _ _ _ 20Aa1.5-3.75 _ 1.5,67.8 注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再 打入10与20。%*f是用来禁止赋值的。在输入时,对应于%*f的地方, 随意打入了一个数1.5,该值不会赋给任何变量。
P55 算术运算 3.9求下面算术表达式的值. 符 (1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)
(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)
/ (除法运算符。如:5/3) 除号两边为整型则结果为整型 % (模运算符,或称求余运算符,%两侧均应为整型数据, 如:7%4的值为3)。 正负号取决于被除数符号 -7%4的值为-3, -7%(-4)的值仍为-3
4.8设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积, 圆柱体积,用scanf输入数据,输出计算结果,输出时要求有文字说明,取 小数点后两位数字.请编程. 解:main() { float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf("请输入圆半径r圆柱高h:\n"); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=4.0/3.0*pi*r*r*r; vz=pi*r*r*h; printf("圆周长为: =%6.2f\n",l); printf("圆面积为: =%6.2f\n",s); printf("圆球表面积为: =%6.2f\n",sq); printf("圆球体积为: =%6.include<stdio.h> void main() { int c1,c2;(原为 char c1,c2) c1=97; c2=98; printf("%c%c\n",c1,c2); printf("%d%d\n",c1,c2); } 解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.
c语言的考试题目答案及解析

c语言的考试题目答案及解析1. 题目:以下哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable-2答案:C解析:在C语言中,变量名必须以字母或下划线开头,不能以数字开头。
因此,选项A和D是不合法的。
选项B虽然以字母开头,但是数字紧跟字母,没有下划线或空格分隔,所以也是不合法的。
选项C 以下划线开头,符合变量命名规则。
2. 题目:以下哪个选项是C语言中正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!"D. "Hello, World!"答案:A解析:在C语言中,字符串字面量应该用双引号括起来。
选项B使用了单引号,这是用于字符字面量的,而不是字符串。
选项C和D是重复的,并且由于格式问题,它们可能没有正确显示,但假设它们是正确的字符串字面量,那么答案应该是A,因为它是第一个出现的合法字符串字面量。
3. 题目:以下哪个选项是C语言中正确的函数声明?A. int function(int x) {}B. void function() {}C. int function(int x, int y) {}D. All of the above答案:D解析:在C语言中,函数声明可以包含参数列表,也可以没有参数。
选项A和C都包含了参数列表,并且参数类型是int,这是合法的。
选项B没有参数列表,并且指定了返回类型为void,这也是合法的。
因此,所有选项都是正确的函数声明。
4. 题目:以下哪个选项是C语言中正确的条件语句?A. if (x > 0) { ... }B. if x > 0 { ... }C. if (x > 0) { ... } else { ... }D. if (x > 0) { ... } elseif { ... }答案:C解析:在C语言中,条件语句必须使用if关键字,并且条件表达式需要用括号括起来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
制代码值
()
「解」计算机存储字符,通常是存储字符的某种
① ABC ② “ABC“ ③‘abc’ ④‘a’ 「解」C 程序 中,一个字符率常量是表示一个字符序列,书写 时,用双引号字符前后括住这个字符序列。所以只 有“ABC”是一个正确的字符率常量,其余都不是。 其中,ABC 可作为标识符,字符列‘abc’不能出现在 C 程序中,‘a’是一个字符常量。所以解答是②。
「解」关系运算的结果只有 0 和 1,若关系成 立,则结果为 1;若关系不成立,则结果为 0.因 关系式 9!=7 成立,所以表达式的结果为 1.虽 然 1 也是非 0 值,在供选择的答案中有 1,所以 确切的解答是④。
1.在内存中,存储字符串“X”要占用______个字 节,存储字符‘X’要占用_____个字节。 「解」计 算机存储一个字符用 1 个字节,存储字符串时,每 个字符要占用 1 个字节,另在字符串的有效字符之 后存储 1 个字符串的结束标记符。所以存储字符率 “X‘要占用 2 个字节,存储字符’X‘只要 1 个字节。
1
7.设 a 为 5,执行下列计算后,b 的值不为 2 的 是( )
① b=a/2 ② b=6-(--a) ③ b=a%2 ④ b =a< 3?3:2
「解」因两个整型数据相除,结果是整数,当 a 的值为 5 时,计算表达式 b=a/2 后,使 b 的值为 2.计算表达式 b=6-(--a)是先计算子表达式(-a)的,先让 a 的值减 1 变成 4,并以减 1 后的 a 为子表达式的结果,所以子表达式的结果为 4,后 使 b 的值为 2.在计算表达式 b= a%2 时,求余运算 a% 2 的结果为 1,后使变量 b 的值为 1.计算表达
程序在存储字符串时,要在后一个有效字符后面接 运算分量,而直接得到逻辑或运算的结果为 1 .由于
上 1 个字符串结束的标记符‘\0’。这样,存储字符 逻辑或的右运算分量不曾计算过,所以变量 n 的值
串常量“xyz”需要 4 个字节。所以解答是②。 4.在 也不为变化。这样,上述表达式计算后,变量 m 的
C 语言经典习题及其答案详解
0.054839743 和 2.1869el0 都是 double 型的实数。
所以解答是①。
第二章 基本数据类型和表达式
5.一个 char 型数据,它的值在内存中存放的是
2.1 单项选择题
() ①ASCll 代码值 ②BCD 代码值 ③内码值 ④ 十进
1.下列字符列中,可以作为“字符串常量”的是
18.若有以下定义: char a;int b;float c; double
①‘A’ ②‘a’ ③‘Z’ ④‘z’
d;则表达式 a*b+d-c 值的类型为( )
「解」由于字符型变量 ch 的值为‘ A’,计算表达
①float ② int ③ char ④ double
式 ch=h>=‘ A’&&ch<=‘ Z’)?(ch+32):
2.在 C 程序中,判逻辑值时,用_____表示逻辑 值“真”,又用_____表示逻辑值‘假“。在求逻辑值 时,用_____表示逻辑表达式值为”真“,又用_____ 表示逻辑表达式值为”假“。
「解」在 C 程序中,判逻辑值时,用非 0 值表 示真;而判逻辑值时,用值 0 表示假。但逻辑表达
22.设 a,b 和 c 都是 int 型变量,且 a=3,b
2
个子表达式的值作为远号表达式的结果,后将该结 23.设 ch 是 char 型变量,其值为‘A’,则下面表
果赋给变量 a.而表达式 a=7+b,c=a +7 则不是 达式的值是( )
一个赋值表达式,而是一个逗号表达式,它由两个 赋值子表达式组成。所以解答是③。
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32): ch
15.设 a=1,b=2,c=3,d=4 则表达式 a< b? a:c< d?a:d 的结果为()
①4 ②3 ③2 ④1 「解」条件运算符的优先级比关系运算符的优先 级低,并且它的结合性是自右向左的,所以表达 式 a<b?a:c<d?a:d 可用圆括号等价地写成 (a <b?a:((c<D)?A:D)。因 A<B 成立, 计算结果为 A 的值 1.所以解答是④。
17.下列表达式中,正确的 C 赋值表达式是( ) ①a=7+b+c=a+7 ② a=7+b++=a+7 ③a =(7+b, b++, a+7) ④ a= 7+b, c=a+7
「解」赋值运算符是运算符之一,赋值运算也可 以出现在一般表达式中。赋值运算时,出现在赋值 运算符左边的表达式应该是引用一个存储对象,例 如变量。不可以是一个数值计算表达式。如表达式 a=7+b+c=a+7 因算术运算符比赋值运算符的优 先级高,要把 a+7 的结果赋给 7+b+c,这是错 误的。同样理由,表达式 a= 7+b++=a+7 也是 错误的。而表达式 a=(7+b,b++,a+7)就是 正确的赋值表达式,它是先计算赋值号左边的括号 内的表达式,括号表达式内是一个逗号表达式,远 号表达式要求顺序逐一计算各子表达式,并以后一
式计算结果,逻辑表达式值为真是用 1 表示的,而 逻辑表达式的值为假,则用 0 表示。
=4,c=5,则下面的表达式中值为 0 的是( ) ①‘a’ & & ‘b‘ ②a < = b ③a||b+c & & b-c ④ !
((a<B)&&!||1)
3.定义符号常量的一般形式是_____. 「解」定 义符号常量用预处理命令的宏定义,其定义的一般 形式是:
①1 ②2 ③3 ④4 「解」一般来说,一个字符在内存中只占 1 个字 节,‘\n’是转义字符,其意义是换行符,它作为一个 字符存储,在内存也只占 1 个字节。所以解答是 ①。
3.字符串“xyz”在内存占用的字节数是( ) ①3 ②4 ③6 ④8 「解」字符串中的每个字符占 1 个字节,但 C
①0,0 ②0,1 ③l,0 ④1,1 「解」计算(m= a==b)||(n=c==d)的过程是先计算逻辑或的左运 算分量(m=a==b)的值,由于赋位运算符的优先级 比关系运算符==的优先级低,又先计算 a==b.因 a, b 均为 0 后,所以比较结果值为 1.将 1 赋给变量 m,使变量 m 的值变为 1 . 同时这个赋值运算的结 果也是 1,这样逻辑运算的左运算分量的值为 1.由 于逻辑或运算的左运算分量值为 1,按照 C 语言对 逻辑或运算优化计算的规定,不再计算逻辑或的右
型高(复杂)的转换。各类型由高到低的排列顺序
是 : long double 、 float 、 unsigned long 、 long 、 2.2 填充题
unsigned int、int 这样,若有定义: char a; int b; float c; double d;则表达式 a*b+d-c 的值的类型 是 double 的。首先计算 a*b,得到 int 类型的值, 接着计算 a*b+d,得到 double 类型的值,后计算 a*b+d-c,得到 double 类型的值。所以解答是④。 19.表达式“9!=7”的值是( ) ①true ②非 0 值 ③0 ④1
以下字符列中,合法的长整型常数是( )
情为 1,变量 n 的值为 0.所以解答是③。
① 0L ② 4962710 ③ 0.054838743 ④ 2.1869el0
「解」为表示不同范围的整数,整型数据分短整 型、基本型和长整型,并对三种整型内部表示的 高位的不同理解,又分别分成无符号和带符号两 种。若要明确指明一个整数是长整型的,必须在 整数之后接上字符‘L’。所以 0L 是一个长整型的 整型常量,而 4962710 是基本整型数据,而对于 用 2 个字节表示一个基本整型数据的系统来说, 该整数将因超出范围而是一个错误的整数;
ห้องสมุดไป่ตู้
①3 , 3 , 2 ②2 , 3 , 2 ③3 , 2 , 3 ④2 , 3 , 3 「解」计算表达式 x=(a=3,b=a--)时,先计算 赋值号右端圆括号内的逗号表达式。逗号表达式要 求各子表达式顺序计算,并以后予表达式的值为整 个逗号表达式的结果。所以该表达式计算时,先让 变量 a 的值为 3,a--的值是 a 当时的值,以该值 为结果赋给变量 b,并以该值为逗号表达式的值赋 给变量 x,然后 a 的值被减少 1.所以计算该表达 式后,使变量 x,a,b 的值依次为 3,2,3.所以 解答是③。
式 b =a<3?3:2 时,先计算条件表达式 a<3? 3:2,以 2 为结果,后也使变量 b 的值为人所以 解答是
③。 8.执行语句“x=(a=3,b=a--);”后,X,a, b
的值依次为( )
「解」常规运算符的优先级自高到低的排列顺序 是算术运算符、移位运算符、关系运算符。按位运 算符、逻辑运算符、条件运算符、赋值运算符、逗 号运算符。所以问题所给的四个运算符按优先级自 高到低的排列顺序是%,<=,&&,=。所以解 答是③。
「解」对于表达式‘a’&&‘b’,两个非 O 运算分 量的逻辑与结果为 1.对于表达式 a<=b,由于关 系式成立,结果也为此又由于变量 a 为非 0,表达 式 a||b+c&&b-c 的结果也为 1.对于表达式!((a< b)&&!c||1),先是计算(a<b)得到结果 1;计 算! C 得到结果为 0;再计算它们的逻辑与,结 果为 0. 继续与 1 求逻辑或,得到结果为 1.后,对 1 求逻辑非,得到结果为 0.所以解答是④。
2.在以字节存储字符的系统中,‘\n ’在内存占用
的字节数是( )
代码值。有许多种字符编码的方法,流行的是
ASCII 代 码 。 在 C 语 言 中 , Char 型 数 据 也 用 ASCII 代码表示。所以解答是①。
6.设变量 m,n,a,b,c,d 的初值均为 0,执行 (m=a==b)||(n=c==d)后,m,n 的值是 ()
“a+=a-= a*a;”后,变量 a 的值是( ) ①3 ② 0 ③ 9 ④ -12 「解」由于赋值运算符的结合性自右至左,语句