
1、在C语言程序中应包含一个 。
A)语句 B)函数调用 C)主函数D)子函数
2、C程序 构成。
A)由主程序和子程序 B)可以由一个主函数和若干其他函数
C)只能由一个函数即主函数D)可以由若干个主函数和其他函数
3、C语言基本类型包括( )
A) 整型、实型、逻辑型 B) 整型、实型、字符型、逻辑型
C) 整型、字符型、逻辑型D) 整型、实型、字符型
4、逻辑运算符两侧运算对象的数据类型 。
A) 只能是0和1 B) 只能是0或非0正数
C) 只能是整型或字符型数据 D) 可以是任何类型的数据
5、设有定义:log x=-123456L,则能够正确输出变量x值的语句是 。
A)printf("x=%8dL\n",x) B)printf("x=%8dL\n",x)
C)printf("x=%1d\n",x) D)printf("x=%LD",x)
6、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度小于5,则输出按下列哪种方式进行 。
A)从左起输出字符串 B)按原字符串长度从左到右输出
C)右对齐输出该字符串,左补空格 D)输出错误信息
7、语句while(!e)中的条件!e等价与 。
A)e==0 B)e!=1C)e!=0D)e==1
8、设有程序段
int k=10
while(k=0) k=k-1
则下面描述中正确的是。
A)while循环执行10次 B)循环是无限循环
C)循环体1次也不执行 D)循环体执行1次
9、初始化语句正确的是 。
A)int a[1][4]={1,2,3,4,5} B)float x[3][ ]={{1},{2},{3}}
C)long b[2][3]={{1},{2},{3}} D)double y[ ][3]={{1,2},{3},{4}}
10、若要求:如果字符串s1大于字符串s2,则执行语句1,应当使用 。
A)if(s1>s2) 语句1B)if(strcmp(s1,s2)) 语句1
C)if(strcmp(s2,s1)>0) 语句1 D)if(strcmp(s1,s2)>0) 语句1
11、已知:char str1[10],str2[10]= "Hello! ";则在程序中能够将字符串"Hello! "赋给数组str1的正确语句是 。
A)str1="Hello!" B)strcpy(str1,str2) C) str1=str2 D) strcpy(str2,str1)
12、若有说明:int *p ,m = 5 , n 以下正确的程序段是 。
A)p = &n scanf ("%d" ,&p) B) p = &n scanf ("%d" ,*p)
C) scanf ("%d" , &n) *p = nD) p = &n *p = m
13、下面程序段的运行结果是 。
char *s = "abcde"
s + = 2 printf ("%d" ,s)
A) cde B) 字符'c'C)字符'c'的地址 D)无确定的输出结果
14、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 。
A) c = *p1 + *p2 B)p2 = c C) p1 = p2D) c = *p1*(*p2)
15、若有以下定义,则对a数组元素地址的正确引用是 。
int a[5] , *p = a
A) p + 5 B) *a + 1 C) &a + 1 D) &a[0]
16、下列说法中错误的是 。
A) 主函数可以放在程序的任何地方。
B) 非主函数总是通过函数调用语句来执行。
C ) C程序的书写格式灵活,一行可以写多个语句。
D) C程序的注释也参加编译并出现在目标程序中。
17、以下说法正确的是。
A) C语言程序总是从第一个定义的函数开始执行。
B) 在C语言程序中,要调用的函数必须在main()函数中定义。
C) C语言程序总是从main()函数开始执行。
D、C语言程序中的main()函数必须放在程序的开始部分。
18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为 。
A) D B) 68 C) 不确定的值 D) C
19、以下叙述正确的是。
A) 在C程序中,每行只能写一条语句
B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C) 在C程序中,%是只能用于整数运算的运算符
D) 在C程序中,无论是整数还是实数,都能被准确无误地表示
20、如果已经定义的变量,正确交换变量a、b的是 。
A)a=bb=a B)a=bt=ab=t
C)t=aa=bb=t D)a=a+bb=a-aa=a-b
21、下面输入语句中正确的是 。(设:int a,b,c)
A)input(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)
22、下面有关for循环的正确描述是 。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体,后判条件
C)在for循环中,不能用break语句跳出循环
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
23、C语言中while和do-while循环的主要区别是。
A)do-while的循环体至少执行1次 B)while的循环条件比do-while的循环条件严格
C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句
24、已知:int a[10];则对a数组元素的正确引用的是。
A)a[10] B)a[3.5] C)a[5]D)a[10-10]
25、在C语言中,二维数组元素在内存中的存放顺序是 。
A)按行存放 B)按列存放C)由用户定义 D)由函数决定
26、已知:int a[ ][3]={1,2,3,4,5,6,7}则数组a的第一维的大小是 。
A)2 B)3 C)4 D)无法确定
27、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 。
main( )
{ int *p ,*q , a,b
p =&a
printf ("input a:")
scanf ("%d" , *p)
…}
A) *p表示的是指针变量p的地址 B)*p表示的是变量a的值,而不是变量a的地址
C)*p表示的是指针变量p的值 D)*p只能用来说明p是一个指针变量
28、已有定义int k = 2 int *ptr1,*ptr2 且ptr1和ptr2均已指向变量k ,下面不能正确执行的赋值语句是。
A) k = *ptr1+*ptr2 B) ptr2 = k C) ptr1 = ptr2 D) k = *ptr1 *(*ptr2)
29、变量的指针,其含义是指该变量的。
A)值 B)地址C)名 D)一个标志
30、若有语句int *point , a = 4 和point = &a 下面均代表地址的一组选项是 。
A)a , point ,*&a B) &*a ,&a , *point
C) *&point , *point , &a D) &a , &*point ,point
31、在C语言中,回车换行符是()
A. \ n B. \ t C. \ v D. \ b
32、下列字符串不是标识符的是( )
A. sum B. Average C. Day_nightD. M.D.JOHN
33、 在C语言中,下列类型属于构造类型的是( )
A.整型 B.字符型 C.实型D.数组类型
34、设有如下定义:
int x=10,y=5,z
则语句printf(“%d\n”,z=(x+=y,x/y))
的输出结果是( )
A.0 B.1 C.3 D.4
35、在C语言中,语句和数据定义是用( )作为结束标记的
A.句号 B.逗号 C.分号D.括号
36、以下程序的输出结果是()
main( )
{ char c1=’8’,c2=’2’
printf(“%c,%c,%d,%d\n”,c1,c2,c1-c2,c1+c2) }
A.因输出格式不合法,输出出错信息
B.8,2,6,106C.8,2,6,10 D.8,2,5,9
37、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()
main( )
{int x
scanf(“%d”,&x)
if(x++>5) printf(“%d\n”,x)
else printf(“%d\n”,x--)}
A.7和5B.7和4C.6和4
38、有如下程序段:
int k=0
while(k++<=2) printf(“%d\n”,k)
则正确的执行结果是( )
A. 2 B. 0 C.1 D无结果
3 12
4 23
39、变量i的值为3,i的地址为2000,若欲使指针变量p指向变量i,则下列赋值正确的是()
A.&i =3 B.*p=3 C.*p=2000D p=&i
40、下面程序的执行结果是( )
main( )
{int i, *i_pointer
i_pointer=&i
*i_pointer=9
printf(“i=%d”,i)}
A.i=0 B.i=9 C.i值不确定D.程序有错误
41、表达式(int)2.1416的值时( )
A. 2B. 2.1C. 0D. 3
42、下列运算符优先级最高的是( )
A. >B. + C. && D. !=
43、程序段如下:
int k=1
while (k=0) k=k+1
则以下说法正确的是( )
A. while循环执行20次 B. 循环是无限循环
C. 循环体语句一次也不执行 D.循环体语句执行一次
44、C语言容许函数值类型缺省定义,此时该函数值隐含的类型时()
A. float型 B. Int型 C. Long 型 D. Double型
45、在C语言中引用数组元素时,其数组下标的数据类型是( )
A. 整型常量 B. 整型表达式
C. 整型常量和整型表达式 D. 任何类型的表达式
46、以下程序段的输出结果是( )
char str[ ]=”ABCD”, *P=str
printf(“% d \ n”, *( p+4 ))
A. 68B. 0 C. 字符D的地址D. 不确定的值
47、一个C程序的执行是从()
A.本程序中的main函数开始,到main函数结束
B.本程序中的第一个函数开始,到本程序中的最后一个函数结束
C.本程序中的main函数开始,到本程序中的最后一个函数结束
D.本程序中的第一个函数开始,到本程序中的main函数结束
48、关于return语句,下列说法中不正确的是( )
A.函数可以通过return语句获得返回值。
B.没有return语句函数就不能获得返回值。
C.return语句后面可以是常量、变量名或表达式,只要有确定的值
D.C语言中允许函数不返回值
49、按照C语言的规定,下列说法正确的是( )
A.实参可以是常量、变量或表达式,在传递给形参时,要求实参必须有确定的值
B.形参可以是常量、变量或表达式
C.实参可以为任意类型
D.形参与其对应的实参类型要求可以不一致
50、设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++*p+=1后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12B.11,12,12C.10,12,12D.11,11,12
51、C语言中基本数据类型包括 。
A、整型、实型、逻辑型 B、整型、实型、字符型
C、整型、字符型、逻辑型 D、整型、实型、数组 、字符型
52、下列常数中不能作为C语言常量的是 。
A、0xA5B、2.5e-2C、3e2 D、0582
53、下列不属于C语言关键字的是 。
A、default B、void C、structD、external
54、已知int j,i=1执行语句j= -i++后,j的值是 。
A、1B、2C、-1 D、-2
55、已知int i,a执行语句i=(a=2*3,a*5),a+6后,i的值是。
A、6B、12 C、30 D、36
56、已知int x=1,y=2,z执行语句z=x>y?++x:++y后,z的值是 。
A、1B、2C、3D、4
57、不能进行++和—运算的数据类型是 。
A、指针 B、doubleC、int D、long
58、为了明确表示不带回函数值,定义函数时函数名前用 。
A、intB、void C、struct D、static
59、若有 int a[2][3]={1, 3, 5, 7, 9, 11};则a[1][2]的值为 。
A、3 B、5 C、11 D、9
60、对于存储类型为 的变量,只有使用时才占用内存单元。
A、static B、externC、auto D、前面都不对
二、填空题(每空1分,共20分)
1、用C语言编写的程序,编译成功后生成的文件扩展名是,连接成功后生成的文件扩展名是。
2、用汇编语言写的程序必须通过程序翻译后才能执行,而高级语言写的源程序可以通过程序翻译一句执行一句的方式,也可以通过程序一次翻译产生目标程序,然后执行。
3、若x和n均是int型变量,且x和n的初值均为5,则计算下列表达式后x的值为 ,n的值为 。 x+=n++
4、若a是int型变量,则计算下面表达式后a的值为 。a=25/3%3
5、若for循环用以下形式表示:for(表达式1表达式2表达式3) 循环体语句,则执行语句for(i=0i<3i++) printf("*")时,表达式1执行 次,表达式3执行 次。
6、在C程序中,从开始到结束的内容为注释信息,并且注释信息(可以/不可以)出现在程序的任何地方。
7、C程序有且只有一个主函数,它的函数名是,主函数(可以/不可以)调用任何非主函数,任何非主函数(可以/不可以)调用主函数。
8、若有定义:char c=‘\010’;则变量c中包含的字符个数为______。
9、鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。
for(x=1x<=29x++)
{y=30-x
if() printf("%d,%d\n",x,y) }
10、一个C源程序至少包括_________个函数,即_______函数。
11、若有说明int i,j,k则表达式i=10,j=20,k=30,k*=i+j的值为_______________。
12、语句"printf("%x,%o",16,12)"的输出结果是 。
13、开发一个C程序的步骤是,,, 。
14、一个C程序中必须包含一个且只包含一个 函数。
15、C语言中每个基本语句都以结束。
16、C语言规定,对程序中用到的变量,必须先,后 。
17、单精度浮点型变量和双精度浮点型变量的类型标识符分别为 和 。
18、C语言中唯一的三元运算符是,运算优先级最低的运算符是 。
19、 函数可以嵌套,不能嵌套 。
20、欲将1,2分别输入给x,y,则执行scanf(“x=%d,y=%d”,&x,&y)
语句时的输入格为 。
21、若x=2,y=3,则执行x*=y+1语句后,x的值为 。
22、 是C程序的基本组成单位。
23、在循环语句中执行了break语句,则 。
24、C语言规定,凡不加类型说明的函数,一律按。
25、函数调用的三种方式: 、 、。
26、在函数调用中给出的参数称 ,在函数定义中给出的参数称 。
27、C语言中自动在每个字符串的末尾添加一个 。
28、if与else的配对关系中,else总是与 的if配对。
29、文件的打开使用 函数;文件的关闭使用 函数。
30、若int x [ ]={1, 3, 5},* p=x;则*(p++)的值为。
31、一个函数由两部分组成,他们是 和 。
32、C语言是通过来进行输入和输出的。
33、C语言的数据类型有四大类,他们是 、 、 、 。
34、当执行以下程序段后,i的值为 、j的值为 、k的值为 。
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++)
35、若有以下定义:double w[10];则w数组元素下标的上限是 ,下限是。
36、Break语句只能用于和 语句。
37、在循环中,continue语句与break语句的区别是:continue语句只是 ,break 是 。
38、若有说明int i,j,k则表达式i=10,j=20,k=30,k*=i+j的值为。
39、语句"printf("%x,%o",16,12)"的输出结果是 。
三、程序填空
1、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环。请填空。
main()
{int a,max=0
scanf("%d",&a)
while( )
{ if (max<a) max=a
scanf("%d",&a)}
printf("%d",max)}
2、以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main()
{ float x,amax,amin
scanf(“%f”,&x)
amax=xamin=x
while()
{if ( x>amax ) amax=x
else if (x<amin)
}
printf(“\namax=%f\namin=%f\n”,amax,amin)}
3、输入若干字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。
#include <stdio.h>
void main()
{ char ch
while(( )!='\n')
{if(ch>='0'&&ch<='9') s1++
if((ch>='a' &&ch<='z')|| ) s2++}
printf(“%d,%d\n”,s1,s2)}
4、findmax返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax(int s[ ], int t)
{ int k,p
for(p=0, k=p p<t p++)
if (s[p]>s[k])
return }
5、以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main()
{ float x,amax,amin
scanf(“%f”,&x)
amax=xamin=x
while( )
{ if ( x>amax ) amax=x
else if (x<amin)
}
printf(“\namax=%f\namin=%f\n”,amax,amin)}
6、输入若干字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。
#include <stdio.h>
void main()
{ char ch
_________
while(( )!='\n')
{if(ch>='0'&&ch<='9') s1++
if((ch>='a' &&ch<='z')|| ) s2++}
printf(“%d,%d\n”,s1,s2)}
7、下面程序的功能是求出用数字0至9可以组成多少个没有重复数字的三位数。请填空。
main()
{int i,j,k,count=0
for(i=1i<=9i++)
for(j=0j<=9j++)
if( ) continue
else for(k=0k<=9k++)
if( ) count++
printf("%d",count)}
8、输出3——100之间的所有素数
#include “stdio.h”
main()
{ int i,j
for(i=3i<=100i++)
{for(j=2j<=i-1j++)
if( ) break
if()
printf(“%4d”,i)
} }
9、将字符串s中所有的字符‘c’删除
#include “stdio.h”
main()
{ char s[80]
int i,j
for(i=j=0s[i]!=‘\0’i++)
if(s[i]!=‘c’)
puts(s) }
10、用选择法对10个整数排序(从小到大)
main()
{int i,j,min,temp,a[11]
for(i=1i<=10i++)
for(i=1i<=9i++)
{min=i
for( j<=10j++)
if(a[min]>a[j])
temp=a[i]
;
a[min]=temp}
for(i=1i<=10i++)
}
四、判断题(每题1分,共20分)
1、若有说明int c;则while(c=getchar());是正确的C语句。 ( )
2、int i,*p=&i;是正确的C说明。 ( )
3、7&3+12的值是15。 ( )
4、在C语言中,函数既可嵌套调用又可嵌套定义。 ( )
5、for( )S中的语句S必执行无穷多次。 ( )
6、unsigned 和
1 【C语言】《C语言程序设计教程(第二版)》习题答案
说明
1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理
工大学出版社出版的,绿皮。
2 第1章 程序设计基础知识
一、单项选择题(第23页)
1-4.CBBC 5-8.DACA
二、填空题(第24页)
1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分
三、应用题(第24页)
2.源程序:
main()
{int i,j,k/* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */
printf("cock hen chick\n")
for(i=1i<=20i++)
for(j=1j<=33j++)
for(k=1k<=33k++)
if (i+j+k*3==100&&i*5+j*3+k==100)
printf(" %d %d %d\n",i,j,k*3)}
执行结果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.现计算斐波那契数列的前20项。
递推法 源程序:
main()
{long a,bint i
a=b=1
for(i=1i<=10i++) /*要计算前30项,把10改为15。*/
{printf("%8ld%8ld",a,b)
a=a+bb=b+a}}
递归法 源程序:
main()
{int i
for(i=0i<=19i++)
printf("%8d",fib(i))}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2))}
执行结果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include "math.h"
main()
{double x,x0,deltax
x=1.5
do {x0=pow(x+1,1./3)
deltax=fabs(x0-x)
x=x0
}while(deltax>1e-12)
printf("%.10f\n",x)}
执行结果:
1.3247179572
5.源程序略。(分子、分母均构成斐波那契数列)
结果是32.66026079864
6.源程序:
main()
{int a,b,c,m
printf("Please input a,b and c:")
scanf("%d %d %d",&a,&b,&c)
if(a<b){m=aa=bb=m}
if(a<c){m=aa=cc=m}
if(b<c){m=bb=cc=m}
printf("%d %d %d\n",a,b,c)}
执行结果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a
scanf("%d",&a)
printf(a%21==0?"Yes":"No")}
执行结果:
42
Yes
3 第2章 C语言概述
一、单项选择题(第34页)
1-4.BDCB 5-8.AABC
二、填空题(第35页)
1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6. .OBJ 7.库函数 8.文本
三、应用题(第36页)
5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。
8.源程序:
main()
{int a,b,c
scanf("%d %d",&a,&b)
c=aa=bb=c
printf("%d %d",a,b)}
执行结果:
12 34
34 12
4 第3章 数据类型与运算规则
一、单项选择题(第75页)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB
二、填空题(第77页)
1.补码 2.±(10^-308~10^308) 3.int(整数) 4.单目 自右相左 5.函数调用 6.a或b 7.1 8.65,89
三、应用题(第78页)
1.10 9
2.执行结果:
11
0
0
12
1
5 第4章 顺序结构程序设计
一、单项选择题(第90页)
1-5.DCDAD 6-10.BACBB
二、填空题(第91页)
1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c)9. 13 13.000000,13.000000 10.a=a^cc=c^aa=a^c(这种算法不破坏b的值,也不用定义中间变量。)
三、编程题(第92页)
1.仿照教材第27页例2-1。
2.源程序:
main()
{int h,m
scanf("%d:%d",&h,&m)
printf("%d\n",h*60+m)}
执行结果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i
for(i=0i<=3i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32)}
执行结果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5
printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r)}
执行结果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include "math.h"
main()
{double a,b,c
scanf("%lf%lf%lf",&a,&b,&c)
if (a+b>c&&a+c>b&&b+c>a)
{double s=(a+b+c)/2
printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)))}
else printf("Data error!")}
执行结果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5float d=1.2,e=2.23,f=-43.56
printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f)}
7.源程序:
main()
{int a,b,c,m
scanf("%d %d %d",&a,&b,&c)
m=aa=bb=cc=m
printf("%d %d %d\n",a,b,c)}
执行结果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c
scanf("%d %d %d",&a,&b,&c)
printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.)
执行结果:
6 7 9
average of 6,7 and 9 is 7.33
9.不能。修改后的源程序如下:
main()
{int a,b,c,x,y
scanf("%d %d %d",&a,&b,&c)
x=a*by=x*c
printf("a=%d,b=%d,c=%d\n",a,b,c)
printf("x=%d,y=%d\n",x,y)}
6 第5章 选择结构程序设计
一、单项选择题(第113页)
1-4.DCBB 5-8.DABD
二、填空题(第115页)
1.非0 0 2.k==0
3.if (abs(x)>4) printf("%d",x)else printf("error!")
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x)
5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1
三、编程题(第116页)
1.有错。正确的程序如下:
main()
{int a,b,c
scanf("%d,%d,%d",&a,&b,&c)
printf("min=%d\n",a>b?b>c?c:b:a>c?c:a)}
2.源程序:
main()
{unsigned long a
scanf("%ld",&a)
for(aprintf("%d",a%10),a/=10)}
执行结果:
12345
54321
3.(1)源程序:
main()
{int x,y
scanf("%d",&x)
if (x>-5&&x<0)y=x
if (x>=0&&x<5)y=x-1
if (x>=5&&x<10)y=x+1
printf("%d\n",y)}
(2)源程序:
main()
{int x,y
scanf("%d",&x)
if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1
else y=x-1else y=x
printf("%d\n",y)}
(3)源程序:
main()
{int x,y
scanf("%d",&x)
if(x<10) if(x>=5)y=x+1
else if(x>=0)y=x-1
else if(x>-5)y=x
printf("%d\n",y)}
(4)源程序:
main()
{int x,y
scanf("%d",&x)
switch(x/5)
{case -1:if(x!=-5)y=xbreak
case 0:y=x-1break
case 1:y=x+1}
printf("%d\n",y)}
4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。
现给出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procedure TForm1.Button1Click(Sender: TObject)
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)])
end
procedure TForm1.FormCreate(Sender: TObject)
begin
Edit2.Text:=datetostr(now)
button1click(form1)
end
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天"
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now())
Button1Click(Form1)
}
执行结果:(运行于Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg
5.源程序:
main()
{unsigned a,b,c
printf("请输入三个整数:")
scanf("%d %d %d",&a,&b,&c)
if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n")
else if(a+b>c&&a+c>b&&b+c>a)
if(a==b||a==c||b==c)printf("构成等腰三角形\n")
else printf("构成一般三角形\n")
else printf("不能构成三角形\n")}
执行结果:
请输入三个整数:5 6 5
构成等腰三角形
6.源程序:
main()
{int x,y
scanf("%d",&x)
if(x<20)y=1
else switch(x/60)
{case 0:y=x/10break
default:y=6}
printf("x=%d,y=%d\n",x,y)}
7.源程序:
main()
{unsigned mfloat n
scanf("%d",&m)
if(m<100)n=0
else if(m>600)n=0.06
else n=(m/100+0.5)/100
printf("%d %.2f %.2f\n",m,m*(1-n),m*n)}
执行结果:
450
450 429.75 20.25
8. 2171天(起始日期和终止日期均算在内)
本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。
9.源程序:
#include "math.h"
main()
{unsigned long i
scanf("%ld",&i)
printf("%ld %d\n",i%10,(int)log10(i)+1)}
执行结果:
99887
7 5
10.源程序:
main()
{unsigned long iunsigned j[10],m=0
scanf("%ld",&i)
for(i){j[m++]=(i+2)%10i/=10}
for(mm--)i=i*10+j[m-1]
printf("%ld\n",i)}
执行结果:
6987
8109
(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)
7 第6章 循环结构程序设计
一、单项选择题(第142页)
1-4.BCCB 5-8.CBCA
二、填空题(第143页)
1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin
三、编程题(第145页)
1. 源程序:
main()
{int i=1,sum=i
while(i<101){sum+=i=-i-2sum+=i=-i+2}
printf("%d\n",sum)}
执行结果:
51
2.源程序:
main()
{double p=0,n=0,fint i
for(i=1i<=10i++)
{scanf("%lf",&f)
if (f>0)p+=felse n+=f}
printf("%lf %lf %lf\n",p,n,p+n)}
3.源程序:
main()
{unsigned a
scanf("%ld",&a)
for (aprintf("%d,",a%10),a/=10)
printf("\b \n")}
执行结果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i
scanf("%ld%ld",&a,&b)
c=a%1000
for(i=1i<bi++)c=c*a%1000
if(c<100)printf("0")
if(c<10)printf("0")
printf("%ld\n",c)}
执行结果:
129 57
009
5.略
6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …
(1)源程序:
main()
{double e=1,f=1int n
for(n=1n<=20n++){f/=ne+=f}
printf("e=%.14lf\n",e)}
执行结果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1int n
for(n=1f>1e-4n++){f/=ne+=f}
printf("e=%.4f\n",e)}
执行结果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0int i,d
scanf("%d",&d)
for (i=1i<=(d+2)/3i++)
printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b))}
本题还可以用递归算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3)}
main()
{int i,dscanf("%d",&d)
for(i=1i<=di++)
printf("%10ld",fun(i))}
执行结果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i
for(i=1010i<=9876i+=2)
if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i)}
执行结果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
9.源程序:
main()
{int i,j,k
printf("apple watermelon pear\n")
for(i=1i<=100i++)
for(j=1j<=10j++)
if((k=100-i-j)*2==400-i*4-j*40)
printf("%4d%7d%9d\n",i,j,k)}
执行结果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include "stdio.h"
#define N 4 /* N为阶数,可以改为其他正整数 */
main()
{int m=N*2,i,j
for(i=1i<mprintf("\n"),i++)
for(j=1j<m
putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'))}
如果把N值改为5,则执行结果如下:
*
***
*****
*******
*********
*******
*****
***
*
作者:宁西贯通2006-5-7 23:41 回复此发言
--------------------------------------------------------------------------------
8 说明
注意:上面最后一题的输出结果应该是由星号组成的一个菱形,
9 第7章 数 组
一、单项选择题(第192页)
1-4.BBCC 5-8.AABA
二、填空题(第194页)
1.1
2
4
8
16
32
64
128
256
512
2. ①a[age]++ ②i=18i<26
3. ①break ②i==8
4. ①a[i]>b[j] ②i<3 ③j<5
5. ①b[j]=a[j][0] ②b[j]<a[j][k] 6.a[k++]=a[j]
三、编程题(第196页)
1.源程序:
main()
{int a[4][4],i,j,s=0
for(i=0i<4i++)
for(j=0j<4j++)
scanf("%d",&a[i][j])
for(i=0i<4i++)
for(j=0j<4j++)
if(i==j||i+j==3)s+=a[i][j]
printf("%d\n",s)} /* 注:5×5矩阵不能照此计算! */
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
68
2. 源程序:
main()
{int i,a[36]
a[0]=2
for(i=1i<=29i++)a[i]=a[i-1]+2
for(i<=35i++)a[i]=a[(i-30)*5+2]
for(i=0i<=35i++)printf("%d\t",a[i])}
执行结果:
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60
6 16 26 36 46 56
3. 源程序:
#include "stdlib.h"
#include "time.h"
main()
{int a[30],i,m=0
randomize()
for(i=0i<=29i++)
{a[i]=rand()
if(m<a[i])m=a[i]
printf("%d\t",a[i])}
for(i=0i<=29i++)if(a[i]==m)a[i]=-1
printf("\n-----------------\n")
for(i=0i<=29i++)
if(~a[i])printf("%d\t",a[i])
printf("\n")}
执行结果:
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
32499 29305 22340 5927 13031 2161 2583 31855 22977 14283
4851 22038 6992 11394 20887 27381 6293 18347 16414 10210
-----------------
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
29305 22340 5927 13031 2161 2583 31855 22977 14283 4851
22038 6992 11394 20887 27381 6293 18347 16414 10210
4.源程序:
main()
{int i,n=0,b[16]
scanf("%d",&i)
for(ii>>=1)b[n++]=i&1
for(n)printf("%d",b[--n])}
执行结果:
9876
10011010010100
本题也可以不用数组。源程序如下:
#include "stdio.h"
main()
{int i,n
scanf("%d",&i)
for(n=16nn--)
{asm ROL i,1
putchar(i&1|48)}
} /* ROL是循环左移的汇编指令 */
5. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j,t[M]
randomize()
/*生成M行N列随机数*/
for(i=0i<Mprintf("\n"),t[i++]=0)
for(j=0j<Nj++)
printf("%4d",a[i][j]=random(50))
/*找出每行的最小数,t[M]是第M行的最小数所在的列数*/
for(i=0i<Mi++)
for(j=0j<Nj++)
if(a[i][t[i]]>a[i][j])t[i]=j
/*比较每个最小数在其所在的列上是否也是最小*/
for(j=0j<Mj++)
for(i=0i<Mi++)
{if(i==j)continue
if(a[j][t[j]]>a[i][t[j]])
{t[j]=-1break}
}
printf("-------------------\n")
/*输出在行和列上均为最小的数*/
for(i=0i<Mi++)
if(t[i]!=-1)
printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]])
}
执行结果:
13 19 13 20 0 1
20 41 6 16 35 30
3 5 37 8 23 15
6 36 24 29 18 1
1 5 28 21 46 34
-------------------
a[0,4]=0
a[1,2]=6
a[3,5]=1
a[4,0]=1
6. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 7
main()
{int a[M][N],i,j,t=0
randomize()
for(i=0i<Mi++)
{a[i][N-1]=0
for(j=0j<N-1j++)
{printf("%4d",a[i][j]=random(91)+10)
a[i][N-1]+=a[i][j]}
printf("%4d\n",a[i][N-1])}
for(i=1i<Mi++)
if(a[i][N-1]>a[t][N-1])t=i
if(t)for(j=0j<Nj++)
{i=a[0][j]a[0][j]=a[t][j]a[t][j]=i}
printf("-----------------\n")
for(i=0i<Mprintf("\n"),i++)
10 第7章 数 组
for(j=0j<Nj++)
printf("%4d",a[i][j])
}
执行结果:
89 17 32 95 35 20 288
39 48 22 27 73 22 231
51 87 39 71 84 46 378
84 94 97 77 27 26 405
69 50 56 89 37 46 347
-----------------
84 94 97 77 27 26 405
39 48 22 27 73 22 231
51 87 39 71 84 46 378
89 17 32 95 35 20 288
69 50 56 89 37 46 347
7. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j
struct data{int value,x,y}max,min
max.value=0min.value=100
randomize()
for(i=0i<Mprintf("\n"),i++)
for(j=0j<Nj++)
{printf("%4d",a[i][j]=random(100)+1)
if(max.value<a[i][j])
{max.value=a[i][j]max.x=imax.y=j}
if(min.value>a[i][j])
{min.value=a[i][j]min.x=imin.y=j}
}
printf("-----------------\n")
i=a[0][N-1]a[0][N-1]=max.valuea[max.x][max.y]=i
i=a[M-1][0]a[M-1][0]=min.valuea[min.x][min.y]=i
for(i=0i<Mprintf("\n"),i++)
for(j=0j<Nj++)
printf("%4d",a[i][j])
}
执行结果:
51 53 74 65 30 40
30 26 50 6 61 27
47 16 54 58 76 19
57 74 44 92 71 48
73 57 60 32 73 67
-----------------
51 53 74 65 30 92
30 26 50 73 61 27
47 16 54 58 76 19
57 74 44 40 71 48
6 57 60 32 73 67
9. 源程序:
main()
{char s[255]int i,j,b=1
printf("Input a string:")
scanf("%s",s)
i=strlen(s)
for(j=1j<=i/2j++)
b=b&&(s[j-1]==s[i-j])
printf(b?"Yes\n":"No\n")}
执行结果:
Input a string:level
Yes
10. 源程序:
main()
{char s[255],t,max=0,min=0,l,i
printf("Input a string(length>4):")
gets(s)
l=strlen(s)
for(i=0i<li++)
{if(s[max]<s[i])max=iif(s[min]>s[i])min=i}
t=s[1]s[1]=s[max]s[max]=tif(min==1)min=max
t=s[l-2]s[l-2]=s[min]s[min]=t
printf("%s\n",s)}
执行结果:
Input a string(length>4):C++Builder
Cu+Beild+r
11. 源程序:
main()
{char m[13][10]={"****","January","February","March",
"April","May","June","July","August","September",
"October","November","December"}
int i,j,k,a,s,n
printf("Please input an integer(100..999):")
scanf("%d",&n)
printf("%d:%d+%d+%d=%d, %d%%13=%d, %s\n", n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)])}
执行结果:
Please input an integer(100..999):539
539:5+3+9=17, 17%13=4, April
11 第8章 函 数
一、单项选择题(第241页)
1-5.BCCAA 6-10.CCDDD 11-15.ACACB
二、填空题(第243页)
1.看不出原题的意图。因为要计算1~n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。据此猜测,原题应填为:①return(0) ②return(n+sum(n-1))
根据题意,如下程序较为合理:
int sum(int n)
{if(n<=0)return(-1)/* -1是出错标志 */
else if(n==1)return(1)
else return(n+sum(n-1))}
2. ①return(1) ②return(n*facto(n-1))
三、编程题(第244页)
3.源程序:
main()
{int i,a,b,c
for(i=100i<999i++)
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)
printf("%d\t",i)}
执行结果:
153 370 371 407
8.源程序(非递归算法):
#define P 13 /* P可以改为其他正整数 */
main()
{int a[P],r,c
for(r=0r<=Pr++)
{a[r]=1
for(c=r-1c>=1a[c--]+=a[c-1])
printf("%*d",(P-r)*3+1,a[0])
for(c=1c<=rprintf("%6d",a[c++]))
printf("\n")}
}
执行结果:
(应该排列成一个三角形,是贴吧造成现在这个样子的,不是程序有问题)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
9.源程序(递归算法):
#include "stdio.h"
void printOCT(unsigned long n)
{unsigned long i
if(i=n>>3)printOCT(i)
putchar((n&7)+48)}
main()
{unsigned long i
scanf("%ld",&i)
printOCT(i)}
执行结果:
1234567890
11145401322
本题也可以不用递归算法,源程序请参考第7章第三题4。
12 回复:【C语言】《C语言程序设计教程(第二版)》习题答案
但是不同时间印刷的版本课后题不太一样呢,象我们的是1999年12月第2版,2005年12月第69次印刷的。没有选择填空,应用题和楼主不知道有多少相同的,因为看不到原题。这个比较麻烦呢。
作者:210.77.204.* 2006-5-9 18:38 回复此发言
--------------------------------------------------------------------------------
13 回复:【C语言】《C语言程序设计教程(第二版)》习题答案
你对照一下主编和出版社,看看对吗?(见说明的第一条。)
我不是说叫你有问题另发帖子吗?
14 第9章 指 针
一、单项选择题(第276页)
1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD
二、填空题(第278页)
1.①int * ②*z
2.*p++
3.①'\0' ②++
4.①q=p+1 ②q<p+10 ③*q>max ④*q<min
三、编程题(第280页)
7.源程序:
main()
{int i=0char c[20]
do{scanf("%s",&c)i++}
while(strcmp(c,"stop"))
printf("%d\n",i)}
执行结果:
This car ran form Nanyang
to Luoyang without a stop
10
9.源程序:
main()
{char s[255],c[255]={0}int i
gets(s)
for(i=0s[i]c[s[i++]]++)
for(i=0i<255i++)
if(c[i])printf("%c=%d\t",i,c[i])}
执行结果:
abcedabcdcd
a=2 b=2 c=3 d=3 e=1
--------------------------------------------------------------------------------
作业名称:面向对象程序设计
作业总分:100
学员姓名:mj07b201 学员成绩:95
标准题总分:100 标准题得分:95
详细信息:
题号:1 题型:单选题 本题分数:1
内容:
一个类的友元函数能够访问该类的( )
选项:
A、A)私有成员
B、B)保护成员
C、C)公有成员
D、D)所有成员
学员答案:
D
题号:2 题型:单选题 本题分数:1
内容:
下面关于类和对象的描述中,错误的是( )
选项:
A、A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B、B)类和对象之间的关系是抽象和具体的关系
C、 C)对象是类的实例,一个对象必须属于一个已知的类
D、 D)类是具有共同行为的若干对象的统一描述体
学员答案:
A
题号:3 题型:单选题 本题分数:1
内容:
以下各选项组中,均是C++语言关键字的组是( )
选项:
A、A) public operator this
B、 B)shod string static
C、 C)it while>=
D、 D)private cout printf
学员答案:
A
题号:4 题型:单选题 本题分数:2
内容:
设int a=10,b=11,c=12,表达式(a+b) 的值为( )
选项:
A、A)2
B、 B)0
C、 C)-2
D、 D)1
学员答案:
B
题号:5 题型:单选题 本题分数:1
内容:
下列描述正确的是( )
选项:
A、A)表示m>n为true或mn&&m
B、 B)switch语句结构中必须有default语句
C、 C)if语句结构中必须有else语句
D、 D)如果至少有一个 *** 作数为true,则包含“‖”运算符的表达式为true
学员答案:
D
题号:6 题型:单选题 本题分数:1
内容:
下面关于数组的描述错误的是( )
选项:
A、A)在C++语言中数组的名字就是指向该数组第一个元素的指针
B、 B)长度为n的数组,下标的范围是0-n-1
C、 C)数组的大小必须在编译时确定
D、 D)数组只能通过值参数和引用参数两种方式传递给函数
学员答案:
D
题号:7 题型:单选题 本题分数:2
内容:
下面程序错误的语句是( )①#include ②void main() ③{ ④int*p=new int[1] ⑤p=9 ⑥cout <<*p< ⑦delete[]p ⑧}
选项:
A、A)④
B、B)⑤
C、C)⑥
D、D)⑦
学员答案:
B
题号:8 题型:单选题 本题分数:2
内容:
下面的哪个选项不能作为函数的返回类型?( )
选项:
A、A)void
B、B)int
C、C)new
D、D)long
学员答案:
C
题号:9 题型:单选题 本题分数:1
内容:
不能作为重载函数的调用的依据是( )
选项:
A、A)参数个数
B、 B)参数类型
C、 C)函数类型
D、 D)函数名称
学员答案:
B
题号:10 题型:单选题 本题分数:2
内容:
下列程序的输出结果为( ),以下是引用片段: #include<iostream. h> int func(int n) { if〔n<1)return 1 else return n+func(n-1): return 0 } void main() { cout<选项:
A、A) 0
B、B)10
C、C)15
D、D)16
学员答案:
D
题号:11 题型:单选题 本题分数:1
内容:
在C++语言中,数据封装要解决的问题是( )
选项:
A、A)数据的规范化
B、 B)便于数据转换
C、 C)避免数据丢失
D、 D)防止不同模块之间数据的非法访问
学员答案:
D
题号:12 题型:单选题 本题分数:2
内容:
以下程序中,错误的行是 ①#include ②class A ③{ ④ public: ⑤ int n=2: ⑥ A( int val){cout<选项:
A、A)⑤
B、B)⑥
C、C)⑦
D、D)⑩
学员答案:
A
题号:13 题型:单选题 本题分数:1
内容:
下面有关重载函数的说法中正确的是()
选项:
A、A)重载函数必须具有不同的返回值类型
B、 B)重载函数形参个数必须不同
C、C)重载函数必须有不同的形参列表
D、D)重载函数名可以不同
学员答案:
C
题号:14 题型:单选题 本题分数:1
内容:
下列关于构造函数的描述中,错误的是()
选项:
A、A)构造函数可以设置默认参数
B、B)构造函数在定义类对象时自动执行
C、C)构造函数可以是内联函数
D、D)构造函数不可以重载
学员答案:
D
题号:15 题型:单选题 本题分数:1
内容:
下面描述中,表达错误的是()
选项:
A、A)公有继承时基类中的public成员在派生类中仍是public的
B、 B)公有继承是基类中的private成员在派生类中仍是private的
C、C)公有继承时基类中的protected成员在派生类中仍是protected的
D、 D)私有继承时基类中的public成员在派生类中是private的
学员答案:
B
题号:16 题型:单选题 本题分数:2
内容:
在进行完任何C++流的 *** 作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的 *** 作函数名称是()
选项:
A、A)fail
B、B)eof
C、 C)bad
D、D)good
学员答案:
B
题号:17 题型:单选题 本题分数:1
内容:
下列关于C++语言类的描述中错误的是( )
选项:
A、A)类用于描述事物的属性和对事物的 *** 作
B、 B)类与类之间通过封装而具有明确的独立性
C、C)类与类之间必须是平等的关系,而不能组成层次结构
D、 D)类与类之间可以通过一些方法进行通信和联络
学员答案:
C
题号:18 题型:单选题 本题分数:1
内容:
以下叙述中正确的是( )
选项:
A、A)构成C++语言程序的基本单位是类
B、 B)可以在一个函数中定义另一个函数
C、 C) main()函数必须放在其他函数之前
D、 D)所有被调用的函数一定要在调用之前进行定义
学员答案:
A
题号:19 题型:单选题 本题分数:2
内容:
己知有定义 以下是引用片段: const int D=5 int i=1 double f=0.32: char c=15 则下列选项错误的是( )
选项:
A、A)++i
B、 B)D--
C、 C)C++
D、 D)--f
学员答案:
B
题号:20 题型:单选题 本题分数:2
内容:
下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是( ),以下是引用片段: void main() { int i=0,j,k do{i++k=316-13*i}while( ) j=k/11 cout<<”316=13*”< }
选项:
A、A)k/11
B、B)k% 11
C、 C)k/11==0
D、D)k%11==0
学员答案:
B
题号:21 题型:单选题 本题分数:2
内容:
设有数组定义:char array[]=”China",则数组array所占的空间为( )
选项:
A、A)4个字节
B、B)5个字节
C、C) 6个字节
D、D)7个字节
学员答案:
C
题号:22 题型:单选题 本题分数:2
内容:
若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*P=a,i 其中O≤i≤9,则对a数组元素不正确的引用是( )
选项:
A、A)a[p-a]
B、 B)*(&a[i])
C、C)p[i]
D、D)a[10]
学员答案:
D
题号:23 题型:单选题 本题分数:2
内容:
函数fun的返回值是( ) 以下是引用片段: fun(char*a,char*b) { int num=0,n=0 while(*(a+num)!=‘\0’)num++ while(b[n]){*(a+num)=b[n]num++n++} return num }
选项:
A、A)字符串a的长度
B、B)字符串b的长度
C、C)字符串a和b的长度之差
D、D)字符串a和b的长度之和
学员答案:
D
题号:24 题型:单选题 本题分数:2
内容:
下面程序的结果为( ),以下是引用片段: void main() { int i int a[3][3]={1,2,3,4,5,6,7,8,9} for(i=0i<3i++) cout<选项:
A、A)1 5 9
B、B)7 5 3
C、C)3 5 7
D、D) 5 9 1
学员答案:
B
题号:25 题型:单选题 本题分数:1
内容:
下列描述中哪个是正确的( )。
选项:
A、A)私有派生的子类无法访问父类的成员
B、 B)类A的私有派生子类的派生类,C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C、 C)私有派生类不能作为基类派生子类
D、 D)私有派生类的所有子孙类将无法继续继承该类的成员
学员答案:
B
题号:26 题型:单选题 本题分数:1
内容:
下列关于构造函数说法不正确的是( )
选项:
A、A)构造函数必须与类同名
B、 B)构造函数可以省略不写
C、 C)构造函数必须有返回值
D、 D)在构造函数中可以对类中的成员进行初始化
学员答案:
C
题号:27 题型:单选题 本题分数:1
内容:
如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( )
选项:
A、A)一元运算符
B、B)二元运算符
C、 C)选项A)和选项B)都可能
D、D)重载错误
学员答案:
D
题号:28 题型:单选题 本题分数:1
内容:
在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( )
选项:
A、A)一元成员运算符
B、B)二元成员运算符
C、C)一元友元运算符
D、D)选项B)和选项C)都可能
学员答案:
D
题号:29 题型:单选题 本题分数:2
内容:
建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为( )
选项:
A、A)abc
B、 B)acb
C、 C)cab
D、 D)cba
学员答案:
A
题号:30 题型:单选题 本题分数:2
内容:
下面关于虚函数的描述,错误的是( )
选项:
A、A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B、 B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C、 C)虚函数可以是另一个类的友元函数,但不能是静态成员函数
D、 D)基类中说明的纯虚函数在其任何派生类中都必须实现
学员答案:
B
题号:31 题型:单选题 本题分数:2
内容:
下面关于模板的描述,错误的是( )
选项:
A、A)函数模板和类模板的参数可以是任意的数据类型
B、 B)类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用
C、 C)函数模板不能直接使用,需要实例化为模板函数后才能使用
D、 D)类模板的成员函数都是模板函数
学员答案:
A
题号:32 题型:单选题 本题分数:2
内容:
语句ofstream f(”SALARY. DAT",ios::app iios::binary)的功能是建立流对象f,试图打开文件SAL:aRY. D AT并与之连接,并且( )
选项:
A、A)若文件存在,将文件写指针定位于文件尾
B、若文件不存在,建立一个新文件
C、 B)若文件存在,将其置为空文件
D、若文件不存在,打开失败
E、 C)若文件存在,将文件写指针定位于文件首
F、若文件不存在,建立一个新文件
G、 D)若文件存在,打开失败
H、若文件不存在,建立一个新文件
学员答案:
A
题号:33 题型:单选题 本题分数:2
内容:
下面程序的运行结果是( ) 以下是引用片段:#include void main(){ int num=1int &ref=numref=ref+2cout<选项:
A、A)13
B、B)16
C、C)36
D、D)33
学员答案:
C
题号:34 题型:单选题 本题分数:2
内容:
设有定义int xfloat v,则10+x+v值的数据类型是( )
选项:
A、A)int
B、B)double
C、C)float
D、D)不确定
学员答案:
C
题号:35 题型:单选题 本题分数:2
内容:
下列程序的执行结果为( ) 以下是引用片段:#include void main() { int a=3,b=0int*p=&ab=+a++cout<<*p<<","<选项:
A、A)3,4
B、B)4,3
C、C)3,4
D、D)4,4
学员答案:
B
题号:36 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段:#include void main() { for(int a=0,x=0!x&&a<=10a++) { a++}cout<选项:
A、A)10
B、B)11
C、C)12
D、D) 0
学员答案:
C
题号:37 题型:单选题 本题分数:2
内容:
下列程序的输出结果为( ) 以下是引用片段:#include void main() { char *a[]={"hello","the","world"}char**pa=apa++cout<<*pa}
选项:
A、A)hello
B、 B)the
C、 C)world
D、 D)hellotheworld
学员答案:
B
题号:38 题型:单选题 本题分数:1
内容:
决定C++语言中函数的返回值类型的是( )
选项:
A、A) return语句中的表达式类型
B、 B)调用该函数时系统随机产生的类型
C、 C)调用该函数时的主调用函数类型
D、 D)在定义该函数时所指定的数据类型
学员答案:
D
题号:39 题型:单选题 本题分数:2
内容:
下列程序的运行结果为( )以下是引用片段: #includevoid print(double a){cout<<++a} void print(int a,int b) { cout<A、A)1.2 34
B、 B)2.2 34
C、 C)1.2 43
D、 D)2.2 43
学员答案:
D
题号:40 题型:单选题 本题分数:1
内容:
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
选项:
A、A)公有类型
B、 B)私有类型
C、 C)保护类型
D、 D)友元类型
学员答案:
D
题号:41 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段: #include class A { public: A(){cout<<"1"} ~A(){cout<<"2"} }class B:public A { public: B(){cout<<"3"} ~B(){cout<<"4"} }void main() { B b}
选项:
A、A)1234
B、 B)1324
C、 C)1342
D、 D)3142
学员答案:
C
题号:42 题型:单选题 本题分数:2
内容:
下列关于多态性的描述,错误的是( )
选项:
A、A)C++语言的多态性分为编译时的多态性和运行时的多态性
B、 B)编译时的多态性可通过函数重载实现
C、 C)运行时的多态性可通过模板和虚函数实现
D、 D)实现运行时多态性的机制称为动态绑定
学员答案:
C
题号:43 题型:单选题 本题分数:2
内容:
当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )
选项:
A、A)ios::in
B、 B)ios::out
C、 C)ios::in|ios::out
D、 D)以上都不对
学员答案:
D
题号:44 题型:单选题 本题分数:2
内容:
下列程序的运行结果是( ) 以下是引用片段: #include class A { int apublic: A(){a=0} A(int as) { a=ascout<选项:
A、A 23
B、B 12
C、 C 35
D、D 25
学员答案:
B
题号:45 题型:单选题 本题分数:2
内容:
下面程序的输出结果是( ) 以下是引用片段: #include class example { int apublic: example(int b){a=b++} void print(){a=a+1cout<A、A)2 2
B、B)4 3
C、C)4 2
D、D)3 2
学员答案:
C
题号:46 题型:单选题 本题分数:2
内容:
在派生类中重新定义虚函数时必须在( )方面与基类保持一致。
选项:
A、A 、 参数个数
B、B 、 参数名字
C、C 、 *** 作内容
D、D 、 赋值
学员答案:
A
题号:47 题型:单选题 本题分数:2
内容:
C++ 类体系中,不能被派生类继承的有( )。
选项:
A、A 、 转换函数
B、B 、 构造函数
C、C 、 虚函数
D、D 、 静态成员函数
学员答案:
B
题号:48 题型:单选题 本题分数:2
内容:
下列虚基类的声明中正确的是( )
选项:
A、A 、 class virtual B: public A
B、B 、 class B: virtual public A
C、C 、 class B: public A virtual
D、D 、 virtual class B: public A
学员答案:
B
题号:49 题型:单选题 本题分数:1
内容:
C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是( )
选项:
A、A)面向过程
B、B)面向对象
C、C)安全性
D、D)复用性
学员答案:
B
题号:50 题型:单选题 本题分数:1
内容:
C++语言的跳转语句中,对于break和continue说法正确的是()
选项:
A、A)break语句只应用与循环体中
B、B)continue语句只应用与循环体中
C、C)break是无条件跳转语句,continue不是
D、D)break和continue的跳转范围不够明确,容易产生问题
学员答案:
B
题号:51 题型:单选题 本题分数:2
内容:
下列关于模板的说法正确的是( )
选项:
A、A)模板的实参在任何时候都可以省略
B、B)类模板与模板类所指的是同一概念
C、 C)类模板的参数必须是虚拟类型的
D、D)类模板中的成员函数全部都是模板函数
学员答案:
D
题号:52 题型:单选题 本题分数:2
内容:
表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是( )
选项:
A、A) showbase()和eof()
B、B)showpoint()和eof()
C、 C)showpoint()和bad()
D、D)showpoint()和good()
学员答案:
B
题号:53 题型:单选题 本题分数:2
内容:
若定义int k=7,x=12,则值为3的表达式是( )
选项:
A、A)x%=(k%=5)
B、B)x%=(k-k%5)
C、 C)x%=k-k%5
D、D)(x%=k)-(k%=5)
学员答案:
D
题号:54 题型:单选题 本题分数:2
内容:
在位运算中, *** 作数每右移一位,其结果相当于( )
选项:
A、A) *** 作数乘以2
B、B) *** 作数除以2
C、C) *** 作数乘以4
D、D) *** 作数除以4
学员答案:
B
题号:55 题型:单选题 本题分数:2
内容:
有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把节点b连接到节点a 之后的语句是( ), 以下是引用片段: struct node { char data struct node*next }a,b,*p=&a,*q=&b
选项:
A、A)a. next=q
B、 B)p. next=&b
C、 C)p->next=&b
D、 D)(*p).next=q
学员答案:
B
题号:56 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段: #include class A { int numpublic: A(int i){num=i} A(A &a){num=a. num++} void print(){cout<选项:
A、A)11
B、 B)12
C、 C)21
D、 D)22
学员答案:
C
题号:57 题型:单选题 本题分数:2
内容:
如果类A被说明成类B的友元,则( )
选项:
A、A)类A的成员即类B的成员
B、 B)类B的成员即类A的成员
C、 C)类A的成员函数不得访问类B的成员
D、 D)类B不一定是类A的友元
学员答案:
D
题号:58 题型:单选题 本题分数:2
内容:
可以用p.a的形式访问派生类对象P的基类成员a,其中a是( )
选项:
A、A)私有继承的公有成员
B、 B)公有继承的私有成员
C、 C)公有继承的保护成员
D、 D)公有继承的公有成员
学员答案:
D
题号:59 题型:单选题 本题分数:2
内容:
for(int x=0,y=0!x&&y<=5y++)语句执行循环的次数是()
选项:
A、A)0
B、 B)5
C、 C)6
D、 D)无次数
学员答案:
C
题号:60 题型:单选题 本题分数:2
内容:
考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是()
选项:
A、A)test(5)
B、 B)test(5,8)
C、 C)test(6,"#")
D、 D)test(0,0."*")
学员答案:
C
记得给我分啊
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)