程序设计基础(C)习题指导书2014版(附带答案)

更新时间:2024-05-14 21:37:01 阅读量: 综合文库 文档下载

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

《程序设计基础(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 main()

{ 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 main() { int a,b; printf(“Input a,b:”); scanf(“%d,%d”, &a,&b); a+= b ;b=a- b ;a=a- b ; printf(“a=%d,b=%d\\n”,a,b);}

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 页

《程序设计基础(C)》习题指导书

2.以下选项中不是C语句的是( )。

A.{int i;i++;printf(“%d\\n”,i);} B.; C.a=5,c=10 D.{ ;} 3.以下合法的C语言赋值语句是( )。 A.a=b=58 B.k=int(a+b); C.a=58,b=58 D.--i; 4.以下程序的输出结果是( )。

A.0 B.1 C.3 D.不确定的值

main()

{ int x=10,y=3; printf(“%d\\n”,y=x/y);}

5.若变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是( )。 A.read(a,b,c); B.scanf(“%d%d%d”,a,b,c); C.scanf(“%D%D%D”,&a,&b,&c); D.scanf(“%d%d%d”,&a,&b,&c); 6.若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( )。 A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t; C.a=t;t=b;b=a; D.t=b;b=a;a=t; 7.若变量已正确定义,以下程序段的输出结果是( )。 A.输出格式说明与输出项不匹配,输出无定值

B.5.1700 C.5.16800 D.5.16900

x=5.16894;printf(“%f\\n”,(int)(x*1000+0.5)/(float)1000); 8.执行以下程序段后,c3中的值是( )。

A.0 B.1/2 C.0.5 D.1

int c1=1,c2=2,c3;c3=c1/c2; 9.执行以下程序段后,其输出结果是( )。

A.0,0,-10 B.0,0,5 C.-10,3,-10 D.3,3,-10

int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%d\\n”,a,b,c); 10.以下程序的输出结果是( )。

A.a=%2,b=%5 B.a=2,b=5 C.a=%%d,b=%%d D.a=%d,b=%d

main()

{ int a=2,b=5; printf(“a=%%d,b=%%d\\n”,a,b);} 11.若int型占两个字节,以下程序段的输出是( )。

A.-1,-1 B.-1,32767 C.-1,32768 D.-1,65535

int a=-1;printf(“%d,%u\\n”,a,a); 12.以下程序段的输出结果是( )。

A.|3.1415| B.| 3.0| C.| 3| D.| 3.|

float a=3.1415;printf(“|%6.0f|\\n”,a); 13.以下程序段的输出结果是( )。

A.9 8 B.8 9 C.6 6 D.以上三个都不对

#include main()

{ double a=-3.0,b=2; printf(“%3.0f %3.0f\\n”,pow(b,fabs(a)),pow(fabs(a),b));} 14.若a为整型变量,则以下语句( )。

A.赋值不合法 B.输出值为-2 C.输出为不确定值 D.输出值为2

a=-2L;printf(“%d\\n”,a); 15.若有定义char s=‘\\092’;则该语句( )。

A.使s的值包含1个字符 B.定义不合法,s的值不确定

第 6 页 共 64 页

《程序设计基础(C)》习题指导书

C.使s的值包含4个字符 D.使s的值包含3个字符

16.若k、g均为int型变量,则下列语句的输出为( )。 A.15 B.16 C.15 D.16 6f 70 71 6f

k=017;g=111;printf(“%d\\n”,++k);printf(“%x\\n”,g++); 17.已知字母a的ASCII十进制代码为97,执行下列语句后的输出为( )。 A.b,c B.a--运算不合法,故有语法错误

C.98,c D.格式描述和输出项不匹配,输出无定值

char a=‘a’;a--;printf(“%d,%c\\n”,a+‘2’-‘0’,a+‘3’-‘0’); 18.下列程序的输出为( )。

A.27.000000 B.27.500000 C.28.000000 D.28.500000

#include main()

{ int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2;printf(“%f\\n”,x); } 19.下列程序的输出结果是( )。

A.18 B.9 C.-18 D.-9

main() { int a=9;a+=a-=a+a;printf(“%d\\n”,a); } 20.下列程序的输出结果是( )。

A.0 B.5 C.1 D.不确定值

main() { int a=7,b=5;printf(“%d\\n”,b=b/a);} 21.下列程序的输出结果是( )。

A.12 B.11 C.10 D.9 main() { int a=011;printf(“%d\\n”,++a);}

23.下列是输出显示字符’a’的八进制ASCII码语句,正确的是( )。 A.printf(\.printf(\ C.printf(\D.printf(\

24.在scanf( )函数的格式说明符中,长整型数的输入格式说明符是( )。 A.%d B.%lf C.%ld D.%x

25.在printf()函数的格式说明符中,双精度浮点型的输出格式说明符是( )。 A.%ld B.%lf C.%c D.%s

26.将一个双精度浮点型常数12.345使用printf()函数输出显示在屏幕上,要求输出宽度为数值左边有2个空格符,小数点后面有4位数,正确的输出语句是( )。

A.printf(\.printf(\ C.printf(\.printf(\27.putchar函数可以向终端输出一个( )。

A.整型变量表达式的值 B.实型变量的值

C.字符串 D.字符或字符型变量的值 28.下列给出的分隔符中,错误的是( )。 A回车 B空格 C制表符 D双引号 29.以下选项不是C语句的是( )。

A.{int a;a++; printf(\.; C.{;} D.b=5

30.若变量已正确定义,要将a和b的数进行交换,下面不正确的语句是( )。 A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t; C.a=t;t=b;b=a; D.t=b;b=a;a=t;

第 7 页 共 64 页

《程序设计基础(C)》习题指导书

31.若变量已说明为int类型,要给a、b、c输入数据,正确的输入语句是( )。

A.scanf(\ B.read(a,b,c);

C.scanf(\D.scanf(\㈢.程序设计题

1. 编写程序,从终端键盘输入圆的半径r,圆柱体的高h,分别计算出圆周长c1、圆面积cs和圆柱的体

积cvs。输出计算结果时要求有文字说明,并取小数点后2位数字。 2. 输入一个华氏温度,要求输出摄氏温度。公式为:c=5(f-32)/9。

3. 编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。

? 应用篇

㈠.填空题

1.以下程序的输出结果是_3.140000,3.142________。 main( )

{ printf(\}

2. 以下程序的输出结果是__ c:dec=120,oct=15,hex=78,ASCII=x _______。 main()

{ char c='x';

printf(\}

3. 已有定义int d=-2;执行以下语句后的输出结果是________。 printf(\

d(1)=-2 d(2)= -2 d(3)=12

4. 已有定义int d=-2;执行以下语句后的输出结果是________。 printf(\printf(\

5. 已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是________。 printf(\printf(\6. 若x为单精度型变量,y为字符型变量,z为整型变量,执行如下的输入语句:scanf(\

后,从键盘输入12.77A79A86。此时,变量x、y、z的值分别是__12.77_____、____ A ____、____79______。 7. 以下程序的运行结果是 。 #include void main( ) { char s[50];

printf(\ gets(s); puts(s); }

Enter a string:string<回车>

string

8. 以下程序的运行结果是________。 #include void main( )

第 8 页 共 64 页

《程序设计基础(C)》习题指导书

{ char c='p';

printf(\ printf(\}

112,p 97,a

9. 以下程序的运行结果是________。 #include void main( )

{ float a=3.12345;

printf(\}

3.12,3.12e0

10.以下程序的运行结果是___221_____。 #include main( )

{ int m=177;

printf(\}

㈡.选择题

1.执行以下程序段int a=1,b=2,c;c=a/b后,c的值是( )。 A.0 B.1/2 C.0.5 D.1 2.以下不符合C语法的赋值语句是( )。

A.m=(2+1,m+1); B.m=n=0; C.m=1,n=2 D.a=b=c=5; 3.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是( )。 A.int a=b=c=5; B.int a,b,c=5; C.a=5,b=5,c=5; D.a=b=c=5;

4.已知ch是字符型变量,下面不正确的赋值语句是( )。 A.ch=’a+b’; B.ch=’\\0’; C.ch=’7’+’9’; D.ch=5+9;

5.已知ch是字符型变量,下面正确的赋值语句是( )。 A.ch=’123’; B.ch=’\\xff’; C.ch=’\\08’; D.ch=”\\”; 6.以下程序的运行结果是( )。 #include main( )

{ int m=5,n=10;

printf(\}

A.5,9 B.6,9 C.5,10 D.6,10 7.设有以下程序:

程序执行后的输出结果是( )。 #include main( ) {

第 9 页 共 64 页

《程序设计基础(C)》习题指导书

int a=201,b=012;

printf(\}

A.01,12 B.201,10 C.01,10 D.20,01

8.有定义语句int a,b;若要通过语句scanf(\使变量a得到数值6,变量b得到数值5,下面输入形式中错误的是(C)。(注:*代表空格)

A.6,5<回车> B.6,**5<回车> C. 6 5<回车> D.6,<回车> 5,<回车> 9.设有如下程序: #include main()

{ char ch1='A',ch2='a'; printf(\}

则以下叙述中正确的是( )。

A.程序的输出结果为大写字母A B.程序的输出结果为小写字母a

C.运行时产生错误信息 D.格式说明符的个数少于输出项的个数,编译出错 10.以下程序的运行结果是( )。 include main( ) {

int x1=0xabc,x2=0xdef; x2-=x1;

printf(\}

A. ABC B.0Xabc C. 0X333 D.333 ㈢.判断题

1.C语言标准输入操作中,getchar()函数一次只可读取一个字符。( ) ? 2.C语言标准输入操作中,putchar()函数可以输出显示一个字符串。( )? 3.C语言标准格式输入函数scanf()的参数表中要使用变量的地址值。( )? 4.C语言标准格式输出函数printf()的参数表是由若干个表达式组成。( )? 5.标准格式输入函数scanf()可以从键盘接收不同数据类型的数据项。( )? 6.任何表达式语句都是表达式加分号组成的。( )? 7.表达式语句和表达式没什么区别。( )?

8.分号是C语言中语句的结束符,不可用作分隔符。( )? 9.空格符可用作分隔符,水平制表符不能用?作分隔符。( )

10.C语言本身不提供输入输出语句,输入输出操作是由函数来实现的。( )? ㈣.程序设计题

1.编写程序,输入两个整数1500和350,求出它们的商和余数并进行输出。

2.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

3. 编程实现用getchar函数从键盘输入一个小写字母,并用putchar函数输出对应的大写字母。

? 提高篇

㈠.填空题

第 10 页 共 64 页

《程序设计基础(C)》习题指导书

1.已有定义int x,float y;且执行scanf(\语句,若从第一列开始输入数据12345*678<回

车>,则x的值为__123___,y的值为___45_____。 2. 执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1=’A’、c2=’a’,

正确的输入数据形式为_ a=3 b=7 回车_ x=8.5 y=71.82 回车c1=A c2=a回车 __________。 main( )

{ int a,b;float x,y;char c1,c2; scanf(\scanf(\scanf(\

printf(\}

3. 若有以下定义和语句,为使变量c1得到字符’A’,变量c2得到字符’B’,正确的输入形式是

____A B 回车_________。 char c1,c2;

scanf(\

4. 假设变量a、b和c均是整数,以下语句借助中间变量把a、b和c中的值进行交换,即:把b中的值给

a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30,交换后,a=20、b=30、c=10。请填空。_m=a_____;a=b;b=c;_c=m____ ;

5. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。a+=__b___ ;

b=a-____b__; a-=____b__;

6. 已知字母A的ASCII码值为65。以下程序的输出结果是__ a=66,b=E ______。 #include main( ) { char a,b;

a='A'+'4'-'3'; b='A'+'6'-'2';

printf(\}

7. 若要求下列程序的输出结果为8.0,请填空 。 #include main( )

{ int k=2,m=5;

float s,x=1.2,y=___3.6_ ; s=2/3+k*y/x+m/2; printf(\}

8. 以下程序的运行结果是_____20___。 #include main( ) { int n=0; n+=(n=10);

printf(\}

9.有以下程序:

#include main( )

第 11 页 共 64 页

《程序设计基础(C)》习题指导书

{ int k=0;char c1='a',c2='b';

scanf(\ printf(%d,%c,%c\\n\}

若运行时从键盘输入:55 A B<回车>,则输出的结果是__55,A,B______。 10.以下程序输出的结果是_________。 main( )

{ int x=1,y=2;

printf(\ printf(\}

x=1 y=2 sum=3

10 Squared is :100 ㈡.选择题

1.以下程序的输出结果是( )。(注:*代表空格) main( )

{ printf(\ printf(\}

A.-s1=chinabeijing***- B.-s1=chinabeijing***- -s2=--chi- -s2=chi**-

C.-s1=-**chinabeijing- D.-s1=***chinabeijing- -s2=**chi- -s2=chi**-

2.已有定义int a=-2;和输出语句:printf(\以下正确的叙述是( )。 A.整型变量的输出格式符只有%d一种

B.%x是格式符的一种,它可以适用于任何一种类型的数据

C.%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 3.以下程序的运行结果是( )。 main( )

{ long y=-43456;

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

A.y=***-43456 B.y=-43456 y=-**43456 y=-43456 y=-0043456 y=-0043456 y=-43456 y=+*-43456 C.y=-43456 D.y=**-43456 y=-43456 y=-0043456 y=-0043456 y=00043456 y=**-43456 y=+43456

4.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(第 12 页 共 64 页

)《程序设计基础(C)》习题指导书

A.scanf(\

B.scanf(\C.scanf(\D.scanf(\

5.根据以下定义语句和数据的输入方式,scanf语句的正确形式应为( )。 已有定义:float f1,f2; 数据的输入方式:4.52<回车>

3.5<回车>

A.scanf(\ B.scanf(\

C.scanf(\

6.阅读以下程序,当输入数据的形式为25,13,10<回车>,程序的输出结果为( )。 main( )

{ int x,y,z;

scanf(\ printf(\}

A.x=y=z=48 B.x=y=z=35 C.x=z=35 D.不确定的值 7.设有以下程序 #include main( )

{ char c1,c2,c3,c4,c5,c6;

scanf(\ c5=getchar(); c6=getchar(); putchar(c1); putchar(c2);

printf(\}

若运行时从键盘输入数据:abc<回车>,defg<回车>,则输出结果是( )。 A.abcd B.abde C.abef D.abfg

8.有输入语句:scanf(\为使 a的值为1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是( )。

A.132<回车> B.1,3,2<回车> C.a=1*b=3*c=2 <回车> D.a=1,b=3,c=2<回车> 9.若有以下定义,则正确的赋值语句是( )。 int a,b; float x;

A.a=1,b=2, B.b++; C.a=b=5 D.b=int(x);

10.设x、y均是float型变量,则以下不合法的赋值语句是( )。 A.++x B.y=(x%2)/10; C.x*=y+8; D.x=y=0; ㈢.程序设计题

1.编写程序:输入一个字符,输出该字符的前驱字符和后继字符,并按ASCII码值从大到小顺序输出这3个字符及其对应的ASCII码值。

2.输入三角形的三边长,求三角形的面积。

3. 下面程序的功能是读入直角三角形两直角边的长度,输出斜边长度。请将程序补充完整。 #include

main( ) { int x,y; double z=sqrt(a*a+b*b); printf(“斜边长度为:%lf\\n”,z);}

第 13 页 共 64 页

《程序设计基础(C)》习题指导书

第三章 选择结构程序设计

一.知识点

1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意&&、||的运算规则。

2.三种if语句。

3.选择结构的嵌套,注意if与else的配对。 4.条件运算符:?与 :

5.switch语句,注意其执行过程。 6.选择结构程序设计思想。

二.习题 ? 基础篇

㈠.填空题

1.C语言中用 非0 表示逻辑值“真”,用 0 表示逻辑值“假”。

2.C语言中的关系运算符按优先级别是 、 、 、 、 、 。 答案:>、<、>=、<=、==、!=

3.C语言中的逻辑运算符按优先级别是 、 、 。 答案:!、&&、||

4.C语言中的关系运算符和逻辑运算符的优先级别是 、 、 、 、 、 、 、 、 。

!、>、<、>=、<=、==、!=、&&、||

5.C语言中逻辑运算符的 ! 优先级高于算术运算符。 6.将下列数学式改写成C语言的关系表达式或逻辑表达式:

a=b或a4 x>4||x<-4 7.下列程序的输出结果 1 。

main()

{ int a=100;

if(a>100) printf(“%d\\n”,a>100); else printf(“%d\\n”,a<=100);} 8.若已知a=10、b=15、c=1、d=2、e=0,请分别给出下列表达式的运算结果:

⑴ a*b && c 1 ⑵ a+b>10 || a+b<0 1 ⑶ e 0 ⑷ c==b>e 1 ⑸ !a⑽ (b==10) && (a==10) 0 ⑾ !0 || d && a==c+d 1 ⑿ (a+c==b)==(b+d==a) || (c=b+a)>(d=c+b) 1

9.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 1 、c= 1 。

if(a>c);b=a;a=c;c=b;

10.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 2 、c= 2 。

if(a>c)b=a;a=c;c=b;

11.当a=1、b=2、c=3时,执行以下if语句后,a= 1 、b= 2 、c= 2 。

if(a>c)b=a,a=c;c=b;

12.将以下两条if语句合并为一条if语句:

if(a>b) scanf(“%d”,&x);else scanf(“%d”,&y); if(a<=b) i++;else j++; 答案:if(a>b) {scanf(“%d”,&x);j++;}

第 14 页 共 64 页

《程序设计基础(C)》习题指导书

else {scanf(“%d”,&y);i++;}

13.将以下嵌套的if语句改写成不嵌套的if语句:

if(w<0) k=0;else if(w<=100) k=1; else k=0; 答案:if(w>=0&&w<=100)k=1; else k=0;

14.以下程序判断输入的一个整数是否能被3或7整除,若能整除,输出“YES”,若不能整除,输出“NO”。请填空:

#include main() { int k; printf(“Enter a int number:”);scanf(“%d”,&k); if( k%3==0||k%7==0 )printf(“YES\\n”);else printf(“NO\\n”);} 15.在switch语句中,当执行到break语句时,使流程跳出开关语句 。 16. C语言提供三种关系运算符,按优先级高低它们分别是:> < == >= <= !=等。

17.C语言提供三种逻辑运算符,按优先级高低它们分别是____!__、_&&____、 _||____ 。 18.设a=1,b=6,c=2,表达式 a+b>c && b==c运算后的值为____0___。

19.写出命题 “-6-6&&a<-3)||(a>2&&a<=5)_____ 。

20.条件“y能被4整除但不能被100整除,或y能被400整除”的逻辑表达式是 (y%4==0&&y0!=0)||(y@0==0) 。

21.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式是 (x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0) 。

22.若有x=1,y=2,z=3,则表达式(x

a = (x--==y++) ? x-- : y++ ; b = x++ ; c = y ;

24.若有条件“22&&x<3)||x<-10 。 25.将以下两条if语句合并为一条if语句为

if(a>b){scanf( “ %d”,&a); n++;}else{ scanf( “ %d”,&b); m++;}。 语句1: if(a>b)scanf( “ %d”,&a); else scanf( “ %d”,&b); 语句2: if(a<=b)m++; else n++; ㈡.选择题

1.若给定条件表达式(M)?(a++):(a--),则和表达式M等价的表达式为( )。 A.M==0 B.M==1 C.M!=0 D.M!=1 2.为表示关系x≥y≥z,应使用的C语言表达式是( )。

A.(x>=y) && (y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 3.以下程序的输出结果是( C )。

A.0 B.1 C.2 D.3 main()

{ int a=2,b=-1,c=2; if(a

if(b<0) c=0; else c+=1; printf(“%d\\n”,c); } 4.以下程序的输出结果是( )。

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

第 15 页 共 64 页

《程序设计基础(C)》习题指导书

A. -1 1 B. 0 1 C. 1 0 D. 0 0

main( )

{ int a= -1,b=1,k;

if((++a<0)&& ! (b-- <=0)) printf(\,a,b); else printf(\,b,a);

10.若有以下定义:

float x;int a,b;

则正确的switch 语句是( )。

A.switch(x) B.switch(x)

{ case1.0:printf(\ case2.0:printf(\ } }

C.switch (a+b) D.switch (a+b);

{ case 1: printf(\{ case 1: printf(.\ case 1+2: printf(\} } ㈢.判断题

1.if语句中的表达式不限于逻辑表达式,可以是任意的数值类型。( ) ? 2.switch语句可以用if语句完全代替。( ) ?

3.switch语句的case表达式必须是常量表达式。( ) ?

4.switch语句的各个case和default的出现次序不影响执行结果。( ) ? 5.在switch的default语句后面是可以不用写break语句的。( )? ㈣.程序设计题

1. 编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。 2.用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

3.输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4==0 && year0!=0 || year@0==0。若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。

4.编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。

5.某单位的奖金税率如下(a代表奖金,r代表税率): 奖金数目范围 税率r

a<500 0%

500<=a<1000 5%

1000<=a<2000 8%

2000<=a<3000 10%

3000<=a 15%

请编写程序实现从键盘输入奖金额以后自动计算应缴税金和实得奖金。

? 提高篇

㈠.填空题

1.设a=3,b=454,c=0,表达式 !(a+b) + c –1 && b + c/2运算后的值为________1____。

第 21 页 共 64 页

《程序设计基础(C)》习题指导书

2.设a=3,b=5,c=0表达式 !((c<3)&&(b>1))&&!( (a+b)<5&&(b>3)) ||2+b 运算后的值为_______1_____。

3.已知A=7.5,B=2,C=3.6,表达式A>B && C>A || AB的值是 0 。

4.若有以下程序段,当city的值为 ‘S’,则输出结果为_Shanghai Guang Xi’an__________。 switch(city)

{ case ‘B’: printf( “Beijing”);break; case ‘S’: printf( “Shanghai”); case ‘G’: printf( “Guang”);

case ‘X’: printf( “Xi/’an”); break; default: printf( “error”); }

5.以下程序的功能是判断输入的某个年份是否为润年。请填空补齐程序。 main() { int y,f;

scanf( “%d”,&y); if(y@0==0)f=1;

else if(_y0!=0&&y%4==0______) f=1; else __f=0_____;

if(f) printf(“%d is a leap year .\\n”,y); else printf(“%d is not a leap year .\\n”,y); }

6.将以下含有switch语句的程序段改写成对应的if形式的语句应该为 。 int x,y,m; y=(int)(x/10) switch(y)

{ case 10: m=4;break; case 9: m=3;break; case 8: m=2;break; case 7: m=1;break; default : m=0; }

if(y==10) m=4; else if(y==9)m=3; else if(y==8)m=2; else if(y==7)m=1; else m=0;

7.若a、b、c均已正确定义且a=0,b=2,c=3,则以下程序段的输出是___%*_____。 switch(a) { case 0: switch(b)

{ case 1: printf( “&\\n”);break; case 2: printf( “%%\\n”);break;

} case 1: switch(b)

{ case 1: printf( “$\\n”);break; case 2: printf( “*\\n”);break;

第 22 页 共 64 页

《程序设计基础(C)》习题指导书

default : printf( “#”);

} }

8.请读程序:

#include main( )

{ int x=1, y=0,a=0,b=0; switch(x) {case 1: switch(y)

{ case 0:a++;break; case 1:b++;break; } case 2:

a++; b++; break; }

prinf(“a=%d,b=%d”,a,b); }

上面程序的运行结果是_a=2,b=1________ 。

10.以下程序输出x,y,z三个数中的最小值,请填空使程序完整。 main ( )

{ int x=4,y=5,z=8 ; int u,v;

u = x

v = u

㈡.选择题

1.如果int a=1,b=2,c=3,d=4;则条件表达式\的值是( )。 A. 1 B. 2 C. 3 D. 4

2.为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( )。 A. c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B. !(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C. c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D. !(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 3.为表示关系x≥y≥z,应使用C语言表达式 ( )。

A. (x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 4.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( )。 A.abs(x-y)<10 B..x-y>-10&& x-y<10 C. @(x-y)<-10||!(y-x)>10 D. (x-y)*(x-y)<100 5.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( )。

A. if((a>B) &&(b>C) ) k=1; B. if((a>B) ||(b>C) ) k=1 ; else k=0; C. if(a<=B) k=0; D.if(a>B) k=1;

else if(b<=C) k=1; else if(b>C) k=1; else k=0;

第 23 页 共 64 页

《程序设计基础(C)》习题指导书

6. 有以下程序:

main( )

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf(\程序运行后的输出结果是( )。

A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3 7.有以下程序: main( )

{ int a=3,b=4,c=5,d=2; if(a>b)

if(b>c) printf(\ else

printf(\ printf(\

程序运行后的输出结果是( )。

A. 2 B. 3 C. 43 D. 44

8.当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为( )。 if(a

if(c

if(b

else x=3; else x=6;

else x=7;

A. 1 B. 2 C. 3 D. 6 9.请读程序:

#include main( )

{ int x=1, y=0, a=0, b=0; switch(x) { case 1: switch(y)

{ case 0: a++;break; case 1: b++;break; } case 2:

a++; b++; break; }

printf(\}

上面程序的输出结果是( )。

A. a=2, b=1 B. a=1, b=1 C.a=1, b=0 10. 输入A,以下程序的运行结果是( )。 #include

第 24 页 共 64 页

D. a=2, b=2 《程序设计基础(C)》习题指导书

void main( )

{ char ch;

ch=getchar( ); switch(ch)

{case 65: printf(“%c”,’A’); case 66: printf(“%c” 66);

default : printf(“%s\\n”, “other”);

} }

A.A B.ABother C.Aother D.编译错误,无法运行 ㈢.判断题

1.if语句,switch语句可以嵌套,而且嵌套的层数没有限制( )。? 3.多个case可以执行相同的程序段( )。?

4.内层break语句可以终止嵌套的switch,使最外层的switch结束( )。? 5.switch语句的case分支可以使用{ }复合语句,多个语句序列( )。? ㈣.程序设计题

1.编程实现:输入一个整数,判断输入的整数是是否分别被3、5、7整除,并输出一下信息: ⑴能同时被3、5、7整除;

⑵能被其中两个整除,并指出是哪两个; ⑶能被其中一个整除,并指出是哪个; ⑷不能被任何一个整除。

2.设计程序实现:从键盘输入年月信息后,程序自动计算所输入年月中当月的天数并输出。 3.编写程序实现功能:根据下表中的函数关系,对输入的每个x值,计算出相应的y值并输出。

x x<0 0< x <=10 10< x <=20 20< x <=40 40< x y 0 x 10 -0.5x+20 x/10+3 4.通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母、转义字符、其它字符等六类,并给出相应的信息说明。

5.编写一个程序根据用户输入的三角形的三边判定三角形的类型并求其面积(设三角形的三变为a、b、c ,是否能组成三角形的条件:a+b>c&&a+c>b&&b+c>a ;如果组成三角形 ,判断是什么类型三角形? 等边三角形、等腰三角形、直角三角形 一般三角形,最后计算机三角形面积)。

第四章 循环结构程序设计

一.知识点

1.循环的概念,C实现循环的方法; 2.goto语句,注意标号的书写;

3.while语句,注意条件表达式的设计;

4.do??while语句,注意条件表达式的设计,及while之后的分号; 5.for语句,注意for中三个表达式的一般含义; 6.循环的嵌套;

第 25 页 共 64 页

《程序设计基础(C)》习题指导书

7.break与continue语句,注意二者之间的区别;

8.循环结构程序设计思想。

二.习题 ? 基础篇

㈠.填空题

1.已知int i;执行语句while(i++<4);后变量i的值为 不确定 。 2.下面的for循环语句最多可执行 4 次。

for(x=0,y=0;(y!=99)&&(x<4);x++)

3.循环语句for(i=0;i<5;i++)printf(\,9-i)的执行结果是 98765 。

4.以下循环体中对循环变量i的值不改变,要使循环重复5次,则for语句的格式为: for(i=0;i<10; i=i+2 ){? ?} 5.有如下循环,则循环次数是 无限次 。 t=1; while(t=1)t=0;

6.以下程序段的输出结果y=7,x=21 。

x=y=0;while(x<20)y++,x+=3; printf(“y=%d,x=%d\\n”,y,x);

7.当执行以下程序段后,i的值是 5 、j的值是 4 、k的值是 6 。

int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0; for( ;a>b;++b)i++; while(a>++c) j++; do k++;while(a>d++);

8.以下程序段的输出结果 16 。

int k,m,n;n=10;m=1;k=1; while((k+=2)<=n) m*=2; printf(“%d\\n”,m); 9.以下程序的输出结果为 -1 。

main()

{ int x=2;while(x--);printf(“%d\\n”,x);} 10.以下程序段的输出结果 11 。

int i=0,sum=1;do{ sum+=i++;}while(i<5);printf(“%d\\n”,sum); 11.下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。

#include \ main( )

{ int i,a[20],s,count; s=count=0;

for(i=0;i<20;i++)

scanf(\; for(i=0;i<20;i++) { if(a[i]

continue ; s十=a[i]; count++: }

printf(\%d\t countt=%d\n\}

12.下面程序的运行结果是 s=254 。

#include

第 26 页 共 64 页

《程序设计基础(C)》习题指导书

main( )

{int a,s,n,count;

a=2; s=O; n=1;count=1;

whiIe(count<=7) { n=n*a; s=s+n; ++count; printf(\

}

13.等差数列的第一项n=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。

#include main( )

{int a,d,sum;

a=2;d=3;sum=0; do {sum+=a; a+=d;

if( sum%4==0 )printf(\ }while(sum<200); }

14.当运行以下程序时,从键盘输入1 2 3 4 5 -1(表示回车),则下面程序的运行结果是 k=15 n=-1 。

#indude main()

{int k=O,n;

do{scanf(\%d\;k+=n;}while(n!=-1); printf(\,k,n); }

15.下面程序段是找出一个整数的所有因子,请填空。

scanf\,&x); i=1;

for(;i<=x ;)

{if(x%i==0)printf(\; i++; } ㈡.选择题

1.以下程序段的输出结果是( )。

A.9 B.1 C.11 D.10 int k,j,s;

for(k=2;k<6;k++,k++){ s=1;for(j=k;j<6;j++) s+=j;} printf(“%d”,s);

2.以下程序段的输出结果是( )。

A.12 B.15 C.20 D.25 int i,j,m=0;

for(i=1;i<=15;i+=4)

for(j=3;j<=19;j+=4〉m++; printf(“%d\\n”,m);

3.以下程序段的输出结果是( )。

A.10 B.9 C.10 D.9

第 27 页 共 64 页

《程序设计基础(C)》习题指导书

9 8 9 8

8 7 8 7 7 6

int n=10;while(n>7){ n--;printf(“%d\\n”,n);} 4.以下程序段的输出结果是( )。

A.1 B.3 0 C.1 -2 D.死循环 int x=3;do { printf(“=”,x-=2);}while(!(--x)); 5.以下程序的输出结果是( )。

A.15 B.14 C.不确定 D.0 main()

{ int i,sum;for(i=1;i<6;i++)sum+=sum;printf(“%d\\n”,sum);} 6.C语言中有关循环描述正确的是( )。

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须使用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-whilc语句构成的循环,当while语句中的表达式值为零时结束循环 7.以下描述正确的是( )。

A.continue语句的作用是结束整个循环的执行

B.在循环体内和switch语句体内都可以使用break语句 C. 在循环体内使用break语句和continue 语句的作用相同 D. 从多重循环嵌套中退出时,只能使用goto语句 8.与while(e);等价的for循环语句为( )。

A. for(e=0;e==0;); B. for(;e;); C. for(e;;) D. for(;;e++); 9.while(ch=getchar( ));执行的次数是( )。

A.0 B.有限次 C.由循环体的内容决定 D.死循环 10.以下程序的执行结果为( )。

main( ) {

int i,j;

for(i=1;i<100;i++)

if(i==0) printf(“%d \\t”,i); }

A.100 B.1 2 3 4 5 6 7 8 9 10 C.10 20 30 40 50 60 70 80 90 D.1 2 3 4 ?? 98 99 11.下面有关for循环的正确描述是( )。

A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 12.以下程序段,则该循环是一个( )。

x=-1;

do{x=x*x;}while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 13.以下描述中正确的是( )。

A.由于do-while循环中循环体语句只能是一条可执行语旬,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束.在while(表达式)后面不能写分号

第 28 页 共 64 页

《程序设计基础(C)》习题指导书

C.在do-while循环体中,一定要有能使while后面表达式的直值为零(”假”)的操作

D.do-while循环中,根据情况可以省略while

14.执行语句for(i=1;i++<4;);后变量i的值是( )。

A.3 B.4 C.5 D.不确定 15.若i为整型变量,则以下循环执行次数是( )。

for(i=2:i==0;) printf(“%d\\n”,i--);

A.无限次 B.0次 C.1次 D.2次 16.语句while(!E);中的表达式E等价于( )。

A.E==O B.E!=1 C.E!=0 D. E==l 17.设有程序段:

int k=10;C语言中while和do while循环的主要区别是( )。 A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do一while的循环体不能是复合语句

18.while(k=0) k=k-l;则下面描述中正确的是( )。

A.while循环执行10次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 ㈢.程序设计题

1.编写程序,求1-3+5-7+?-99+101的值。 2.求1+2+3+?+100的值。

3.把100~200之间的不能被3整除的数输出。 4. 输入10整数,计算它的平均值。

5. 编程打印2000至3000年所有的闰年。

-5

6. 编程计算1/2+1/4+1/8+1/16+??的近似值(要求进度为10)。

7. 有个数.被3陈余2,被5除3,被7除余2,问满足该条件的数至少是多少。 8. 连续输入n个整数,要求找出其中的最大数和最小数。

9. 编写程序,输出用一元人民币兑换成1分,2分和5分硬币的不同兑换方法。

? 应用篇

㈠.填空题

1.有以下程序段:

s=1.0;for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf(“%f\\n”,s); 要使下面的程序段的功能与上面程序段的功能相同,请填空: s=0.0;k=0; d=1 ;

do{ s=s+d; k=k+1 ;d=1.0/(k*(k+1));}while( k<=n ); printf(“%f\\n”,s);

2.下列程序段中,for循环的循环次数为 0 。

a=2;b=10;for(i=b;i<=a;i--,a++) printf(“=”,i);

3.鸡兔共有30只.脚共有80个,下面程序段是计算鸡免各有多少只,请填空,

for(x=1;x<=29;x++) {y=30-x;

if( 2*x+4*y==80 )printf(\ }

4.下面程序的运行结果是 。

#include

第 29 页 共 64 页

《程序设计基础(C)》习题指导书

main( )

{ int i;

for(i=1;i<=5;i++) switch(i%2)

{ case 0:i++;printf(\;break; case 1:i+=2;printf(\; default:printf(\\n\

} } 答案: * #

5.下面程序的运行结果是 1,-2 。

#include main( )

{ int y,a; y=2;a=1; while(y--!=-1)

{ do(a*=y; a++; }while(y--);} printf(\,%d\,a,y); }

6.下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空。

#include main( )

{int i,j;

for(i=0; i<10 ;i++) {j=i*10+6;

if( j%3==0 )continue; printf(\; } ㈡.选择题

1.以下程序的输出结果是( )。

A.741 B.852 C.963 D.875421 main(){ int y=10;

for( ;y>0;y--)if(y%3==0){ printf(“%d”,--y);continue;} } 2.以下叙述正确的是( )。

A.do_while语句构成的循环不能用其它语句构成的循环来代替。 B.do_while语句构成的循环只能用break语句退出。

C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 3.以下程序的输出结果是( )。

A.39 81 B.42 84 C.26 68 D.28 70 main() { int x,i;

for(i=1;i<=100;i++)

{ x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(“%d ”,x);}

第 30 页 共 64 页

《程序设计基础(C)》习题指导书

printf(“\\n”); }

4.对下面程序段描述正确的是( )。

A.while循环执行了10次 B.循环是无限循环

C.循环体语句一次也不执行 D.循环体语句只执行一次 int x=10;while(x=0)x=x-1; 5.以下关于for循环的正确描述是( )。 A.for循环只能用于循环次数已确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 6. 若有以下语句:

int x=3; do{

printf(\)while(!(--x));

则以上程序输出结果是( )。

A.输出的是1 B.输出的是1和-2 C.输出的是3和0 D.是死循环 7.下列循环语句中有语法错误的是( )。

A. while(x==y)5; B. while(0);

C. do{ 2;}while(x==11); D. do{ x++}while(x==1O);

8.已知char ch;执行语句\时输入:abcde<回车>后, 变量ch的值是( )。

A. ch='e' B. ch='\\n' C.ch='0' D. ch=NULL 9.下面程序的运行结果是( )。

#include main( )

{int y=10;

do{y--;}while(--y); printf(\\n\; }

A.-l B.l C.8 D.0 ㈢.程序设计题

1.求Fibonacci数列前40个数。 2.打印1000以内的所有素数。

3.利用辗转相除法计算输入的两个数m,n的最大公约数。 4.输入一个数n,输出这个数的所有因子。 5.编程打印如下图形(行数n由键盘输入): * * * * * *

* * * *

6.利用近似公式e≈1/1!+1/1!+??+l/n!,计算自然对数的底e的近似值(n从键盘输入,n<10)。

7.编写程序求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=l+2+3,6为完全数。

8.每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过l00的最大值。编写程序,求每天平均花多少钱?

第 31 页 共 64 页

《程序设计基础(C)》习题指导书

? 提高篇

㈠.填空题

1.以下程序段的输出结果 8*6*4*2*0回车8*6*4*2*0 。

for(i=0;i<3;i++,i++) { for(j=10;j>0;j--) { if((j+i)%2){ j--;printf(“*%d ”,j);continue;} --j;--j;printf(“%d ”,j);} printf(“\\n”);}

2.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空:

main()

{ float x,amax,amin; scanf(“%f”,&x);amax=x;amin=x; while( x>0 )

{ if(x>amax)amax=x; if( x

3.以下程序段的输出结果 。

a=10;y=0;

do { a+=2;y+=a; printf(“a=%d,y=%d\\n”,a,y); if(y>50)break;}while(a=14); 答案: a=2,y=12 a=16,y=28 a=16,y=44 a=16,y=60 ㈡.选择题

1.阅读程序.写出程序的输出结果( )。

#include main() {

char i,j:

for(i='0',j='9';i

A. 01234567890 B. 0918273645 C.9876543210 D. 以上三个答案均不对

2222

2.求取满足式l十2十3十······十n≤1000的n.正确的语句是( )。 A. for(i=1,s=0;(s=s+i*i)<=l000;n=i++) B.for(i=1,s=0;(s=s+i*i)<=l000;n=++i) C.for(i=1,s=0;(s+++i*i)<=l000;n=i) D.for(i=1,s=0;(s=s+i*i++)<=l000;n=i) 3.下列程序段中是死循环的是( )。

A.int n=1;while(!n)n++; B.int n=1;do { n--;}while(n);

第 32 页 共 64 页

《程序设计基础(C)》习题指导书

C.int n=1;do { n++;}while(n); D.for(n=5;n<1;);

4.以下能正确计算1╳2╳3╳?╳10的程序段是( )。 A.do { k=1;n=1;n=n*k;k++;}while(k<=10); B.do { k=1;n=0;n=n*k;k++;}while(k<=10); C.k=1;n=1;do { n=n*k;k++;}while(k<=10); D.k=1;n=0;do { n=n*k;k++;}while(k<=10); 5.若x是int型变量,以下程序段的输出结果是( )。 A.**3 B.##3 C.##3 D.**3##4 ##4 **4 **4##5 **5 **5 ##5

for(x=3;x<6;x++)printf((x%2)?(“**%d”) :(“##%d\\n”),x); 6.以下程序的输出结果是( )。

A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ main() { int i;

for(i=1;i<=5;i++) { if(i%2)printf(“*”);else continue; printf(“#”);} printf(“$\\n”); } ㈢.程序设计题

1.设100以内能被3整除的所有数之和为s1,能被4整除的数为s2,判断s1和s2的大小。

2.试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。

2xsin(x)3.使用梯形法计算?0edx的值。

4.利用二分法计算x3+x*sin(x)-2=0在区间(0,2)的近似解。 5.编写程序求解下式中各字母所代表的数字。

P E A R - A R A P E A

第五章 数组及其应用

一.知识点

1.数组的概念与定义; 2.数组的初始化; 3.数组元素的引用;

4.字符数组的定义、使用、字符串处理函数; 5.数组数据的一般处理方式。

二.习题 ? 基础篇

㈠.填空题

1.若有定义:double w[10];则w数组元素下标的上限是 9 ,下限是 0 。 2.以下程序的输出结果是 12 。

main()

{ int arr[10],i,k=0;

第 33 页 共 64 页

《程序设计基础(C)》习题指导书

for(i=0;i<10;i++) arr[i]=i;

for(i=0;i<4;i++) k+=arr[i]+i; printf(“%d\\n”,k); }

3.以下程序的输出结果是 -850,2,0 。

main()

{ int i,j,row,col,m;

int arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=arr[0][0];

for(i=0;i<3;i++)

for(j=0;j<3;j++) if(arr[i][j]

4.在C语言中,二维数组元素在内存中的存放顺序是 先行后列 。

5.若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 i*m+j+1 。 6.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6 。

7.若有说明char s[20];如果想从键盘上把字符串“This is a book.”输入到数组s中,应当调用的函数是 gets() ;函数调用语句的形式是 gets(s); 。

8.若有char str1[20]={“a good”},str2[ ]={“ student”};能把str2中的字符串接到str1中的字符串后面的函数调用语句是 strcat(str1,str2); 。

9.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值为______ 0_____。 10.若有定义int a[2][5],则整型数组a包含有 _____10 _____个元素。

11.若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是____ 3____。 12.若二维数组a有m列,则在a[i][j]前的元素个数为____ _i*m+j_____。 14.下面程序段的运行结果是 ab 。 char c[5]={'a','b','\\0','c','\\0'}; printf(\

15.下面程序段的运行结果是 C 。 char a[7]=\ char b[4]=\ strcpy(a,b);

printf (\

16.判断字符串s1是否大于字符串s2应当使用语句 if(strcmp(s1,s2)>0) 。 ㈡.选择题

1.以下程序的输出结果是( )。

A.不确定的值 B.3 C.2 D.1 main()

{ int n[2]={0},i,j,k=2; for(i=0;i

for(j=0;j

2.以下对一维数组a的正确说明是( )。 A.char a(10); B.int a[ ];

C.int k=5,a[k]; D.char a[ ]={‘a’,‘b’,‘c’}; 3.若有说明语句:int a[2][4];则对a数组元素的正确引用是( )。

A.a[0][3] B.a[0][4] C.a[2][2] D.a[2][2+1] 4.以下能对二维数组y进行正确初始化的语句是( )。

第 34 页 共 64 页

《程序设计基础(C)》习题指导书

A.int y[2][ ]={{ 1,0,1 },{ 5,2,3 }};

B.int y[ ][3]={{1,2,3},{4,5,6}}; C.int y[2][4]={1,2,3},{4,5},{6};

D.int y[ ][3]={{1,0,1,0},{ },{1,1}};

5.若有说明语句:int y[ ][4]={0,0};则下面不正确的叙述是( )。 A.数组y的每个元素都可以得到初值0;

B.二维数组y的行数为1; C.该说明等价于int y[ ][4]={0}; D.只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0;

6.若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8};则a数组的行数为( )。 A.3 B.2 C.无确定值 D.1 7.若有以下语句,则正确的描述是( )。 char x[ ]=“12345”;char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’}; A.x数组与y数组的长度相同 B.x数组长度大于y数组长度 C.x数组长度小于y数组长度 D.x数组等价于y数组 8.下面程序段的运行结果是( )。

A.‘a’‘b’ B.ab C.ab c D.abc char c[5]={‘a’,‘b’,‘\\0’,‘c’,‘\\0’};printf(“%s”,x); 9.有两个字符数组a、b,则以下能正确为a、b进行赋值的语句是( )。

A.gets(a,b); B.scanf(“%s%s”,&a,&b); C.getchar(a);getchar(b); D.gets(a);gets(b);

10.有字符数组s1[80]和s2[80],则以下能正确对s1、s2进行输出的语句是( )。

A.puts(s1,s2); B.printf(“%s,%s\\n”,s1,s2); C.putchar(s1,s2); D.puts(s1),puts(s2); 11.下面描述正确的是( )。

A.两个字符串所包含的字符个数相同时,才能比较字符串; B.字符个数多的字符串比字符个数少的字符串大

C.字符串“STOP ”与“STOP”相等 D.字符串“That”小于字符串“The” 12.以下对字符数组的描述中错误的是( )。

A.字符数组中可以存放字符串 B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 13.语句printf(“%d\\n”,strlen(“school”));的输出结果是( )。

A.7 B.6 C.存在语法错误 D.不定值

14.有语句char s1[10],s2[10]={“books”};则能将s2的值正确赋给s1的语句是( A.s1={“books”}; B.strcpy(s1,s2); C.s1=s2; D.strcpy(s2,s1);15.若有说明:int a[3][4]; 则对a数组元素的正确引用是( )。

A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1) 16.若有说明:int a[]「4]={0,0};则下面不正确的叙述是( )。

A.数组a的每个元素都可得到初值0 B.二维数组a的第一维大小为1 C.因为二维数组0中第二维大小的值除以初值个数的商为1,故数组a行数为1 D.只有元素a[0]「0」和a[0]「1」可得初值0,其余元素均得不到初值0 17.若有说明:int a[3]「4];则数组a各元素( )。

A.可在程序的运行阶段得到初值0 B.可在程序的编译阶段得到初值0 C.不能得到确定的初值 D.可在程序的编译或运行阶段得初值0 ㈢.判断题

1.数组的长度是固定的。( )?

第 35 页 共 64 页

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

Top