《程序设计基础(C)》习题指导书
第一章 数据类型与表达式
一.知识点
1.C语言的特点:①语言简洁、紧凑,使用方便、灵活; ②运算符丰富;
③数据结构丰富; ④具有结构化控制语句; ⑤语法限制不太严格,程序设计自由度大;
⑥可以进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作; ⑦生成的目标代码质量高,程序执行效率高; ⑧程序的移植性好。 2.C程序的组成:
⑴C程序是由函数构成的;
⑵一个函数包括函数的首部(即函数的第一行)和函数体(即花括号部分); ⑶函数体一般包括声明部分和执行部分;
⑷一个C程序总是从main函数开始执行,从main函数结束;
⑸C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上; ⑹每个语句和数据定义的最后必须有一个分号;
⑺C语言本身没有输入输出语句,是通过函数实现输入输出的; ⑻可以用/*??*/对C程序的任何部分作注释。
3.C语言程序的运行:源程序文件的扩展名为.c,目标程序文件的扩展名为.obj,可执行程序文件的扩展名为.exe。
4.C的数据类型:基本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef。
5.常量与变量的概念,注意符号常量的定义与使用。
6.整型、实型、字符型常量的表示,注意整型常量的十进制、八进制、十六进制的书写。
7.变量的定义,C的标识符包括关键字、预定义标识符、用户定义标识符;用户定义标识符的可用字符为字母、数字、下划线,第一个字符为字母或下划线。
8.转义字符:\\n、\\t、\\b、\\r、\\f、\\\\、\\’、\\”、\\ddd、\\xhh。 9.不同数值型数据的混合运算,低级类型转换为高级类型运算。 10.C的运算符:注意结合方向和运算的优先级。
11.算术运算符:+、-、*、/、%、++、--,注意自加、减运算符分前缀和后缀两种方式。其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%要求运算量为整数,运算结果也为整数。注意除运算时,若运算量为整型时,其运算结果也是整型的规则。
12.赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据类型的转换。 13.逗号运算符的使用,注意逗号运算符的运算规则。
二.习题 ? 基础篇
㈠.填空题
1.C语言源程序文件的后缀是 .c或.cpp,经过编译后,生成文件的后缀是 .obj,经过连接后,生
成文件的后缀是 .exe 。
2.设C源程序文件名为text.c,为得出该程序的运行结果,应执行的文件名是.obj,此文件是通过编译产生的。
3.结构化程序由 顺序 、 选择 、 循环 三种基本结构组成。
4.若k为整型变量且赋值11。请写出运算k++后表达式的值 11 和变量的值 12 。 5.若x为double型变量,运算x=3.2,++x后表达式的值 4.2 和变量的值 4.2 。
第 1 页 共 64 页
《程序设计基础(C)》习题指导书
6.函数体由符号 { 开始,用符号 } 结束。函数体的前面是 声明 部分,其后是 执行 部分。
7.C语言中的标识符可分为 关键字 、 自定义标识符 和预定义标识符三类。
8.在C语言程序中,用关键字 int 定义基本整型变量,用关键字 float 定义单精度实型变量,用关键字 double 定义双精度实型变量。
9.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是 float a1,a2;a1=a2=1; 。 10.C程序中定义的变量,代表内存中的一个 存储单元 。 11.表达式3.5+1/2的计算结果是 3.5 。 12.写出数学表达式
a?b三个等价的C语言表达式a*b/(c*d)、a /(c*d)*b、b/(c*d)*a。 c?d13.通常一个字节包含 8 个二进制位。
15
14.当计算机用两个字节存放一个整数时,能存放的最大(十进制)整数是 2-1 、最小(十进制)整
16
数是 -2 。
15.在C语言中整数可用 8 进制数、 十 进制数和 十六 进制数三种数制表示。
16.C语言中,int型数据占 2 个字节,long型数据占 4 个字节,unsigned int型数据占 2 个字节,short型数据占 8 个字节, float型数据占 4 个字节,double型数据占 8 个字节,char型数据占 8 个字节。
17.C语言规定,标志符只能由_数字_____、_字母______、_下划线_______3种字符组成,而且,第一个字符必须是__字母_____或___下划线____。
18.C语言中,基本数据类型有_int_______、___float____和字符型。 19.‘x’在内存中占_1_____字节,“x”在内存中占_2_______字节,“\\101”在内存中占__1____字节。 ㈡.选择题
1.组成C语言程序的是( )。
A.子程序 B.过程 C.函数 D.主程序和子程序 2.以下叙述中正确的是( )。
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B.C程序由主函数组成。 C.C程序由函数组成。
D.C程序由函数和过程组成。
3.以下选项中正确的整型常量是( )。
A.12. B.-20 C.1,000 D.4 5 6 4.以下选项中正确的实型常量是( )。
2
A.0 B.3. 1415 C.0.329╳10 D..871 5.以下选项中不合法的用户标识符是( )。
A._123 B.printf C.A$ D.Dim 6.C语言中运算对象必须是整型的运算符是( )。 A.% B./ C.! D.*
7.C语言中,#define PRICE 2.56将PRICE定义为( )。
A.符号常量 B.字符常量 C.实型常量 D.变量 8.若变量已正确定义并赋值,符合C语言语法的表达式是( )。
A.a=a+7; B.a=7+b+c,a++ C.int(12.3%4) D.a=a+7=c+b 9.不合法的八进制数是( )。
A.0 B.028 C.077 D.01 10.C语言中合法的字符常量是( )。
A.n B.’\\n’ C.110 D.“n” 11.表达式1/5+3%4+4.5/5的值是( )。
A.3.9 B.3.900000 C. 1.100000 D. 1.85
第 2 页 共 64 页
《程序设计基础(C)》习题指导书
12.下面4个选项中,均是合法转义字符的选项是( )。
A. '\\\’ '\\\\' '\\n' B. '\\' '\\017' '\\\C. '\\011' '\\f' '\\}' D. '\\abc' '\\101' 'xlf' 13.设有语句:char c=’\\72’; 则变量c( )。
A. 包含1个字符 B. 包含2个字符 C .包含3个字符' D. 不合法 14.在C语言中,int、char和short三种类型数据在内存中所占用的字节数( )。 A. 由用户自己定义 B. 均为2个字节
C. 是任意的 D. 由所用机器的机器字长决定 ㈢.判断题
1.一个C程序的执行是从本程序的第一个函数开始,到本程序文件的最后一个函数结束。( )? 2.在C程序中,逗号运算符的优先级最低。( )?
3.定义的变量都具有默认值,因此变量定义后便可以使用。( )? 4. 在C语言中,即使两个整型数据未超出该数据的取值范围,它们的和也可能会超出该数据的取值范围( )。?
㈣.程序设计题
1.编程输出下列图案
* * * * * * * * ? M E N U ? $ $ $ $ $ $ $ $
2.编写一个程序,将两个数作为输入数据,并显示它们的和、差、积、商。
? 应用篇
㈠.填空题
1.若采用十进制数的表示形式,则077为______,0111为______,0xab为_______。
2.设C语言中的一个基本整型数据在内存中占2个字节,若欲将整数135791正确无误地存放在变量a中,应采用的类型说明语句是_long a=135791_______。
3.若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y 后的y值是 -16 。 4. C程序是由 函数 构成的,一个C程序必须有一个 main函数 。 ㈡.选择题
1.已知各变量的类型说明如下: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下正确的表达式是( )。
A. a+=a-=(b=4)*(a=3) B. a=a*3=2 C. x%(-3) D. y=float(i) 2.以下正确的叙述是( )。
A. 在C程序中,每行中只能写一条语句
B. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数,都能被准确无误的表示 D. 在C程序中,%是只能用于整数运算的运算符 3.sizeof(float)是( )。
A. 一个双精度型表达式 B. 一个整型表达式 C. 一种函数调用 D. 一个不合法的表达式 ㈢.判断题
1.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变。( )? 2.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。( )?
第 3 页 共 64 页
《程序设计基础(C)》习题指导书
3. 一个C程序可以有多个函数,其中主函数必须在程序的最开头( )。?
4. 若有命令行:#define N 1000,则N++是不合法的表达式( )。 ?
? 提高篇
㈠.填空题
1.若有定义语句:int a=2,b=7;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为__5.5____。 2.假设变量a、b均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为__9____。 ㈡.选择题
1.已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2='A'+'6'-'3'后;c2中的值为( )。
A. D B. 68 C. 不确定的值 D. C
2.若有定义语句:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )。 A.2.500000 B.2.750000 C.3.5000000 D.0.000000
3.设有说明语句:char w;int x;float y;double z; 则表达式w*x+z-y值的数据类型为( )。 A.float B.char C.int D.double
4. 设有语句:int a=3; 执行语句printf(“%d”,-a++);后,输出的结果是( )。 A.3 B.4 C.-3 D.-12
第二章 算法与顺序结构
一.知识点
1.算法:为解决一个问题而采取的方法和步骤。 2.算法的分类:数值算法、非数值算法。
3.算法的特点:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。
4.算法描述方法:自然语言、流程图、改进流程图、N—S流程图、伪代码、计算机语言。 5.C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。 6.输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。 7.字符数据的输入/输出:getchar()、putchar()。 8.格式输入/输出:scanf()、printf()。
9.printf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,n,-。
10.scanf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,*;&。注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车。
11.顺序结构的设计思想:声明变量、输入数据、处理(算法)、输出结果。
二.用N—S图表示下列问题
1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。 2.依次将10个数输入,要求将其中最大的数打印出来。
3.有3个数a、b、c,要求按从大到小的顺序把它们打印出来。 4.求1+2+3+??+100。
5.判断一个数n能否同时被3和5除。 6.将100~200之间的素数打印出来。
7.求两个整数m和n的最大公约数(用辗转相除法)。
2
8.求方程ax+bx+c=0的根;分别考虑有两个不等的实根和有两个相等的实根的情况。
三.习题 ? 基础篇
㈠.填空题
第 4 页 共 64 页
《程序设计基础(C)》习题指导书
1.以下程序段执行后的输出结果是: ⑴ -200 2500 ⑵i=-200,j=2500
int i=-200,j=2500; ⑶ i=-200 printf(“⑴ %d %d”,i,j); j=2500 printf(“⑵ i=%d,j=%d\\n”,i,j); printf(“⑶ i=%d\\n j=%d\\n”,i,j);
2.复合语句在语法上被认为是 一条语句 。空语句的形式是 ; 。 3.C语句的最后用 ; 结束。
4.以下程序段的输出结果是x= 127,x= 177,x= 7f,x= 127。
int x=0177;printf(“x=m,x=%6o,x=%6x,x=%6u\\n”,x,,x,x,x);
5.以下程序段的输出结果是a=513.789215,a= 513.79,a=513.78921500,a= 531.78921500。
double a=513.789215; printf(“a=%8.6f,a=%8.2f,a=.8f,a=.8lf\\n”,a,a,a,a); 6.以下程序段的输出结果是 8,3 。
a=3+5,a*4;x=11/3;printf(“%d,%%d\\n”,a,x);
7.以下程序输入三个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后
输出a、b、c的值。请填空: #include
{ int a,b,c, t ; printf(“Enter a,b,c:”); scanf(“%d,%d,%d”, &a,&b,&c); m=a ;a=b;b=c; c=m; printf(“a=%d,b=%d,c=%d\\n”,a,b,c);}
8.以下程序不借助任何变量把a、b中的值进行交换。请填空:
#include
9.已知int a=1; printf(\则输出结果是 97 。
10.已知float a=3,b=2; printf(\则输出结果是 1.500000 。
11.结构化程序设计的3种基本结构是 顺序 结构、 分支/选择 结构和循环结构。 12.若x为int型变量,则执行语句x=7;x+=x-=x+x;后x的值是__-14______。 13.C语句的最后用___;___结束。
14.设有一输入函数scanf(“%d”,k);它不能使float类型变量k得到正确数值得原因是_输入的格式不正确__和__应该是k的地址_。
15.若已定义:int a;unsigned b;long c;语句:a=-2;b=a;c=b;则b中值为 216-2 ,c中值为 -2 。 16.若k为整型变量且赋值10。请写出运算k++后表达式的值__10___和变量的值____11___。 17.复合语句在语法上被认为是__一条语句_____,空语句的形式是__;_____。
18.有如下程序段:设a为两个字节,int a=-1;printf(\输出结果为:_ a1=-1,a2=216-1 ________。 ㈡.选择题
1.若a、b、c、d都是int型变量且初始值为0,下列不正确的赋值语句是( )。 A.a=b=c=100; B.d++; C.c+b; D.d=(c=22)-(b++);
第 5 页 共 64 页