c语言第8章 编译预处理及位运算习题答案
C语言习题答案1-10

习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。
算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗地讲,就是计算机解题的步骤。
算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。
2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。
一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。
3.简述高级程序设计语言中面向过程与面向对象的概念。
“面向过程”是一种以过程为中心的编程思想。
首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。
一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
“面向对象”是一种以事物为中心的编程思想。
面向对象的方法主要是将事物对象化,对象包括属性与行为。
面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。
编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。
4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。
(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。
(3)数据类型丰富。
C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
C语言第3版 选择题(第7、8、9章)

习题七一、选择题1.以下表达中错误的选项是C。
A) 预处理命令必须以#号开头B) 预处理命令可以写成多行C) 预处理命令必须置于源文件的开场处D) 预处理命令以回车完毕2.C语言编译系统对宏替换的处理是在A进展的。
A) 源程序编译前B) 源程序编译时C) 程序连接时D) 程序运行时3.在宏定义#define PI 3.14159 中,是C。
A) 单精度数B) 双精度数C) 字符串D) 由PI位置确定其类型4.设有宏定义#define A B abcd ,那么宏替换时,A。
A) 宏名A用B abcd 替换B) 宏名A B用abcd 替换C) 宏名A 和宏名B都用abcd 替换D) 语法错误,无法替换5.以下有关宏的表达中错误的选项是A。
A) 宏名必须使用大写英文字母B) 宏替换不占用程序的运行时间C) 宏参数没有数据类型D) 宏名没有数据类型6.以下宏定义,最不会引起二义性的是D。
A) #define ADD(a,b) a+bB) #define ADD(a,b) (a)+(b)C) #define ADD(a,b) (a+b)D) #define ADD(a,b) ((a)+(b))7.设有宏定义#define M 3+2 那么表达式2 * M * 3 的值为B。
A) 30 B) 12C) 10 D) 138.设有宏定义#define Y(n) (4*n) 那么表达式3+Y(5+1)的值为B。
A) 21 B) 24C) 27 D) 309.设有宏定义:#define N 3#define M N+2那么表达式2*M/N的值为A。
A) 6 B) 3C) 3.333 D) 错误替换为2*3 + 2 /3,其中,2/3是整除,值为110.在#include命令中,#include后面的文件名用双引号定界,那么系统寻找被包含文件的方式是 D 。
A) 在C系统的include文件夹查找B) 在源程序所在文件夹查找C) 先在C系统的include文件夹查找,查找失败后再到源程序所在文件夹查找D) 先在源程序所在文件夹查找,查找失败后再到C系统的include文件夹查找11.〔不要求〕设有以下A、B两个程序段,那么说法正确的选项是B。
位运算练习题_参考答案

