高级语言程序设计习题(最新版带答案)
- 格式:doc
- 大小:83.50 KB
- 文档页数:19
习题一1-1 Pascal语言的程序结构由哪几部分组成?试述各部分的构成形式和作用。
1-2 Pascal基本字符集有哪些成分构成?Pascal的保留字是什么?1-3 Pascal语言中标识符是怎样构成的?下列字符串哪些是正确的Pascal标识符?哪些是错误的?为什么?A5B,5H4,PEL,1,A31,x﹡y,AB,A + B,$500,G1(x),xyz,E-10,VAR1-4 下列数据哪些是整数?哪些是实数?哪些是非法的(假设计算机字长为32位)?256 2.54 25E+6 3.75E6 0.15E-61.2E70 1E-15 -673 E8 4,7345.7E-6.6 0 58989 -73451 E-31-5 下列哪些常量定义是正确的?CONSThvalue=200;lvalue=0 OR 1 OR 2;firstchar=’a’;t=true;b=true OR false;1-6 假定已作了下述说明:CONSTgap=’’;VARm,n:integer;a,b:real;p,q:boolean;c1,c2:char;指出下列每一语句是否有效,并说明理由:⑴m:=trunk(b)+a⑵p:=m+n⑶read(c1,c2,’’)⑷c1:=gap⑸p:=q AND (ord(c1)<>’a’)⑹m:=n MOD a⑺‘c1’ :=’c2’⑻c2:=chr(‘a’)⑼m:=m-ord(‘0’)⑽writeln(a,p,m,n,q,q,b)⑾ n:=a-trunc(a)⑿b:=2.99*109⒀a:=m/n⒁b:ord(c1)+ord (c2)1-7 已知变量有下面指定的值:a=7,b=-6,c=30,d=10.8600,e=1E3,f=’*’,g=true求下面表达式的值:a+b DIV trunc(d)+3①d-0.75/(e+140.0)*70.0②sqrt(abs(b-a)+succ(ord(f))③chr(10* a MOD sqr(b))④NOT ((a>=b) AND g)⑤(ord(b) OR (sqr(b)>e)) AND (g AND NOT(abs(b)<>6))1-8 已知有如下说明VARp,q,r,s:Boolean;k:integer;试写出下列每一表达式的类型,如能确定,请写出它们的值。
高级语言程序设计(Python)习题与答案一、单选题1、计算机为什么采用二进制,而非十进制作为数制的基础?A.因为二进制比十进制计算速度快B.因为二进制比十进制表示能力更强C.因为二进制数精度更高D.因为二进制数更容易被硬件存储和计算正确答案:D2、Python语言为什么被称为高级程序设计语言?A.因为它是编译型语言B.因为它是解释型语言C.因为它比低级语言更复杂D.因为它比低级语言更抽象正确答案:D3、关于Python语言的执行过程,描述正确的是?A.可以同时执行多条语句B.由解释器一条语句一条语句地执行C.执行过的语句将不会再被执行D.由编译器将源程序转化为机器语言,然后执行正确答案:B4、下列Python程序,没有错误的是?A.print 'Hello, ' print 'World!'B.print 'Hello, I\'m Tom.'C.print 'Hello, this's Tom.'D.Print 'Hello, World!'正确答案:B5、在Spyder IDE中编写Python程序,输出“Hello World”,要求将这两个单词分两行输出,以下哪个程序不正确?A.print 'HelloWorld'B.print 'Hello\nWorld'C.print 'Hello'print 'World'D.print "Hello\nWorld"正确答案:A6、执行下列语句,输出的结果是?x = 7.0y = 5print x % yA.1B.2C.1.0D.2.0正确答案:D7、能实现下面功能的程序是?接收用户输入的一个整数。
如果输入的是偶数,则输出“True”,否则输出“False”。
A.print not bool(raw_input() % 2)B.print int(raw_input()) % 2 == 0C.print int(raw_input()) % 2 == 1D.print bool(int(raw_input()) % 2)正确答案:B8、以下程序的输出结果是?y = 0for i in range(0, 10, 2):y += iprint yA.30B.20D.10正确答案:B9、以下程序的输出结果是?number = 30 if number % 2 == 0:print number, 'is even'elif number % 3 == 0:print number, 'is multiple of 3'A.30 is evenB.30 is multiple of 3C.程序出错D.30 is even30 is multiple of 3正确答案:A10、以下程序的输出结果是?x = 1y = -1z = 1if x > 0:if y > 0: print 'AAA'elif z > 0: print 'BBB'A.语法错误B.BBBC.AAAD.无输出正确答案:D11、下列程序的输出结果是:def foo():m = 1def bar():return m + nm = bar()print mfoo()A.1B.3C.程序出错D.2正确答案:B12、字符串s长度为奇数,则显示中间字符的表达式为?A.s[len(s)/2 - 1]B.s[len(s)/2 + 1]C.s[len(s)/2]D.s[(len(s) + 1)/2]正确答案:C13、关于元组数据结构,下面描述正确的是:A.元组不支持切片操作B.所有元素数据类型必须相同C.支持 in 运算符D.插入的新元素放在最后正确答案:C14、一个学生的信息包括:学号、姓名、年龄、性别、电话。
自考“高级语言程序设计”测试题及答案(1)一、是非题(下列各题,你认为正确的,请在题干的括号内打“√”,错的打“×”。
每题1分,共10分)1、实型是有序类型。
A。
正确B。
不正确2、保留字具有特定含义,不能挪作它用。
A。
正确B。
不正确3、true<false之值为false。
A。
正确B。
不正确4、exp可作用户标识。
A。
正确B。
不正确5、PASCAL源程序中一行只能写一个语句。
A。
正确B。
不正确6、PASCAL源程序中每个变量都必需说明。
A。
正确B。
不正确7、2.0E3.0是一个合法的实型常数。
A。
正确B。
不正确8、trunc(5.95)之值为5.0.A。
正确B。
不正确9、函数的类型只能是有序类型。
A。
正确B。
不正确10、当形参为值参数方式时,对应的实参不能是变量。
A。
正确B。
不正确二、单选题(在本题的每一小题的备选答案中,只有一个答案是正确的,请把你认为正确答案的题号,填入题干的括号内。
多选不给分。
每题2分,共10分)1.设i1,i2的整型变量,r1,r2是实型变量,下列哪一个语句是错误的( )A.i1:=i2DIVi1;B.r1:=i1DIVi2/i2;C.r1:=i1/r2;D.i2:=i1/i2;2.设ch为字符变量,下列哪一个语句是正确的( )A.ch:=‘-3’;B.ch:=-ch;C.ch:=ch;D.ch:=‘R’+‘T’;3.下列哪一个可用作用户自定久标识符( )BELB.A(i)C.A+nameD.boolean4.设a为123.4,执行write(a:5:2)后输出为( )A.123.40B.123.4C.23.4D。
极错5.在CASE语句中,下列哪一类常量不能用作选择因子( )A。
实型B。
整型C。
布尔型D。
枚举型三、填空题(每空2分,共20分)1、chr(8+ord(‘1’)之值为____________。
2、子程序调用时,对应变量参数方式形参传递的是实参的___________。
设有定义语句“struct{int a;float b;char c;}abc,*p; ”,则对结构体成员 a 的引用可以是 ( )。
收藏A.(*p) .aB.abc- >aC.abc.aD.p->a回答错误 !正确答案: A C D以下叙述中,正确的叙述是:收藏A.预处理行不是 c 的可编译语句B.在程序中凡以 #开始的语句都是预处理命令C.C程序在执行过程中对预处理命令进行处理D.预处理命令须以 #开始回答错误 !正确答案: A B D下列属于单字符输入输出函数的是()。
收藏A.getchar()B.printf()C.scanf()D.putchar()回答错误 !正确答案: A D当一个函数为外部函数时,不正确的说法是( )。
收藏A.该函数不能被本文件中函数调用B.该函数不能被其他文件调用C.该函数只能被main() 调用D.该函数只能被非主函数调用回答错误 !正确答案: A B C D不能将高级语言编写的源程序转换成目标程序的是:收藏A.编译程序B.解释程序C.编程程序D.链接程序回答错误 !正确答案: B C D下列选项中关于外部变量,正确的是( )。
收藏A.main 函数是主函数,不在main 函数内部定义的变量都是外部变量B.外部变量必须定义在源程序的开始处C.定义外部变量时,可以进行初始化外部变量必须定义在所有函数的外面回答错误 !正确答案: C D已知“int a=1;char b=65; float c=2.0;double d=3.5; 。
”则下述赋值表达式结果为整型的是()。
收藏A.b=a+b;B.b=(int)(c+d);C.a=3.2;D.a=c+d;E.c= a+b;F.c= (int)3.2;回答错误 !正确答案: A B C D已有 char s[10][10]={0};int i=10;。
在下列表达式中,没有意义的表达式是:收藏*(&(s+i)+i)B.*(*(s+i)+i)C.*(*(s+i-1)+i-1)D.s[i][i]回答错误 !正确答案: A B D下列属于 C 语言标准库函数的为()。
计算机程序设计员(高级)习题库及答案一、单选题(共98题,每题1分,共98分)1.()有许多共享命令和过程。
当用户得知如何创建和打开一个对话框后,也就能够创建和打开任何其他资源对话框。
A、ClassWizardB、资源管理器C、资源编辑器D、AppWizard正确答案:C2.下列说法错误的是:()。
A、结构化程序设计的优点包括:开发时容易保证程序的正确性B、结构化程序设计的优点包括:可显著提高软件开发的成功率和生产率C、结构化程序设计的优点包括:程序结构清晰和模块化技术的使用,使修改或重新设计时可复用部分增加D、结构化程序设计的优点包括:代码可移植性强正确答案:D3.编译程序与操作系统和计算机硬件有关,为了提高编译程序的可移植性,人们提出了(B)的理论。
A、模块化B、虚拟机C、编译型翻译D、解释型翻译正确答案:B4.()除提供身份证明外,还可指出所签的文档是否已被修改。
A、公开密钥B、传统签名C、数字签名D、私有密钥正确答案:C5.下列说法正确的是:()。
A、OOA是面向对象设计的缩写B、OOS是面向对象设计的缩写C、OID是面向对象设计的缩写D、OOD是面向对象设计的缩写正确答案:D6.下列说法正确的是:()。
A、如果在编译链接应用程序的时候,它所需要访问的DLL的名称已经确定,可以采用显式方式B、如果在编译链接应用程序的时候,它所需要访问的DLL的名称已经确定,可以采用动态方式C、如果在编译链接应用程序的时候,它所需要访问的DLL的名称已经确定,可以采用静态方式D、如果在编译链接应用程序的时候,它所需要访问的DLL的名称已经确定,可以采用隐含方式正确答案:D7.上报审批的标准草案称为标准的()A、审批稿B、审核稿C、报批稿D、草稿正确答案:CpletionType参数指定SQLEndTran函数所进行的事务操作,SQL_COMMIT表示()。
A、删除事物B、提交事务C、回滚事物D、定义事物正确答案:B9.下列说法关于原型的说法错误的是()。
高级程序设计课后习题及答案第一章概述一、单项选择题1.二进制语言是属于( ) A.面向机器语言 B.面向问题语言 C.面向过程语言 D.面向汇编语言解:A.人们研制了许许多多计算机程序设计语言,其中二进制语言直接来自计算机的指令系统,与具体计算机紧密相关,所以是一种面向机器语言.面向问题语言是为了易于描述和求解某类特定领域的问题而专门设计的一种非过程语言.面向过程语言是一种能方便描述算法过程的计算机程序设计语言.有汇编语言,但没有面向汇编语言.汇编语言也是一种面向机器的语言,与机器语言比较,汇编语言用有助于记忆的符号来代表二进制代码.2.将汇编语言编写的程序翻译成目标程序的是( )程序A.解释B.编译 C.汇编 D.源解:C.3.不属于面向机器语言的是( ) A.符号语言 B.二进制语言 C.汇编语言 D.C语言解:D.4.下列语言中不属于面向过程的语言是( ) A.高级语言B.低级语言C.C语言D.ALGOL语言解:B.C语言和ALGOL等程序设计语言都是高级语言,它们用于描述复杂加工的处理过程,所以也称它们是面向过程语言.低级语言是指机器语言和汇编语言,低级语言是面向机器的语言,而不是面向过程的语言.5.将高级语言编写的程序翻译成目标程序的是( )程序A.解释B.编译 C.汇编 D.源解:B.6.不属于高级语言的计算机语言是( )语言A.BASIC B.C C.ALGOLD.符号解:D.二、填空题1.汇编语言属于面向____语言,高级语言属于面向____语言.解:汇编语言与具体计算机密切有关,是属于面向机器的语言;而高级语言用来描述求解题的算法,所以是面向过程的语言.所以解答是:机器,过程.2.用高级语言编写的程序称为____程序,它可以通过____程序翻译一句执行一句的方式执行,也可以通过____程序一次翻译产生____程序,然后执行.解:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程),然后执行目标程序. 所以解答时:源,解释,编译,二进制.3.从计算机角度出发,程序就是____,程序设计就是____.解:用某种计算机能理解并执行的计算机语言描写解决问题的方法步骤;分析解决问题的方法步骤,并将其记录下来的过程.第二章 C语言的基本知识一、单项选择题1.属于C语言字符集中可显示字符的是( ) A.\ B.\n C.\t D.\b解:A2.不属于C语言字符集中的符号是( ) A.\ B.| C.≤ D.^解:C3.下列选项中,不是转义字符的是( ) A.\\ B.\' C.074 D.\0解:C4.下列选项中,正确的转义字符是( ) A.\0F1 B.\" C.\094 D.\0xF1解:B5.下列给出的符号串中,不属于C语言保留字的是( ) A.swith B.cherC.caseD.else解:B6.下列给出的符号串中,属于C语言保留字的是( ) A.if B.iF C.If D.IF解:A7.下列给出的符号串中,可作为标识符的是( ) A.? a B.a=2 C.a.3D.a_3解:D8.下列给出的符号串中,不能作为C语言标识符的是( ) A.a_2 B._2aC._a2D.2_a解:D9.下列给出的符号串中,可以作为C语言标识符的是( ) A.staticB.doC.registerD.GOTO解:D10.下列说法中错误的是( ) A.主函数可以分为2个部分:主函数头和主函数体B.主函数可以调用任何不是主函数的其他函数C.任何函数可以调用不是主函数的其他函数D.程序总是从排在程序最前面的某个函数开始执行解:D 程序总是在主函数中开始执行,并在主函数中结束二、填空题1.转义字符是由____符号开始的单个字符或者若干个字符组成的.解:反斜杠2.C语言的保留字规定全部由____字母组成,解:英文小写3.C语言标识符是由____或____开头的字母、数字、下划线组成的一串符号.ANSIC规定标识符的长度≤____个字符;而PC机上规定前____个字符有效.解:字母,下划线,32,84.C语言词类主要分为____,____,____,____,____和____6类.解:常量,变量,运算符,函数调用,表达式,保留字5.C语言的语句主要分为____语句,____语句,____语句,____语句,____语句,____语句,____语句和____语句.解:数据定义,赋值,函数调用,表达式,流程控制,复合,空,其他6.在C语言中既是词类,又能单独组成语句的有____和____两类.解:保留字,标识符7.C语言的程序是由若干个函数组成的,其中有且仅有一个函数名规定为____的主函数.解:main8.C程序的执行总是由____函数开始,并且在____函数中结束. 解:主,主9.C语言程序的注释可以出现在程序中的任何地方,它总是以____符号作为开始标记,以____符号作为结束标记.解:/*,*/10.C语句的最后一定要有一个____号.解:分11.使用Turbo C调试C程序的主要操作步骤分为____,____,____,____,____,____.解:输入新程序或调入已存在的程序,编辑修改源程序,源程序清单存盘,编译连接生成目标程序,执行目标程序,显示运行结果.第三章基本数据类型、运算符和表达式一、单项选择题1.下列选项中属于C语言字符常量的是( ) A.'abc' B."\n" C.'a'D.'a\0'解:C 2.下列选项中属于字符串常量的是( ) A.ABC B."ABC" C.'abc' D.'a'解:B.C程序中,一个字符串常量是表示一个字符序列,书写时,用双引号字符前后括住这个字符序列.所以只有"ABC"是一个正确的字符率常量,其余都不是.其中,ABC可作为标识符,字符列'abc'不能出现在C程序中,'a'是一个字符常量.3.在PC机中,'\n'在内存占用的字节数是( ) A.1 B.2 C.3 D.4解:B.一般来说,一个字符在内存中只占1个字节,'\n'是转义字符,其意义是换行符,它作为一个字符存储,在内存占2个字节.4.下列字符串常量中,占用内存字节数为2的字符串常量是( )A."12"B."1"C."1\0"D."\n\n"解:B5.字符串"ABC"在内存占用的字节数是( ) A.3 B.4 C.6 D.8解:B.字符串中的每个字符占1个字节,但C程序在存储字符串时,要在最后一个有效字符后面接上1个字符串结束的标记符'\0'.这样,存储字符串常量"ABC"需要4个字节.6.在C语言中,合法的长整型常量是() A.0L B.4962C.0.054838743D.2.1869el0解:A.为表示不同范围的整数,整型数据分短整型、基本型和长整型,并对三种整型内部表示的最高位的不同理解,又分别分成无符号和带符号两种.若要明确指明一个整数是长整型的,必须在整数之后接上字符'L'.所以0L是一个长整型的整型常量,而4962是基本整型数据;0.054839743和2.1869el0都是double型的实数.7.下列符号常量的定义中正确的是( ) A.#define N3 B.define N 3C.#define N_1 3D.#define N 1 3解:C8.设有宏定义"#define R 2+3",则R*R的宏替换结果正确的是( )A.(2+3)*(2+3)B.2+3*2+3C.5*5D.5.0*5.0解:B9.char型数据在内存中存放的是( ) A.ASCII代码值B.二进制代码值 C.八进制代码值 D.十进制代码值解:A.计算机存储字符,通常是存储字符的某种代码值.有许多种字符编码的方法,最流行的是ASCII代码.在C语言中,char型数据用ASCII 代码表示.10.下列说法中错误的是( ) A.整形变量可以存放字符常量的值 B.字符型变量可以存放任意整形常量的值 C.变量必须先定义,后使用 D.字符串的长度不等于它占用的字节数解:B11.设整型变量i的值为3,则表达式i---i的值为( ) A.0 B.1 C.2 D.3解:A.有些运算符只有一个字符,也有许多运算符由两个字符组成.特别是有些字符既可是单个字符的运算符,又能组成双字符的运算符.编译系统在识别源程序时,通常是尽量多地读字符,能组成多字符单词的先尽量组成多字符单词.所以表达式i---i,被编译器理解为(i--)-i.另外,当表达式中某变量有后缀自增和自减运算时,先按变量的原值计算表达式,然后再对变量进行自增和自减运算.同样地,当表达式中某变量有前缀自增和自减运算时,先对变量进行自增和自减运算,然后再按变量的新值计算表达式.按这个约定,求表达式(i--)-i是计算i-i的值为0,然后再对i作自减运算,这样,表达式i---i的值为0.12.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是( )A.6B.9C.8D.12解:A.与上一小题解答的理由相同,表达式a+++b+++c++被系统理解成(a++)+(b++)+(c++).表达式"变量++"的值是变量的原来值,所以在变量a,b,c均为2的前题下,执行上述表达式,得到结果为6.13.表达式"10!=9"的值是( ) A.true B.非0值 C.0 D.1解:D.关系运算的结果只有0和1,若关系成立,则结果为1;若关系不成立,则结果为0.因关系式10!=9成立,所以表达式的结果为1.14.设a为整型变量,下列C表达式中,不能表达数学关系式:10<a<a10&&a<15 D.!(a<=10)&&!(a>=15)解:A.数学关系式10<a10&&a<15,或!(a<=10)&&!(a>=15)或a==11||a==12||a===13||a==14,若写成10<a10的结果0或1,然后以这个结果与15比较,是否小于15.显然这与数学式子的意义是不一致的.15.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是( ) A.'a'&&'b' B.a<=b C.a||b+c&&b-c D.!((a<b)&&!c||1) 解:D.对于表达式'a'&&'b',两个非O运算分量的逻辑与结果为1.对于表达式a<=b,由于关系式成立,结果也为1,又由于变量a为非0,表达式a||b+c&&b-c的结果也为1.对于表达式!((a<b)&&!16.设x为整型变量,和表达式!(!x)的值完全相同的表达式是( )A.x==0B.x==1C.x!=0D.x!=1解:C17.设有代码int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( ) A.3 B.0 C.9 D.-12解:D.由于赋值运算符的结合性自右至左,语句a+=a-=a*a,的执行是先计算a*a,得到值9,再计算a-=a*a,使a的值为-6,接着计算,a+=a,使a的值为-12.18.下列表达式中,正确的C赋值表达式是( ) A.a=7+b+c=a+7B.c=7+b++=a+7C.a=(7+b,b++,a+7)D.a=7+b,c=a+7解:C.赋值运算符是运算符之一,赋值运算也可以出现在一般表达式中.赋值运算时,出现在赋值运算符左边的表达式应该是引用一个存储对象,例如变量.不可以是一个数值计算表达式.如表达式a=7+b+c=a+7因算术运算符比赋值运算符的优先级高要把a+7的结果赋给7+b+c,这是错误的.同样理由,表达式a=7+b++=a+7也是错误的.而表达式a=(7+b,b++,a+7)就是正确的赋值表达式, 它是先计算赋值号左边的括号内的表达式,括号表达式内是一个逗号表达式,远号表达式要求顺序逐一计算各子表达式,并以最后一个子表达式的值作为逗号表达式的结果,最后将该结果赋给变量a.而表达式a=7+b,c=a+7则不是一个赋值表达式,而是一个逗号表达式,它由两个赋值子表达式组成.19.设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n 的值是( ) A.0,0 B.0,1 C.1,0 D.1,1解:C.计算(m=a==b)||(n=c==d)的过程是先计算逻辑或的左运算分量(m=a==b)的值.由于赋位运算符的优</b)&&!></b)&&!c||1)></a</a</a先级比关系运算符==的优先级低,又先计算a==b.因a,b均为0后,所以比较结果值为1.将1赋给变量m,使变量m的值变为1.同时这个赋值运算的结果也是1,这样逻辑运算的左运算分量的值为1.由于逻辑或运算的左运算分量值为1,按照C语言对逻辑或运算优化计算的规定,不再计算逻辑或的右运算分量,而直接得到逻辑或运算的结果为1,由于逻辑或的右运算分量不曾计算过,所以变量n的值也不为变化.这样上述表达式计算后,变量m的值为1,变量n的值为0.20.设整型变量m,n,a,b,c,d均为1,执行"(m=a>b)&&(n=a>b)"后m,n的值是( ) A.0,0 B.0,1 C.1,0 D.1,l解:B.表达式(m=a>b)&&(n=a>b)是一个逻辑表达式,它的计算过程是先计算逻辑与的左分量m=a>b,其中又是先计算a>b.因a>b不成立,结果为0,将0赋给变量m,最后逻辑与的左分量结果为0.由于逻辑运算采用特别的优化计算规则,当逻辑与的左分量结果为0时,不再计算逻辑与的右分量,而直接以0为逻辑与的结果.所以,上述表达式计算使m 的值变为0,而n的值没有变,依旧为l.21.若已定义x和y为double类型,则表达式:x=1,y=x+3/2结果是( ) A.1 B.2 C.2.0 D.2.5解:C.由于变量x和y都是double类型,表达式x=l,y=x+3/2是先计算x=1,由于1是整型的x是double类型的,该计算先将整数1转换成double类型的1.0,并将1.0赋给变量x.计算y=x+3/2是先求3/2的值,因是两整数相除,结果是整型值1,然后在计算x+1时,也先将1转换成1.0,然后求得x+l的值为2.0,最后将该值赋给变量y,并得到整个表达式的值为2.0.22.执行语句"x=(a=3,b=a--);"后,x,a,b的值依次为( ) A.3,3,2B.2,3,2C.3,2,3D.2,3,3解:C.计算表达式x=(a=3,b=a--)时,先计算赋值号右端圆括号内的逗号表达式.逗号表达式要求各子表达式顺序计算,并以最后予表达式的值为整个逗号表达式的结果,所以该表达式计算时,先让变量a的值为3,a--的值是a当时的值,以该值为结果赋给变量b,并以该值为逗号表达式的值赋给变量x,然后a的值被减少1.所以计算该表达式后,使变量x,a,b的值依次为3,2,3.23.设a为5,执行下列计算后,b的值不为2的是( ) A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=a>3?3:2解:C.因两个整型数据相除,结果是整数,当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.计算表达式b=a>3?3:2时,先计算条件表达式a>3?3,2,以2为结果,最后也使变量b的值为2.24.设a=1,b=2,c=3,d=4则表达式a<b?a:c解:D.条件运算符的优先级比关系运算符的优先级低,并且它的结合性是自右向左的,所以表达式a<b?a:c<d?a</b?a:c<d?a</b?a:c:d可用圆括号等价地写成(a<b?a:((c<d)?a:d).因a<b成立,计算结果为a的值 1. 25.设char="" ch="A" ,则表达式ch="(ch" bdsfid="246">='A'&&ch<='Z')?(ch+32):ch的值是( ) A.'A' B.'a' C.'Z' D.'z'解:B.由于字符型变量ch的值为'A',计算表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch.先计算其中条件表达式,由于条件(ch>='A'&ch<='Z')成立,该条件表达式以ch+32=97为结果,将该值赋给变量ch,以字符表达这个值为'a'.26.在C语言中,结果不等于4的表达式是( ) A.sizeof(double) B. sizeof(long) C.sizeof(float) D.sizeof(unsigned long)解:A27.用十进制数表示表达式"12|012"的运算结果是( ) A.1 B.0 C.14D.16解:C.按位运算将运算分量视作二进位的位运算,对两运算分量的对应位进行运算,产生进位的位串信息结果.整数12最低8位二进位是00001100,整数012是八进制数,它的最低8位二进位是00001010.这两个二进位位串信息按位或运算,得到结果是00001110,对应十进制数14,八进制数是016.28.设有定义"char a=3,b=6,c;"计算表达式c=(a^b)<<2后c的二进制值是( ) A.00011100 B.00000111 C.00000001 D.00010100 解:D.a的值为3,写成8位二进制数形式是00000011,b的值为6,写成8位二进制数形式是00000110.表达式c=(a^b)<<2,先计算a与b的按位加,得到结果00000101,将这结果向左移2位,得到二进位的位串信息是00010100.29.设有定义short i=013,j=0x13,k;,计算表达式k=~i|j>>3;后,k 的值是( ) A.06 B.0177776 C.066 D.0177766解:D.将变量i的八进制数值013写成二进制形式为00001011,将变量j的十六进制值0xl3写成二进制数形式为00010011.表达式k=~i|j>>3的计算过程是先求~i,结果用八进制代码表示为0177764,接着计算j>>3,结果为02,对它们进行按位或运算结果为0177766.30.设整型变量x,y,z均已赋值,下列选项中,正确的赋值表达式是( )A.<解:B31.在以下一组运算符中,优先级最高的运算符是( ) A.<= B.= C.%D.&&解:C.常规运算符的优先级自高到低的排列顺序是算术运算符,移位运算符,关系运算符,按位运算符逻辑运算符,条件运算符,赋值运算符,逗号运算符.所以问题所给的四个运算符按优先级自高到低的排列顺序是%,<=,&&,=.32.在以下一组运算符中,优先级最高的运算符是( ) A.-- B.== C.||D.&&解:A33.若有以下定义:char a;int b;float c;double d;则表达式a*b+d-c值的类型为( ) A.float B.int C.char D.double解:D.基本类型的数据可以混合运算,但运算时,对要求运算分量类型相同的运算来说,如运算分量的类型不是全相同则会有自动类型转换发生.类型自动转换规则规定类型低(简单)的向类型高(复杂)的转换.各类型由高到低的排列顺序是:long double,float,unsigned long,long,unsigned int,int.这样,若有定义:char a; int b;float c;double d;则表达式a*b+d-c的值。
高级程序设计课后习题及答案第一章概述一、单项选择题1.二进制语言是属于( ) A.面向机器语言 B.面向问题语言 C.面向过程语言 D.面向汇编语言解:A.人们研制了许许多多计算机程序设计语言,其中二进制语言直接来自计算机的指令系统,与具体计算机紧密相关,所以是一种面向机器语言.面向问题语言是为了易于描述和求解某类特定领域的问题而专门设计的一种非过程语言.面向过程语言是一种能方便描述算法过程的计算机程序设计语言.有汇编语言,但没有面向汇编语言.汇编语言也是一种面向机器的语言,与机器语言比较,汇编语言用有助于记忆的符号来代表二进制代码.2.将汇编语言编写的程序翻译成目标程序的是( )程序A.解释B.编译 C.汇编 D.源解:C.3.不属于面向机器语言的是( ) A.符号语言 B.二进制语言 C.汇编语言 D.C语言解:D.4.下列语言中不属于面向过程的语言是( ) A.高级语言B.低级语言C.C语言D.ALGOL语言解:B.C语言和ALGOL等程序设计语言都是高级语言,它们用于描述复杂加工的处理过程,所以也称它们是面向过程语言.低级语言是指机器语言和汇编语言,低级语言是面向机器的语言,而不是面向过程的语言.5.将高级语言编写的程序翻译成目标程序的是( )程序A.解释B.编译 C.汇编 D.源解:B.6.不属于高级语言的计算机语言是( )语言A.BASIC B.C C.ALGOLD.符号解:D.二、填空题1.汇编语言属于面向____语言,高级语言属于面向____语言.解:汇编语言与具体计算机密切有关,是属于面向机器的语言;而高级语言用来描述求解题的算法,所以是面向过程的语言.所以解答是:机器,过程.2.用高级语言编写的程序称为____程序,它可以通过____程序翻译一句执行一句的方式执行,也可以通过____程序一次翻译产生____程序,然后执行.解:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程),然后执行目标程序. 所以解答时:源,解释,编译,二进制.3.从计算机角度出发,程序就是____,程序设计就是____.解:用某种计算机能理解并执行的计算机语言描写解决问题的方法步骤;分析解决问题的方法步骤,并将其记录下来的过程.第二章 C语言的基本知识一、单项选择题1.属于C语言字符集中可显示字符的是( ) A.\ B.\n C.\t D.\b解:A2.不属于C语言字符集中的符号是( ) A.\ B.| C.≤ D.^解:C3.下列选项中,不是转义字符的是( ) A.\\ B.\' C.074 D.\0解:C4.下列选项中,正确的转义字符是( ) A.\0F1 B.\" C.\094 D.\0xF1解:B5.下列给出的符号串中,不属于C语言保留字的是( ) A.swith B.cherC.caseD.else解:B6.下列给出的符号串中,属于C语言保留字的是( ) A.if B.iF C.If D.IF解:A7.下列给出的符号串中,可作为标识符的是( ) A.? a B.a=2 C.a.3D.a_3解:D8.下列给出的符号串中,不能作为C语言标识符的是( ) A.a_2 B._2aC._a2D.2_a解:D9.下列给出的符号串中,可以作为C语言标识符的是( ) A.staticB.doC.registerD.GOTO解:D10.下列说法中错误的是( ) A.主函数可以分为2个部分:主函数头和主函数体B.主函数可以调用任何不是主函数的其他函数C.任何函数可以调用不是主函数的其他函数D.程序总是从排在程序最前面的某个函数开始执行解:D 程序总是在主函数中开始执行,并在主函数中结束二、填空题1.转义字符是由____符号开始的单个字符或者若干个字符组成的.解:反斜杠2.C语言的保留字规定全部由____字母组成,解:英文小写3.C语言标识符是由____或____开头的字母、数字、下划线组成的一串符号.ANSIC规定标识符的长度≤____个字符;而PC机上规定前____个字符有效.解:字母,下划线,32,84.C语言词类主要分为____,____,____,____,____和____6类.解:常量,变量,运算符,函数调用,表达式,保留字5.C语言的语句主要分为____语句,____语句,____语句,____语句,____语句,____语句,____语句和____语句.解:数据定义,赋值,函数调用,表达式,流程控制,复合,空,其他6.在C语言中既是词类,又能单独组成语句的有____和____两类.解:保留字,标识符7.C语言的程序是由若干个函数组成的,其中有且仅有一个函数名规定为____的主函数.解:main8.C程序的执行总是由____函数开始,并且在____函数中结束. 解:主,主9.C语言程序的注释可以出现在程序中的任何地方,它总是以____符号作为开始标记,以____符号作为结束标记.解:/*,*/10.C语句的最后一定要有一个____号.解:分11.使用Turbo C调试C程序的主要操作步骤分为____,____,____,____,____,____.解:输入新程序或调入已存在的程序,编辑修改源程序,源程序清单存盘,编译连接生成目标程序,执行目标程序,显示运行结果.第三章基本数据类型、运算符和表达式一、单项选择题1.下列选项中属于C语言字符常量的是( ) A.'abc' B."\n" C.'a'D.'a\0'解:C 2.下列选项中属于字符串常量的是( ) A.ABC B."ABC" C.'abc' D.'a'解:B.C程序中,一个字符串常量是表示一个字符序列,书写时,用双引号字符前后括住这个字符序列.所以只有"ABC"是一个正确的字符率常量,其余都不是.其中,ABC可作为标识符,字符列'abc'不能出现在C程序中,'a'是一个字符常量.3.在PC机中,'\n'在内存占用的字节数是( ) A.1 B.2 C.3 D.4解:B.一般来说,一个字符在内存中只占1个字节,'\n'是转义字符,其意义是换行符,它作为一个字符存储,在内存占2个字节.4.下列字符串常量中,占用内存字节数为2的字符串常量是( )A."12"B."1"C."1\0"D."\n\n"解:B5.字符串"ABC"在内存占用的字节数是( ) A.3 B.4 C.6 D.8解:B.字符串中的每个字符占1个字节,但C程序在存储字符串时,要在最后一个有效字符后面接上1个字符串结束的标记符'\0'.这样,存储字符串常量"ABC"需要4个字节.6.在C语言中,合法的长整型常量是() A.0L B.4962C.0.054838743D.2.1869el0解:A.为表示不同范围的整数,整型数据分短整型、基本型和长整型,并对三种整型内部表示的最高位的不同理解,又分别分成无符号和带符号两种.若要明确指明一个整数是长整型的,必须在整数之后接上字符'L'.所以0L是一个长整型的整型常量,而4962是基本整型数据;0.054839743和2.1869el0都是double型的实数.7.下列符号常量的定义中正确的是( ) A.#define N3 B.define N 3C.#define N_1 3D.#define N 1 3解:C8.设有宏定义"#define R 2+3",则R*R的宏替换结果正确的是( )A.(2+3)*(2+3)B.2+3*2+3C.5*5D.5.0*5.0解:B9.char型数据在内存中存放的是( ) A.ASCII代码值B.二进制代码值 C.八进制代码值 D.十进制代码值解:A.计算机存储字符,通常是存储字符的某种代码值.有许多种字符编码的方法,最流行的是ASCII代码.在C语言中,char型数据用ASCII 代码表示.10.下列说法中错误的是( ) A.整形变量可以存放字符常量的值 B.字符型变量可以存放任意整形常量的值 C.变量必须先定义,后使用 D.字符串的长度不等于它占用的字节数解:B11.设整型变量i的值为3,则表达式i---i的值为( ) A.0 B.1 C.2 D.3解:A.有些运算符只有一个字符,也有许多运算符由两个字符组成.特别是有些字符既可是单个字符的运算符,又能组成双字符的运算符.编译系统在识别源程序时,通常是尽量多地读字符,能组成多字符单词的先尽量组成多字符单词.所以表达式i---i,被编译器理解为(i--)-i.另外,当表达式中某变量有后缀自增和自减运算时,先按变量的原值计算表达式,然后再对变量进行自增和自减运算.同样地,当表达式中某变量有前缀自增和自减运算时,先对变量进行自增和自减运算,然后再按变量的新值计算表达式.按这个约定,求表达式(i--)-i是计算i-i的值为0,然后再对i作自减运算,这样,表达式i---i的值为0.12.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是( )A.6B.9C.8D.12解:A.与上一小题解答的理由相同,表达式a+++b+++c++被系统理解成(a++)+(b++)+(c++).表达式"变量++"的值是变量的原来值,所以在变量a,b,c均为2的前题下,执行上述表达式,得到结果为6.13.表达式"10!=9"的值是( ) A.true B.非0值 C.0 D.1解:D.关系运算的结果只有0和1,若关系成立,则结果为1;若关系不成立,则结果为0.因关系式10!=9成立,所以表达式的结果为1.14.设a为整型变量,下列C表达式中,不能表达数学关系式:10<a<a10&&a<15 D.!(a<=10)&&!(a>=15)解:A.数学关系式10<a10&&a<15,或!(a<=10)&&!(a>=15)或a==11||a==12||a===13||a==14,若写成10<a10的结果0或1,然后以这个结果与15比较,是否小于15.显然这与数学式子的意义是不一致的.15.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是( ) A.'a'&&'b' B.a<=b C.a||b+c&&b-c D.!((a<b)&&!c||1) 解:D.对于表达式'a'&&'b',两个非O运算分量的逻辑与结果为1.对于表达式a<=b,由于关系式成立,结果也为1,又由于变量a为非0,表达式a||b+c&&b-c的结果也为1.对于表达式!((a<b)&&!16.设x为整型变量,和表达式!(!x)的值完全相同的表达式是( )A.x==0B.x==1C.x!=0D.x!=1解:C17.设有代码int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( ) A.3 B.0 C.9 D.-12解:D.由于赋值运算符的结合性自右至左,语句a+=a-=a*a,的执行是先计算a*a,得到值9,再计算a-=a*a,使a的值为-6,接着计算,a+=a,使a的值为-12.18.下列表达式中,正确的C赋值表达式是( ) A.a=7+b+c=a+7B.c=7+b++=a+7C.a=(7+b,b++,a+7)D.a=7+b,c=a+7解:C.赋值运算符是运算符之一,赋值运算也可以出现在一般表达式中.赋值运算时,出现在赋值运算符左边的表达式应该是引用一个存储对象,例如变量.不可以是一个数值计算表达式.如表达式a=7+b+c=a+7因算术运算符比赋值运算符的优先级高要把a+7的结果赋给7+b+c,这是错误的.同样理由,表达式a=7+b++=a+7也是错误的.而表达式a=(7+b,b++,a+7)就是正确的赋值表达式, 它是先计算赋值号左边的括号内的表达式,括号表达式内是一个逗号表达式,远号表达式要求顺序逐一计算各子表达式,并以最后一个子表达式的值作为逗号表达式的结果,最后将该结果赋给变量a.而表达式a=7+b,c=a+7则不是一个赋值表达式,而是一个逗号表达式,它由两个赋值子表达式组成.19.设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n 的值是( ) A.0,0 B.0,1 C.1,0 D.1,1解:C.计算(m=a==b)||(n=c==d)的过程是先计算逻辑或的左运算分量(m=a==b)的值.由于赋位运算符的优</b)&&!></b)&&!c||1)></a</a</a先级比关系运算符==的优先级低,又先计算a==b.因a,b均为0后,所以比较结果值为1.将1赋给变量m,使变量m的值变为1.同时这个赋值运算的结果也是1,这样逻辑运算的左运算分量的值为1.由于逻辑或运算的左运算分量值为1,按照C语言对逻辑或运算优化计算的规定,不再计算逻辑或的右运算分量,而直接得到逻辑或运算的结果为1,由于逻辑或的右运算分量不曾计算过,所以变量n的值也不为变化.这样上述表达式计算后,变量m的值为1,变量n的值为0.20.设整型变量m,n,a,b,c,d均为1,执行"(m=a>b)&&(n=a>b)"后m,n的值是( ) A.0,0 B.0,1 C.1,0 D.1,l解:B.表达式(m=a>b)&&(n=a>b)是一个逻辑表达式,它的计算过程是先计算逻辑与的左分量m=a>b,其中又是先计算a>b.因a>b不成立,结果为0,将0赋给变量m,最后逻辑与的左分量结果为0.由于逻辑运算采用特别的优化计算规则,当逻辑与的左分量结果为0时,不再计算逻辑与的右分量,而直接以0为逻辑与的结果.所以,上述表达式计算使m 的值变为0,而n的值没有变,依旧为l.21.若已定义x和y为double类型,则表达式:x=1,y=x+3/2结果是( ) A.1 B.2 C.2.0 D.2.5解:C.由于变量x和y都是double类型,表达式x=l,y=x+3/2是先计算x=1,由于1是整型的x是double类型的,该计算先将整数1转换成double类型的1.0,并将1.0赋给变量x.计算y=x+3/2是先求3/2的值,因是两整数相除,结果是整型值1,然后在计算x+1时,也先将1转换成1.0,然后求得x+l的值为2.0,最后将该值赋给变量y,并得到整个表达式的值为2.0.22.执行语句"x=(a=3,b=a--);"后,x,a,b的值依次为( ) A.3,3,2B.2,3,2C.3,2,3D.2,3,3解:C.计算表达式x=(a=3,b=a--)时,先计算赋值号右端圆括号内的逗号表达式.逗号表达式要求各子表达式顺序计算,并以最后予表达式的值为整个逗号表达式的结果,所以该表达式计算时,先让变量a的值为3,a--的值是a当时的值,以该值为结果赋给变量b,并以该值为逗号表达式的值赋给变量x,然后a的值被减少1.所以计算该表达式后,使变量x,a,b的值依次为3,2,3.23.设a为5,执行下列计算后,b的值不为2的是( ) A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=a>3?3:2解:C.因两个整型数据相除,结果是整数,当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.计算表达式b=a>3?3:2时,先计算条件表达式a>3?3,2,以2为结果,最后也使变量b的值为2.24.设a=1,b=2,c=3,d=4则表达式a<b?a:c解:D.条件运算符的优先级比关系运算符的优先级低,并且它的结合性是自右向左的,所以表达式a<b?a:c<d?a</b?a:c<d?a</b?a:c:d可用圆括号等价地写成(a<b?a:((c<d)?a:d).因a<b成立,计算结果为a的值 1. 25.设char ch='A',则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是( ) A.'A' B.'a' C.'Z' D.'z' 解:B.由于字符型变量ch的值为'A',计算表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch.先计算其中条件表达式,由于条件(ch>='A'&ch<='Z')成立,该条件表达式以ch+32=97为结果,将该值赋给变量ch,以字符表达这个值为'a'.26.在C语言中,结果不等于4的表达式是( ) A.sizeof(double) B. sizeof(long) C.sizeof(float) D.sizeof(unsigned long)解:A27.用十进制数表示表达式"12|012"的运算结果是( ) A.1 B.0 C.14D.16解:C.按位运算将运算分量视作二进位的位运算,对两运算分量的对应位进行运算,产生进位的位串信息结果.整数12最低8位二进位是00001100,整数012是八进制数,它的最低8位二进位是00001010.这两个二进位位串信息按位或运算,得到结果是00001110,对应十进制数14,八进制数是016.28.设有定义"char a=3,b=6,c;"计算表达式c=(a^b)<<2后c的二进制值是( ) A.00011100 B.00000111 C.00000001 D.00010100 解:D.a的值为3,写成8位二进制数形式是00000011,b的值为6,写成8位二进制数形式是00000110.表达式c=(a^b)<<2,先计算a与b的按位加,得到结果00000101,将这结果向左移2位,得到二进位的位串信息是00010100.29.设有定义short i=013,j=0x13,k;,计算表达式k=~i|j>>3;后,k 的值是( ) A.06 B.0177776 C.066 D.0177766解:D.将变量i的八进制数值013写成二进制形式为00001011,将变量j的十六进制值0xl3写成二进制数形式为00010011.表达式k=~i|j>>3的计算过程是先求~i,结果用八进制代码表示为0177764,接着计算j>>3,结果为02,对它们进行按位或运算结果为0177766.30.设整型变量x,y,z均已赋值,下列选项中,正确的赋值表达式是( )A.<解:B31.在以下一组运算符中,优先级最高的运算符是( ) A.<= B.= C.%D.&&解:C.常规运算符的优先级自高到低的排列顺序是算术运算符,移位运算符,关系运算符,按位运算符逻辑运算符,条件运算符,赋值运算符,逗号运算符.所以问题所给的四个运算符按优先级自高到低的排列顺序是%,<=,&&,=.32.在以下一组运算符中,优先级最高的运算符是( ) A.-- B.== C.||D.&&解:A33.若有以下定义:char a;int b;float c;double d;则表达式a*b+d-c值的类型为( ) A.float B.int C.char D.double解:D.基本类型的数据可以混合运算,但运算时,对要求运算分量类型相同的运算来说,如运算分量的类型不是全相同则会有自动类型转换发生.类型自动转换规则规定类型低(简单)的向类型高(复杂)的转换.各类型由高到低的排列顺序是:long double,float,unsigned long,long,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类型的值.34.关于运算时的数据类型转换,下列说法中错误的是( ) A.表达式计算中,数据要转换成数据长度最长的数据类型再运算 B.赋值时,右边表达式的运算结果转换成左边变量的数据类型再赋值C.赋值时,左边变量的数据类型转换成右边表达式的运算结果类型再辅助D.(float)(n+m)是先计算n+m,然后再将结果强行转换成单精度实型解:C二、填空题1.C语言中的常量有4种类型:整型,实型,____型,____型.解:数值,字符2.用十进制表示整型常量-017为____,表示整型常量-0xF为____.解:-15,-143.无符号短整型数据的表示范围是____至____.解:0,655354.在内存中存储"A"要占用____个字节,存储字符'A'要占用_____个字节.解:计算机存储一个字符用1个字节,存储字符串时,每个字符要占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符.所以存储"A"要占用2个字节,存储字符'A'只要1个字节. 5.在内存中存放字符串,其最后一个字符为"空字符",对应的转义字符为____,其值为____.解:\0,06.符号常量的定义方法是____.解:定义符号常量用预处理命令的宏定义,其定义的一般形式是:#define 符号常量常量7.设有宏定义#define X 3-2;则2*X的宏替换结果是____.解:2*3-28.定义变量的语句格式是____.解:数据类型符变量1,变量2,…;9.无符号基本整型的数据类型符为____,双精度实型数据类型符为____,字符型数据类型符为____解:无符号的基本整型的类型符为unsigned int,或简写成unsigned.双精度实型数据类型符为double,字符型数据类型符为char.10.定义整型有名常量nn的初值为199,正确的定义语句是____.解:const int nn=199;11.设x和y均为int型变量,且x=l,y=2,则表达式1.0+x/y的值为____.解:计算表达式1.0+x/y,先求x/y,因x和y是整型变量,其中的除运算是整除,1/2的结果为0.接着计算1.0+0,计算时,先将右分量转换成0.0,最后得到结果1.0.12.请写出数学式a/bc的C语言表达式____.解:数学式子表述的是a除以b乘c的积,写成表达式可以写为x/(y*z),或可等价地写成x/y/z.13.设a=3,b=2,c=l,则c>b的值为____,a>b>c的值为______.解:0,0.因a的值为3,b的值是2,条件a>b为真,其值为1.表达式a>b>c的求值顺序是计算a>b,结果为1,接着计算1>c,因c的值为1,条件1>c为假.结果为0.14.C语言中作为运算对象时的逻辑值真是用____表示的,逻辑值假是用____表示的.逻辑表达式值为真时是用____表示的,逻辑表达式值为假时是用____表示的.解:在C程序中,判逻辑值时,用非0值表示真,用值0表示假;但逻辑表达式计算结果,逻辑表达式值为真是用1表示的,而逻辑表达式的值为假,则用0表示.15.若已知a=10,b=20,则表达式!a解:计算表达式!a<b,先计算!a,因a的值为1o,!a的值为0.关系表达式0<20为真,所以表达式!a16.能表述20<x<30或x<-100的c语言表达式是____.解:首先表述20<x<30的c表达式可写成20<x&&x<30.所以表述20<x<30或x<-100的c表达式为20<x&&x<30||x<-100.17.设变量x,y,z均为实型,表示其中至少有一个负数的表达式是____.解:x<0||y<0||z<018.表达式'a'>'A'>=1<=0==1!=0的值等于____.解:表达式计算时可按照顺序(((('a'>'A')>=1)<=0)==1)!=0,首先计算'a'>'A'得到1,然后计算1>=1得到1,再计算1<=0得到0,再计算0==1得到0最后计算0!=0得到0,故表达式的值为0.19.设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是____.解:按位加运算的一个重要应用是让某个整型变量的二进位位串信息的某些位信息反向,0变成1,而1变成0.这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果.要使字节的高4位取反,低4位不变,则需要位串信息是11110000,写成八进制数是0360,写成十六进制数为0xF0.20.设整型变量x,y,z均为5: A.执行x-=y-x后,x=____; B.执行x%=y+z后,x=____; C.执行x=(y>z)?x+2:x-2,3,2后,x=____.解:在变量x,y,z的值均为5的情况下,计算各表达式.由于表达式x-=y-z等价于表达式x=x-(y-z),所以计算后x的值为5.表达式x%=y+z 等价于表达式x=x%(y+z),所以计算后x的值也为 5.表达式x=(y>z)?x+2:x-2,3,2的计算过程用圆括号描述其计算顺序是:x=(y>z)?x+2:x-2,3,2,即这是一个逗号运算表达式,由一个赋值表达式和两个数值构成,逗号表达式要求顺序求各子表达式的值.表达式x=(y>z)?x+2:x-2的计算是先求赋值号右边的条件表达式,因条件(y>z)为假,求出x-2的值为3,将该值赋给变量x,使x的值为3.21.设有下列运算符<<,+,++,&&,<=,其中优先级最高的是____,优先级最低的是____.解:对运算符<<,+,++,&&,<=,按它们的优先级自高到低的顺序排列为:++,+,<<,<=,&&,所以优先级最高的是++,优先级最低的是&&.22.C语言中运算结果可以当成逻辑值使用的表达式有____表达式,____表达式,____表达式,____表达式,____表达式和____表达式.解:算术,关系,逻辑,赋值,逗号,条件. 在c语言中,逻辑判断以非0值为真,以0值为假.所以,几乎所有的表达式的运算结果都可以当成逻辑值使用,如算术表达式,关系表达式,逻辑表达式,赋值表达式,逗号表达式,条件表达式等.第四章顺序结构、选择结构和循环结构的程序设计一、单项选择题1.设a=3,b=4,执行"printf("%d,%d",(a,b),(b,a));"的输出是( ) A.</x<30的c表达式可写成20<x&&x<30.所以表述20<x<30或x<-100的c表达式为20<x&&x<30||x<-100.></x<30或x<-100的c语言表达式是____.></b,先计算!a,因a的值为1o,!a的值为0.关系表达式0<20为真,所以表达式!a3,4 B.4,3 C.3,3 D.4,4解:B.在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符%d要求输出项内容以十进制整数形式输出.第一个输出项(a,b)是一个逗号表达式,该表达式的值是b的值,输出4.接着输出字符逗号.第二个输出项(b,a)的值是a的值,输出3.所以语句执行将输出4,3.2.使用语句"scanf("x=%f,y=%f",&x,&y)",要使x,y均为1.25,正确的输入是( ) A.1.25,1.25 B.1.25 1.25 C.x=1.25,y=1.25 D.x=1.25 y=1.25解:C.格式输入函数的格式字符串中的字符可以分成三类:空格类字符,其它普通字符和格式转换说明.其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符.普通字符要求输入字符与其完全相同.格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储到对应输入项所指定的存储位置中.函数调用scanf("x=%f,y=%f,&x,&y)以普通字符x=开头,输入时也要先输入x=.接着是一个浮点数输入格式,所有能构成一个浮点数1.25的字符序列都能满足要求.接着是普通字符列",y=",在输入的浮点数之后也要有字符列",y=".最后又是浮点数输入格式,同样所有能构成一个浮点数1.25的字符序列都能满足要求.问题给出的供选择答案中只有x=1.25,y=1.25是能满足上述要求的.3.设有int i=010,j=10;则执行"printf("%d,%d\n",++i,j--);"的输出是( ) A.ll,10 B.9,10 C.010,9 D.10,9解:B.变量i和j的初值分别为八进制数010和十进制数10,函数调用printf("%d,%d\n",++i,j--)中,++i的值是变量i增1后的值,原来值是八进制数010,等于十进制数8,输出9.j--的值是变量j减1之前的值,输出10.格式字符申中的逗号是普通字符照原样输出.所以问题给出的格式输出函数调用将输出9,10.4.设a,b为字符型变量,执行"scanf("a=%c,b=%c",&a,&b);"后使a 为'A',b为'B',从键盘上的正确输入是( ) A.'A''B' B.'A','B' C.A=A,B=B D.a=A,b=B解:D.函数调用scanf("c=%c,b=%c",&c,&b)中,普通字符必须按格式字符串要求照原样输入,c格式对紧接的任何字符都输入.所以实现问题的要求,输入字符列应为"a=A,b=B".另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号.但用字符格式输入字符时,在要输入字符前后不必另键人单引号.若键人单引号,则这个单引号也将作为字符被输入.5.设x,y,z,t均为int型变量,则执行以下语句后,t的值为( ) x=y=z=1;t=++x||++y&&++z; A.不定值 B.2 C.l D.0解:C.语句序列"x=y=z=1;t=++x||++y&&++z;"使变量x的值为1,变量t是赋一个逻辑表达式的值.在C语言中,由逻辑与和逻辑或构成的逻辑表达式有特别的计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式的结果时,就立即结束逻辑表达式的计算,不再计算后继逻辑子表达式.本题的逻辑表达式是两个运算分量的逻辑或,而且左运算分量++x的值为非0,立即得到逻辑或运算的结果为1,并将1赋给变量t,所以变量t的值为1.6.设x,y,z,t均为int型变量,则执行以下语句后,t的值为( ) x=y=z=0; if(x==y) t=z;else t=!z A.不定值 B.2 C.2 D.0解:D7.假定所有变量均已正确定义,下列程序段运行后x的值是( ) a=b=c=0;x=35; if(!a) x--;else if(b);if(c) x=3;else x=4; A.34 B.4 C.35 D.3解:B.以变量a,b,c的值均为0,变量x的值为35,语句:if(!a) x--;else if(b);if(c)x=3;else x=4;由两个语句组成.首先执行前一个if语句"if (!a)x--;else if(b);",因变量a的值为0,条件!a成立,执行x--使x的值变为34.接着执行后继的if语句"if(c)x=3;else x=4;",因变量c的值为0,条件不成立而执行x=4,最终使变量x的值为4.注意前一个if语句的else 部分的成分语句只有"if(b);",这是一个单分支if语句,且其成分语句为空语句.8.下面的程序段所表示的数学函数关系是( ) y=-l; if(x!=0) if (x>0) y=l;else y=0; -1(x<0) 1 (x<0) 0 (x<0) -l(x<0)A.y={0 (x=0)B.y={-l(x=0)C.y={-1(x=0)D.y={1 (x=0) 1 (x>0) 0 (x>0) 1 (x>0) 0 (x>0)解:C.程序段首先置变量y的值为-l,接着按变量x值的不同情况重置变量y的值.重置的首要条件是x!=0,若变量x的值为0,则不再重置变。
高级语言程序设计习题(最新版带答案) 第1章 C语言概述习题 1、 单项选择题 (1) C 语言就是在 B 语言的基础上产生的。 A、 A B、 B C、 D D、 E (2) 在 C 语言中,每个语句必须以 D 结束。 A、 回车符 B、 冒号 C、 逗号 D、 分号 (3) 标识符与关键字间,要用 C 隔开。 A、 回车符 B、 冒号 C、 空格 D、 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A、 生成可执行目标文件 B、 生成目标文件 C、 输出运行结果 D、自动保存源文件 (5) 下列说法中正确的就是( B )。 A、 由于 C 源程序就是高级语言程序,因此一定要在 TC 软件中输入 B、 由 C 源程序就是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C、 由于C 程序就是高级语言程序,因此输入后即可执行 D、 由于 C 程序就是高级语言程序,因此它由命令组成 (6) 下列说法中正确的就是( A )。 A、 C 语言程序由主函数与 0 个或多个函数组成 B、 C 语言程序由主程序与子程序组成 C、 C 语言程序由子程序组成 D、 C 语言程序由过程组成 (7) 下列说法中错误的就是( D )。 A、 主函数可以分为两个部分:主函数说明部分与主函数体 B、 主函数可以调用任何非主函数的其她函数 C、 任何非主函数可以调用其她任何非主函数 D、 程序可以从任何非主函数开始执行
2、 填空题 (1) C 语言只有 32 个关键字与 9 种控制语句。 (2) C 语言就是一种“ 中级语言 ”,既具有 高级语言 的特点又具有 低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个 主 函数,系统总就是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集就是 ASCII码字符集 。 (5) C 语言的程序中有特殊含义的英语单词称为 保留字 。 (6) C 语言标识符的长度就是前 8 位有效。 (7) C 语言中,标识符的定义规则就是 以字母或下划线为开头 。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总就是以 /* 符号作为开始标记,以 */ 符号作为结束标记。
第2章 数据类型运算符与表达式习题
1、 单项选择题 (1) 以下选项中,正确的 C 语言整型常量就是 D 。 A、 32L B、 510000 C、 -1、00 D、 567 (2) 以下选项中, D 就是不正确的 C 语言字符型常量。 A、 'a' B、 '\x41' C、 '\101' D、 "a" (3) 在 C 语言中,字符型数据在计算机内存中,以字符的 C 形式存储。 A、 原码 B、 反码 C、 ASCII 码 D、 BCD码 高级语言程序设计习题(最新版带答案) (4) 字符串的结束标志就是 C 。 A、 0 B、 '0' C、 '\0' D、 "0" (5) 算术运算符、赋值运算符与关系运算符的运算优先级按从高到低依次为 B 。 A、 算术运算、赋值运算、关系运算 B、 算术运算、关系运算、赋值运算 C、 关系运算、赋值运算、算术运算 D、 关系运算、算术运算、赋值运算 (6) 逻辑运算符中,运算优先级按从高到低依次为 D 。 A、 &&,!,|| B、 ||,&&,! C、 &&,||,! D、 !,&&,|| (7) 表达式!x||a==b 等效于 D 。 A、 !((x||a)==b) B、 !(x||y)==b C、 !(x||(a==b)) D、 (!x)||(a==b) (8) 设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值就是 A 。 A、 0,0 B、 0,1 C、 1,0 D、 1,1 (9) int b=0,x=1;执行语句 if(x++) b=x+1; 后,x,b 的值依次为 A 。 A、 2,3 B、 2,0 C、 3,0 D、 3,2 (10) 设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值就是 B 。 A、 3 B、 0 C、 9 D、 -12 (11) 在以下一组运算符中,优先级最低的运算符就是 D 。 A、 * B、 != C、 + D、 = (12) 设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果就是 B 。 A、 6 B、 12 C、 15 D、 表达式出错 (13) 若已定义 x 与 y为double 类型,则表达式 x=1,y=x+3/2 的值就是 C 。 A、 1 B、 2 C、 2、0 D、 2、5 (14) sizeof (double)的结果值就是 A 。 A、 8 B、 4 C、 2 D、 出错 (15) 设a=1,b=2,c=3,d=4,则表达式:aA、 4 B、 3 C、 2 D、 1 (16) 设a 为整型变量,不能正确表达数学关系:10A、 10C、 a>10 && a<15 D、 !(a<=10) && !(a>=15) (17) 设 f就是实型变量,下列表达式中不就是逗号表达式的就是 D 。 A、 f= 3、2, 1、0 B、 f>0, f<10 C、 f=2、0, f>0 D、 f=(3、2, 1、0) (18) 设ch就是 char型变量,其值为 'A',则下面表达式的值就是 B 。 ch=(ch>='A'&& ch<='Z')? (ch+32):ch A、 A B、 a C、 Z D、 Z (19) 以下运算符中,结合性与其她运算符不同的就是 A 。 A、 ++ B、 % C、 / D、 + (20) 以下用户标识符中,合法的就是 B 。 A、 int B、 nit C、 123 D、 a+b (21) C 语言中,要求运算对象只能为整数的运算符就是 % 。 A、 % B、 / C、 > D、 * (22) PC 机中,'\n'在内存占用的字节数就是 A 。 A、 1 B、 2 C、 3 D、 4 (23) 字符串"ABC"在内存占用的字节数就是 B 。 A、 3 B、 4 C、 6 D、 8 (24) 要为字符型变量 a赋初值,下列语句中哪一个就是正确的 B 。 A、 char a="3"; B、 char a=’3’; C、 char a=%; D、 char a=*; (25)下列不正确的转义字符就是 C 。 A、 \\ B、 \' C、 074 D、 \0 2、 填空题 (1) C 语言中的逻辑值“真”就是用 非0 表示的,逻辑值“假”就是用 0 表示的。 (2) 符号常量的定义方法就是 #define N 10 。 高级语言程序设计习题(最新版带答案) (3) 无符号基本整型的数据类型符为 unsigned int ,双精度实型数据类型符为 double ,字符型数据类型符为 char 。 (4) 设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值分别 为 1 、 0 、 1 、 表达式错误 。 (5) 设 float x=2、5,y=4、7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为 2、5 。 (6) 判断变量 a、b 的值均不为 0 的逻辑表达式为 (a!=0)&&(b!=0) 。 (7) 求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 4,4,10,6 。 (8) 求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为 18,3,3 。 (9) 数学式a/(b*c)的 C语言表达式 a/(b*c) 。
第3章 顺序结构程序设计习题
1、 选择题 (1) printf("f=%3、2f%%",3、478);的输出结果就是 A 。 A、 f=3、48% B、 f=3、5% C、 f=3、48% % D、 f=347、8% (2) printf("%c,%d",'a', 'a');的输出结果就是 A 。 A、 a,97 B、 a 97 C、 97,a D、 97 a (3) scanf("%c",&a);若要给变量输入大写字母 A,则以下正确的输入就是 B 。 A、 'A' B、 A \ C、 "A" D、 以上都不对 (4) 若一个 int 类型的数据占 2 字节,则程序段:int x=-1;printf("%u,%d",x,x);的输出结果就是 A 。 A、 65535, -1 B、 -1,65535 C、 32767, 32768 D、 32768,32767 (5) 在 TC 中,getchar、putchar、printf、scanf 四个函数,均包含在头文件 B 中。 A、 math、h B、 stdio、h C、 stbio、h D、 stdlib、h (6) 复合语句就是用 C 括起来的语句组。 A、 ( ) B、 [ ] C、 { } D、 < > (7) 下列格式符中,哪一个可以用于以八进制形式输出整数 C 。 A、 %d B、 %8d C、 %o D、 %ld (8) 下列格式符中,哪一个可以用于以十六进制形式输出整数 B 。 A、 %16d B、 %8x C、 %d16 D、 %d (9) a 就是int类型变量,c就是字符变量,下列输入语句中哪一个就是错误的 B 。 A、 scanf("%d,%c",&a,&c); B、 scanf("%d%c",a,c); C、 scanf("%d%c",&a,&c); D、 scanf("d=%d,c=%c",&a,&c); (10) 要使double x; long a;的数据能正确的输出,输出语句应就是 D 。 A、 printf("%d, %f",a, x); B、 printf("%d, %1f",a, x); C、 scanf("%1d, %1f",&a, &x); D、 printf("%1d, %lf",a, x);
2、 程序改错题(以下各个程序段均有 5 个错误,请先找出错误的位置,然后再改正) (1) 以下程序的功能就是,从键盘输入一个字符并鸣笛输出。 #include "stdio、h" mian() //main() { char c //char c; getchar(c);//c = getchar(); putchar('\007') ; /*鸣笛*/ c=putchar(); //putchar(c); //} (2) 以下程序的功能就是,输入长方形的两边长(边长可以取整数与实数),输出它的面积与周长。 main //main()