位运算练习题2007-06-12 10:311.以下运算符中优先级最低的是(C)优先级最高的是( B )A.&&B.&C.||D.|B )2. 如有运算符 sizeof,<<,^&=, 则它们按优先级由高到低的正确摆列次序是( ,&=,<<,^ ,<<,^,&= C.^,<<,sizeof,&= D,<<,^,&=sizeofB )3. 在 C 语言中,要求运算数一定是整型或字符型的运算符是( A.&& B.& C.! D.||(float) 是( C)A.一种函数调用 B. 一个不合法的表示形式 C. 一个整型表达式 D. 一个浮点表达式5. 表达式 0x13&0x17 的值是( B)6.以下程序的运转结果是( C ),70 ,0 ,50 ,76Char x=56; x=x&056; printf(“%d,%n”,x,x);7. 若 x=2,y=3 则 x&y 的结果是( B )D,58. 在履行完以下 C 语句后, B 的值是( B 或 C )注:最好选B,C语言中无bool 型charZ=`A`);intB;B=((241&15)&&(Z|`a`);9. 表达式 0X13|0x17 的值是 ( B)10. 若 a=1,b=2;则a|b的值是(D)11. 如有以下程序段,则履行以下语句后x,y 的值是分别是(C)int x=1,y=2; x=x^y; y=y^x; x=x^y;=1,b=2 =2,y=2 =2,y=1 ==112. 表达式 0x13^0x17 的值是(A)13. 请读程序片段,输出结果是:(C)int x=20; printf((“%d n”,~x);14. 表达式 ~0x13 的值是( 0xffffffec)选项中无答案15. 在们运算中,操作数每右移一位,其结果相当于(B)A. 操作数乘以 2B. 操作数除以 2C. 操作数除以 4D. 操作数乘以416.在位运算中,操作数每左移一位,其结果相当于( A )A. 操作数乘以 2B. 操作数除以 2C. 操作数除以 4D. 操作数乘以417.设有以下语句。
c语言第8章-编译预处理及位运算习题答案doc资料

c语言第8章-编译预处理及位运算习题答案编译预处理习题一.单项选择题1.在宏定义#define A 3.897678中,宏名A代替一个()。
A)单精度数 B)双精度数 C)常量 D)字符串2.以下叙述中正确的是A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理()。
A)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行的D)在对源程序中其它语句正式编译之前进行的4.在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文件的方式是()。
A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅在源程序所在目录搜索D)仅仅搜索当前目录5.以下说法中正确的是A)#define和printf都是C语句 B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C 语句6.#define A 3.897678#include <stdio.h>main( ){ printf(“A=%f ”,A);}程序运行结果为()。
A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D)无结果7.有宏定义:#define LI(a,b) a*b#define LJ(a,b) (a)*(b)在后面的程序中有宏引用:x=LI(3+2,5+8);y=LJ(3+2,5+8);则x、y的值是()。
A) x=65,y=65 B) x=21,y=65 C) x=65,y=21 D)x=21,y=218.有以下程序# define f(x) (x*x)main(){ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf("%d, %d\n",i1,i2);}程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3D)64, 649.以下程序的输出结果是#define M(x,y,z) x*y+zmain(){ int a=1,b=2, c=3;printf(“%d\n”, M(a+b,b+c, c+a));}A) 19 B) 17 C) 15 D) 1210.有以下程序#define N 5#define M1 N*3#define M2 N*2main(){ int i;i=M1+M2; printf(“%d\n”,i);}程序编译后运行的输出结果是:A) 10 B) 20 C) 25 D) 3011.有如下程序#define N 2#define M N+1#define NUM 2*M+1#main(){ int i;for(i=1;i<=NUM;i++)printf(“%d\n”,i);}该程序中的for循环执行的次数是A) 5 B) 6C) 7 D) 812.位运算是对运算对象按二进制位进行操作的运算,运算的对象是____数据,以___的形式参与运算。
c语言课后习题参考答案

第1章习题参考答案1、选择题(1)C (2)C (3)D (4)B (5)D(6)D (7)C (8)A (9)A (10)C2、填空题(1)函数、一个主函数、函数。
(2) /*、*/ 。
(3) 连接。
(4) # 。
(5) main 。
(6) /*……*/ 。
(7) .h 。
(8) F5 。
(9) .exe (10) .exe 、 .obj 、.exe 。
3、程序设计题(1) #include <stdio.h>void main(){printf(" *\n");printf(" * S *\n");printf(" *\n");}(2) #include <stdio.h>void main(){printf("*****************\n");printf("Your are welcome!\n");printf("-----------------\n");}(3) #include <stdio.h>void main(){char c1,c2;printf("请输入c1和c2的值:");c1=getchar();scanf(" %c",&c2);printf("c1=%c\n",c1);printf("c2=");putchar(c2);printf("\n");}第2章习题参考答案1、简述算法的概念。
答:算法就是为解决一个具体的问题而使用的确定的、有限的方法和步骤。
2、算法应具备哪些特性?答:算法应具备有穷性、确定性、可行性、输入、输出等五种特性。
3、分别说明什么是自然语言描述法?什么是框图语言描述法?什么是伪语言描述法?什么是N-S框图语言描述法?它们的优缺点各是什么?答:①用人们日常使用的语言来描述算法,称为算法的自然语言描述法。
C语言全部章节习题集(参考答案)

第一章 C语言概述一、选择题:1、一个C程序的执行是从( A )。
A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在 C 语言中,每个语句必须以( D )结束。
A. 回车符B. 冒号C. 逗号D. 分号3、C 语言规定:在一个源程序中,main函数的位置( C )。
A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后4、一个C 语言程序是由( B )。
A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成5、下列说法中错误的是( D )。
A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。
A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件二、填空题:1、C 语言只有 32 个关键字和 9 种控制语句。
2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。
3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。
4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函数 printf 完成的。
5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。
6、C 语言的标识符只能由字母、数字和下划线三种字符组成。
第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的 C 语言浮点型常量是( C )。
位运算练习题_参考答案

位运算练习题2007-06-12 10:31更1. 以下运算符中优先级最低的是(C)优先级最高的是(B )A.&&B.&C.||D.|2. 若有运算符sizeof,<<]&=, 贝陀们按优先级由高到低的正确排列次序是( B ),& =,<<,A ,<<,A,&= C.A,<<,sizeof,&= D,<<,A,&=sizeof3. 在C语言中,要求运算数必须是整型或字符型的运算符是(B )A.&&B.&C.!D.||(float)是(C)A. —种函数调用B. 一个不合法的表示形式C. 一个整型表达式D. 一个浮点表达式5. 表达式0x13&0x17的值是(B)6. 以下程序的运行结果是(C ),70 ,0 ,50 ,76Char x=56; x=x&056; printf( “ %d,% n” ,x,x);7. 若x=2,y=3 则x&y 的结果是( B )D,58. 在执行完以下C语句后,B的值是(B或C)注:最好选B,C语言中无bool型charZ='A');intB;B=((241&15)&&(Z|'a');9. 表达式0X13|0x17 的值是(B)10. 若a=1,b=2; 则a|b 的值是( D)11. 若有以下程序段,则执行以下语句后x,y 的值是分别是(C)int x=1,y=2; x=x A y; y=y A x; x=x A y;=1,b=2 =2,y=2 =2,y=1 ==112. 表达式0x13A0x17 的值是(A)13. 请读程序片段,输出结果是:(int x=20; printf(( “%d n”,~x);14. 表达式~0x13 的值是 ( 0xffffffec)选项中无答案15. 在们运算中,操作数每右移一位,其结果相当于A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以416.在位运算中,操作数每左移一位,其结果相当于( A )A. 操作数乘以2B. 操作数除以2C. 操作数除以4D. 操作数乘以417.设有以下语句。
谭浩强c语言程序设计习题集

目录重要次重要重复或欲删除基础第一章 C语言概述1.1 选择题1.2 填空题第二章数据类型、运算符与表达式2.1 选择题2.2 填空题第三章最简单的C程序设计3.1 选择题3.2 填空题第四章逻辑运算和判断选取控制4.1 选择题4.2 填空题4.3 编程题第五章循环控制5.1 选择题5.2 填空题5.3 编程题第六章数组6.1 选择题6.2 填空题6.3 编程题第七章函数7.1 选择题7.2 填空题7.3 编程题第八章编译预处理8.1 选择题8.2 填空题8.3 编程题第九章指针9.1 选择题9.2 填空题9.3 编程题第十章结构体和共用体10.1 选择题10.2 填空题10.3 编程题第十一章位运算11.1 选择题11.2 填空题11.3 编程题第十二章文件12.1 选择题12.2 填空题12.3 编程题第一章 C语言概述1.1 选择题*1.1一个C程序的执行是从。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。
但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。
如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。
*1.2以下叙述正确的是。
A)在C程序中,main函数必须位于程序的最前面B)在C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误参考答案:C参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译预处理习题一.单项选择题1.在宏定义#define A 3.897678中,宏名A代替一个()。
A)单精度数 B)双精度数 C)常量 D)字符串2.以下叙述中正确的是A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理()。
A)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行的D)在对源程序中其它语句正式编译之前进行的4.在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文件的方式是()。
A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅在源程序所在目录搜索D)仅仅搜索当前目录5.以下说法中正确的是A)#define和printf都是C语句 B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句6.#define A 3.897678#include <stdio.h>main( ){ printf(“A=%f ”,A);}程序运行结果为()。
A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D)无结果7.有宏定义:#define LI(a,b) a*b#define LJ(a,b) (a)*(b)在后面的程序中有宏引用:x=LI(3+2,5+8);y=LJ(3+2,5+8);则x、y的值是()。
A) x=65,y=65 B) x=21,y=65 C) x=65,y=21 D)x=21,y=218.有以下程序# define f(x) (x*x)main(){ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf("%d, %d\n",i1,i2);}程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3D)64, 649.以下程序的输出结果是#define M(x,y,z) x*y+zmain(){ int a=1,b=2, c=3;printf(“%d\n”, M(a+b,b+c, c+a));}A) 19 B) 17 C) 15 D) 1210.有以下程序#define N 5#define M1 N*3#define M2 N*2main(){ int i;i=M1+M2; printf(“%d\n”,i);}程序编译后运行的输出结果是:A) 10 B) 20 C) 25 D) 3011.有如下程序#define N 2#define M N+1#define NUM 2*M+1#main(){ int i;for(i=1;i<=NUM;i++)printf(“%d\n”,i);}该程序中的for循环执行的次数是A) 5 B) 6C) 7 D) 812.位运算是对运算对象按二进制位进行操作的运算,运算的对象是____数据,以___的形式参与运算。
A) 整型原码B) 整型补码 C)数值原码 D) 数值补码13.在位运算中,若左移时丢弃的高位不包含1,则每左移一位,相当于_____。
A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以414.设 int b=8;表达式(b>>2)/(b>>1)的值是________。
A) 0 B) 2 C) 4 D) 815.若定义unsigned int a=3,b=10;printf("%d\n",a<<2|b==1);则运行结果为________。
A)13 B)12 C)8 D)14二.填空题1.C提供的预处理功能主要有__宏定义____、__文件包含____、___条件编译__等三种。
2.C规定预处理命令必须以____#______开头。
3.在预编译时将宏名替换成____宏定义中的“字符串”___的过程称为宏展开。
4.预处理命令不是C语句,不必在行末加______;_____。
5.以头文件stdio.h为例,文件包含的两种格式为:_ # include〈stdio.h〉_,_#include”stdio.h”_。
6.定义宏的关键字是___define______。
7.设有如下运算符:&、|、~、<<、>>、^,则按优先级由低到高的排列顺序为_~、<<、>>、&、^、|______。
8.设二进制数i为00101101,若通过运算“i^j”,使i的高4位取反低4位不变,则二进制数j的值应为__11110000____。
9.设无符号整型变量a为6,b为3,则表达式b&=a的值为____2____。
10.整型变量x和y的值相等且为非0值,则表达式x^y的结果为____零____。
二、阅读程序题1.以下程序输出结果是150。
# include〈stdio.h〉# define MAX(x,y) (x)>(y)?(x):(y)main(){int i,z,k;z=15;i=z-5;k=10*(MAX(i,z));printf(“%d\n”,k);}2.以下程序输出结果是23 。
# include〈stdio.h〉# define ADD(y) 3.54+y# define PR(a) printf(“%d”,(int)(a))# define PR1(a) PR(a);putchar(‘\n’)main(){int i=4;PR1(ADD(5)*i);}3.设有如下宏定义:#define MYSWAP(z,x,y) {z=x;x=y;y=z;}以下程序段通过宏调用实现变量a、b内容交换,请填空。
float a=5,b=16,c;MYSWAP( c ,a,b);4.下列程序的输出结果是1000 10。
#define N 10#define s(x) x*x#define f(x) (x*x)main(){ int i1,i2;i1=1000/s(N);i2=1000/f(N);printf(“%d %d\n”,i1,i2);} 5.以下程序输出结果是8 20 12 。
main( ){int b=5;#define b 2#define f(x) b*(x)int y=3;printf(“%d”,f(y+1));#undef bprint f(“%d”,f(y+1));#define b 3printf(“%d\n”,f(y+1));}6.下列程序的输出结果是11。
#define NX 2+3#define NY NX*NXmain(){ int i=0,m=0; for(;i<NY;i++)m++; printf(“%d\n”,m);}7.下列程序的输出结果是MIN。
#define MAX(a,b) a>b#define EQU(a,b) a==b#define MIN(a,b) a<bmain(){ int a=5,b=6;if(MAX(a,b)) printf(“MAX\n”);if(EQU(a,b)) printf(“EQU\n”);if(MIN(a,b)) printf(“MIN\n”);}8.下列程序的输出结果是0 1 1。
#define TESTmain( ){ int x=0,y=1,z; z=2*x+y;#ifdef TESTprintf(“%d %d ”,x,y);#endifprintf(“%d\n”,z);}三.编程题1. 定义一个带参的宏,求两个整数的余数。
通过宏调用,输出求得的结果。
#define R(m,n) (m)%(n)#include <stdio.h>void main(){ int m,n;printf("enter two integers:\n");scanf("%d%d",&m,&n);printf("remainder=%d\n",R(m,n));}2. 分别用函数和带参的宏,从3个数中找出最大者。
#include <stdio.h>#define MAX(a,b) ((a)>(b)?(a):(b)) // implementation by MACROint max3(int a,int b,int c) //implementation by function{int m;m=a>b?a:b;m=m>c?m:c;return m;}void main(){ int m,n,k;printf("enter 3 integer:\n");scanf("%d%d%d",&m,&n,&k);printf("1. MACRO max=%d\n",MAX(MAX(m,n),k));printf("2. function max=%d\n",max3(m,n,k));}3. 输入一个整数m,判断它能否被3整除。
要求利用带参的宏实现。
#include <stdio.h>#define DIVIDEDBY3(m) (m)%3==0void main(){ int m;printf("enter a integer:\n");scanf("%d",&m);if(DIVIDEDBY3(m))printf("%d is divided by 3\n",m);elseprintf("%d is not divided by 3\n",m);}。