《计算机程序设计基础》
习
题
册
计算机程序设计基础_基础知识(一)班级学号姓名成绩一、单选题
1.C++源程序文件的默认扩展名为A。
A) cpp B) exe
C) obj D) lik
2.由C++源程序文件编译而成的目标文件的默认扩展名为C。
A) cpp B) exe
C) obj D) lik
3.由C++目标文件连接而成的可执行文件的默认扩展名为B。
A) cpp B) exe
C) obj D) lik
4.编写C++程序一般需经过的几个步骤依次是B。
A)编译、编辑、连接、调试
B)编辑、编译、连接、调试
C)编译、调试、编辑、连接
D)编辑、调试、编辑、连接
5.程序中主函数的名字为 A 。
A) main B) MAIN
C) Main D) 任意标识符
6.下面四个选项中,均是不合法的用户标识符的选项的是C。A) A p_o do
B)float lao _A
C)b-a goto int
D)_123 temp INT
7.下列变量名中合法的是C。
A) B)C)Tom B) 3a66
C) _6a7b D) $ABC
8.存储以下数据,占用存储字节最多的是
D 。
A) 0 B) ‘0’
C) “0” D) 0.0
9.在C++语言中,字符型数据在内存中的存储形式是D。
A) 补码 B) 反码
C) 原码 D) ASCII码
10.若有说明语句:char c =’\072’;则变量c A。
A) 包含1个字符
B) 包含2个字符
C) 包含3个字符
D) 说明不合法,变量的值不确定
二、填空题
1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。
2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。
3.一条表达式语句必须以__分号_;___作为结束符。
4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。
5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令
计算机程序设计基础_基础知识(二)
班级 学号 姓名 成绩
一、 单选题
1. 下列哪一个是C++语言中合法的变量 C
A) 8ZSe B) ±A0
C) X0_2 D) ’x0’
2. 已知ch 是字符型变量,下面不正确的赋值语句是 A A) ch='a+b' B) ch='\0'
C) ch='7'+'9' D) ch=5+9
3. 下列浮点数的表示中不正确的是▁C ▁▁
A) 223. B) 719E22
C) e23 D) 12e2
4. 下列不正确的转义字符是 ▁C ▁▁
A)'\\' B)‘\"’
C) '074' D) '\0'
5. 在C 语言中,合法的字符常量是 ▁B ▁▁
A)'\084' B)'\x43'
C)'ab' D)"\0"
6. 下列变量定义中合法的是▁A ▁▁
A) double _a=1.le-1; B) double b=1+5e2.5;
C) double do= 2e3
D) double 2_and=1-e-3; 7. 已知ch 是字符变量,正确的赋值语句是
▁B ▁
A )ch=‘123’ B)ch=’\xff’
C) ch =’\08’ D)ch =”\” 8. 若x 、i 、j 和k 都是int 型变量,则计算
表达式x=(i=4,j=15,k=32 )后,x 的值为▁▁C ▁。 A) 4 B) 16 C) 32 D) 52 9. 单精度数x=3.0,y=4.0,下列表达式中y 的值为9.0的是▁B ▁。 A) y/=x*27/4 B) y+=x+2.0 C) y-=x+8.0 D) y*=x-3.0 10. 有整型变量x ,单精度变量y=5.5,表达式:x=(float)(y*3+((int)y%4))执行后,x 的值为▁A ▁。 A) 17 B) 17.5 C) 16.5 D) 16 二.填空题
1.
一个C 语言程序一般由若干个函数构成的,程序中至少应包含一个▁▁主函数▁▁。 2. 在C 语言中,八进制整常量以▁▁0▁▁开头、十六进制整常量以▁▁0x ▁▁开头。
3. ‘x’在内存中占▁1▁字节,”x”在内存中占▁2▁字节 ,”/101”在内存中占▁▁5▁。
4. 若a 是int 型变量,且a 的初值为6,则计算表达式a+=a-=a*a 后a 的值为__-60____。
5. 设int a=2,b=3; float x=3.5,y=2.5;表达式(float)(a+b)/2+(int)x%(int)y 的值是▁3.5。
6.
设 int x=1, y=1; 表达式 (!x||y--)的值是▁1▁。
7. 定义:int a=10,b=9,c=8; 顺序执行语句: c=(a-=(b-5)); c=(a%11)+(b=3);后变量c 的值是 ;变量b 的值是 3 。
8. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是 3 。
计算机程序设计基础_基础知识(三)
班级 学号 姓名 成绩
一、 单选题
1. 下列优先级最低的算符是 D
A) && B) + C)|| D) = 2. 以下符合C++语言语法的赋值表达式是 C 。 A) d = 9 + e + f = d + 9
B) d = 9 + e , f = d + 9
C) d = (9 + e , e + + , d + 9)
D) d = 9 + e + + = d + 7
3. 已知字母A 的ASCII 码为十进制数65,且
c2为字符型,执行语句c2 = ‘A ’+’6’-‘3’ ; 后c2的十进制ASCII 码值为 B 。 A)67 B) 68 C)69 D) 不确定的值
4. 设有说明:char w;int x;float y;double
z ; 则表达式w * x + z - y 值的数据类型为
D 。
A)float B)char C)int D)double
5. 假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式
abc
1
的表达式是 D A)1.0/a*b*c B) 1/(a*b*c) C)1/a/b/(float)c D) 1.0/a/b/c 6. 已知int i ,a ;执行语句“i=(a=2*3,a*5),a+6;”后,变量i 的值是 C
A) 6 B) 12 C) 30 D) 36
7. C++语言中,要求运算数必须是整型的运算符是 A A) % B) / C) < D) ! 8. 以下正确地定义整型变量a,b 和c 并为它
们都赋初值5的语句是 C
A) int a=b=c=5; B) int a,b,c=5; C) int a=5,b=5,c=5; D) a=b=c=5; 9. 以下变量均为int 类型,则值不等于7的
表达式是 C
A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)
10.设有int a=1,b=2,c=3,d=4,m=2,n=2;执行语句:(m=a>b)&&(n=d>c); 后n 的值为 B A) 1 B) 2 C) 3 D) 0
二、 填空题
1. 当int a=1,b=2,c=3; 时,则表达式a+b>0 && b==c 的值是___0_______。
2. 若x 是int 类型变量,则执行下列语句: x=7;x+=x-=x+x ; 后x 的值是 -14
3. 若变量a,b 和c 是int 类型,以下语句借助int 类型中间变量t 把a,b,c 交换,如交换前:a=10,b=20,c=30,交换后:a=20, b=30 , c=10 ,则交换语句为 t=a ;a=b ;b=c ; c=t ;
4. 设 int a=2,b=4,c=1,x=0,y=0;执行语句a||(x=b)&&(y=c);后x 的值为▁0▁,y 的值为▁0。
5.判断字符型变量c是否为大写字母的正确表达式是▁C>=’A’&&C<=’Z’▁▁。
计算机程序设计基础_控制结构(一)班级学号姓名成绩一、单选题
1.下列程序的输出结果是 C。
#include
void main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
cout< } A) 3 B) 3.2 C) 0 D) 3.07 2. 下列程序执行后的输出结果是 A。 #include void main() { double d; float f; long l; int i; i=f=1=d=20/3; cout< } A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.0 3. 下面程序的输出是 C 。 #include void main( ) { int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)); cout< } A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2 4.设int x=1,y=3 ,则语句x+=y;y=x-y;x-=y;的功能是▁D▁。 A)把x 和y按从大到小排列 B)把x和y按从小到大排列 C)无确定结果 D)交换x和y中的值 5. 以下程序的输出结果是 A。 #include void main( ) { int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } A) 2,1 B) 3,2 C) 4,3 D) 2,-1 二、分析程序,写出运行结果 1. #include void main( ) { int i,j,m,n; i=8; j=10; m=++i; n=j++; cout< void main() { int y=3,x=3,z=1; cout<<(++x,y++)< } 程序的运行结果是▁▁3 3▁▁ 计算机程序设计基础_控制结构(二)班级学号姓名成绩一、单选题 1. 若从键盘上输入5,则程序的输出结果是B。 #include void main( ) { int x; cin>>x; if(x++>5) cout< else cout< A) 7 B) 6 C) 5 D)4 2.下列程序的输出结果是A。 #include void main() { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++; case 2: a++;b++; } cout<<”a=”< A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 3.下列程序的输出结果是 C。 #include void main() {double x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; cout< A) 0 B) 0.25 C) 0.5 D) 1 4. 若从键盘上输入3和4,则程序的输出结果是B。 #include void main( ) { int a,b,s; cin>>a>>b; s=a; if(a cout< A) 14 B) 16 C) 18 D) 20 5. 下面的程序D。 #include void main( ) { int x=3,y=0,z=0; if(x=y+z)cout<<"* * * *\n"; else cout<<"# # # #\n"; } A) 有语法错误不能通过编译 B) 输出* * * * C) 可以通过编译,但是不能通过连接,因而不能运行 D) 输出# # # # 6. 为避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与 C配对。 A) 同一行上的if B) 其之后最近的if C) 其之前最近的且没有else的if D) 缩排位置相同的if 二、填空题 1.计算机总是按照语句或者语句块位置的先后关系▁顺序▁▁执行 2.所有程序都可以用▁顺序▁▁、▁选择▁▁、▁循环▁▁ 3种控制结构实现。 3.switch结构中的表达式必须是▁整型表达式▁▁。 4.case语句中的表达式必须是▁整常量表达式▁▁。 计算机程序设计基础_控制结构(三) 班级学号姓名成绩一、分析程序,写出运行结果 1.#include void main( ) { int x=100, a=10, b=20, ok1=5, ok2=5; if(a if(b!=15) if(!ok1) x=1; else if(ok2) x=10; cout< } 程序的输出是 10 2.#include void main( ) {float x,y; char ch; double r; cin>>x>>y>>ch; switch (ch) { case ‘+’: r=x+y;break; case ‘-’: r=x-y;break; case ‘*’: r=x*y;break; case ‘/’: r=x/y;break; } cout< } 运行时输入:3 5 /<回车>,则程序的运行结果是0.6 二、单选题 1.以下叙述正确的是▁D▁▁▁ A)do-while 语句构成的循环不能用其它语句构成的循环来代替 B)do-while 语句构成的循环只能用break 语句退出 C)用do-while 语句构成的循环,在while后的表达式为非零时结束循环 D)用do-while 语句构成的循环,在while后的表达式为零时结束循环 2.设int a,b;则执行以下语句后b的值为D a=1; b=10; do{ b-=a; a++; }while (b--<0); A)9 B) –2 C) –1 D) 8 3.以下程序段的执行结果是▁D▁▁▁ int a, y; a=10; y=0; do{ a+=2; y+=a; cout<<“a=”< if (y>20) break; }while (a=14); A)a=12,y=12 B) a=12,y=12 a=14,y=16 a=14,y=26 C) a=12,y=12 D) a=12,y=12 a=14,y=44 a=16,y=28 4. 设int i;执行语句: for (i=1;i++<4;); 后,变量i的值是▁C▁▁ A) 3 B) 4 C) 5 D)不定值 三、填空题 1.设i, j, k 均为int型变量,则执行完下面的for循环后,i的值为___6___; j的值为__4____;k 的值为___10____。 for (i=0, j=10; i<=j; i++,j--) k=i+j; 班级学号姓名成绩一、单选题 1.以下循环体的执行次数是▁▁C▁▁ #include void main() { int i, j; for (i=0,j=1; i<=j+1; i+=2, j--) cout< A) 3 B) 2 C) 1 D) 0 2. 当执行以下程序段时▁C▁▁▁ int y=-1 ; do {y--;} while(--y); cout< A) 循环体将执行一次 B)循环体将执行两次 C) 循环体将执行无限次 D)系统将提示有语法错误 3.在下列选项中,没有构成死循环的程序是C A) int i =100; B) for (;;); while(1) { i=i%100+1; if (i>100) break;} C) int k=1000; D) int s=36; do{ ++k; while (s); --s; }while(k<=1000); 4. 设int x,y;则执行下的循环后,y值为C for(y=1,x=1;y<=50;y++) { if(x>=10) break; if (x%2==1) { x+=5; continue;} x-=3; } A) 2 B) 4 C) 6 D) 8 5.设int j;,则下面for循环语句的执行结果是▁B▁▁ for( j=10;j>3;j--) { if(j%3) j--; --j; --j; cout< A) 6 3 B) 7 4 C) 6 2 D) 7 3 6.以下程序的输出结果是▁A▁▁▁ #include void main( ) { int n=4; while(n--) cout<<--n;} A)2 0 B)3 1 C)3 2 1 D)2 1 0 二、分析程序,写出运行结果 1. # include void main() { int i, j; for (i=1; i<5; i++) { for (j=1; j cout< cout< } } 1 程序的输出结果122. #include void main() { int i,j,x=0; for (i=0;i<2;i++) { x++; for(j=0;j<3;j++) { if (j%2) continue; x++; } x++; } cout<<"x="< 班级学号姓名成绩一、单选题 1.以下程序的输出结果是▁B▁▁▁ #include void main( ) { int i, j; for(j=10;j<11;j++) for(i=9;i<=j-1;i++) cout< A) 11 B) 10 C) 9 D) 10 11 2. 以下程序的执行结果是▁C▁▁▁ #include void main( ) { int i,sum; for(i=1;i<=3;sum++) sum+=i; cout< A) 6 B) 3 C) 死循环 D) 0 3. 以下程序的执行结果是▁B▁▁▁ #include void main( ) { int x=23; do { cout< } while(!x); } A) 22 B) 23 C) 24 D) 陷入死循环 4.有如下程序, 该程序段的输出结果是▁B▁#include void main( ) { int n=9; while(n>6){ n--; cout< A) 987 B) 876 C) 8765 D) 9876 5.以下程序的输出结果是▁D▁▁▁ #include void main( ) { int x=10,y=10,i; for(i=0;x>8;y=++i) cout< A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 1 6.以下程序的输出结果是▁▁A▁▁ #include void main( ) { int i; for(i=1;i<6;i++) { if(i%2) { cout<<"#";continue;} cout<<"*";} cout<<"\n";} A)#*#*# B)##### C)***** D)*#*#* 7.以下程序的输出结果是▁▁B▁▁ #include void main( ) { char i; for(i='A';i<'I';i++,i++) cout< cout<< "\n"; } A)编译不通过,无输出 B)ACEG C)ACEGI D)ABCDEFG 8.运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为▁▁C▁▁ #include #include void main( ) { int v1=0,v2=0; char ch ; while ((ch=getchar())!='#') switch (ch ) { case 'a': case 'h': default: v1++; case '0':v2++; } cout< } 班级学号姓名成绩 一、单选题 1.下面叙述中正确的是 B。 A) 对于用户自己定义的函数,在使用前必须加以说明 B) 函数可以返回一个值,也可以什么值也不返回 C) 说明函数时不必明确其参数类型和返回类型 D) 调用函数的实参,只能是有确定值的变量 2.下面叙述中错误的是 A 。 A)主函数中定义的变量在整个程序中都是有效的 B)在其他函数中定义的变量在主函数中也都不能使用 C)形式参数也是局部变量 D)复合语句中定义的变量只在该复合语句中有效 3.下面叙述中正确的是B。 A)全局变量在定义它的文件中的任何地方都是有效的 B)全局变量在程序全部执行过程中一直占用内存单元 C)同一文件中的变量不能重名 D)使用全局变量有利于程序的模块化和可读性的提高 4.若函数的类型和return语句中表达式的类型不一致,则 D。 A)编译时出错 B)运行时出现不确定结果 C)不会出错,且返回值的类型以return语句中表达式的类型为准 D)不会出错,且返回值的类型以函数的类型为准 5.C++语言中若不特别声明,则自动变量的存储类型被认为是D。 A)extern B)static C)register D)auto 6.在函数调用语句fun1(fun2(x,y),(x,y),z=x+y);中,fun1的实际参数的个数是 A 。 A)3 B) 7 C) 4 D) 5 7.对函数的调用不可以出现在 C 。 A)对一个变量赋初值 B)调用函数时传递的实际参数 C)函数的形式参数 D)引用数组元素[ ]的运算符中 8. 以下对C++语言函数的有关描述中,正确的是A。 A)在C++中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B)C++函数既可以嵌套定义又可以递归调用 C) 函数必须有返回值,否则不能使用函数 D) C++程序中有调用关系的所有函数必须放在同一个源程序文件中 9. 以下叙述中不正确的是 C 。 A)在C++中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 B)在C++中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容 C)在C++中,外部变量的隐含类别是自动存储类型 D)在C++中,函数形参可以说明为register变量 班级学号姓名成绩 一、填空题 1.函数直接或者间接地自己调用自己,被称为函数的递归调用__ __。在C++语言中,某函数 在一个程序中被调用的次数是无限制的。 2.在C++语言中,编译是以源文件为单位的,一个C++程序可以由一个或多个源文件 组成。 3.C++语言中,唯一不能被别的函数调用的函数是main()或主函数。 4.从函数定义角度看,C++语言中的函数分为两种,即库函数和用户自定义函数。从接 口形式上分类,函数分为无参函数和有参函数。 5.在定义函数时,函数名后面的括号中的变量名称为形式参数,在调用函数时函数名括号 后面的变量名称为实际参数。 6.在函数内部定义只在本函数内有效的变量是局部变量或内部变量,在函数外部定义的变量是 全局变量或外部变量。 二、单选题 1.以下程序运行后,输出结果是D。 #include int func ( int a, int b) { int m=0 ,i=2; i+=m+1; m=i+a+b ; return(m); } void main() { int k=4,m=1,p; p=func(k,m);cout< p=func(k,m);cout<<’,’< } A) 8,15 B) 8,16 C) 8,17 D) 8,8 2.以下程序运行后,输出结果是 A 。 #include int d=1; void fun (int p) { int d=5; d+=p++; cout< } void main() { int a=3; fun(a); d+=a++; cout< } A)84 B)99 C)95 D)44 3. 以下程序的输出结果是D。 #include int func(int a,int b) { return(a+b); } void main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); cout< } A) 12 B) 13 C) 14 D) 15 4.设有以下宏定义: #define N 3 #define Y(n) ((N+1)*n) 则执行语句: int z; z=2 * (N+Y(5+1)); 后,z的值为C。 A) 编译出错 B) 42 C) 48 D)54 2 班级 学号 姓名 成绩 一、 分析程序,写出运行结果 1. #include a+=a; b+=b; c=fun2(a,b)+ fun2(a,b); return c*c; } void main() { int x=11,y=19; cout< } 输出结果为 2468 4.#include 程序运行结果为:n=5 16 n=3 5.#include { int x=0; x=func(); cout<<"x="< cout<<"x="< 输出结果为 x=10 x=30 班级 学号 姓名 成绩 一、 单选题 1. 下面对一维数组a 的说明正确的是 D 。 A )int a(10); B )int n=10,a[n]; C )int n; cin>>n; int a[n]; D) #define SIZE 10 int a[SIZE]; 2. 若要对一维数组a 的所有元素值初始化为1的语句正确的是 C 。 A)int a[5]=(1,1,1,1,1); B)int a[ ]={ 5*1} C)int a[ ]={1,1,1,1,1}; D)int a[5]={1} 3. 若已定义数组:float a[8];则下列对数组元素引用正确的是 A 。 A) a[0] =1; B) a[8] = a[0]; C) a=1; D) a[3.5]=1; 4. 下面对二维数组a 的说明正确的是 C 。 A) int a[3][ ]; B) float a(3,4); C) double a[1][4]; D) long a[3,4]; 5. 不能对二维数组a 进行正确初始化的语句是 B 。 A) int a[2][3]={0} B) int a[2][3]={{1,2},{3,4},{5,6}}; C) int a[ ][3]={{1,2},{0}}; D) int a[ ][3]={1,2,3,4,5,6} 6. 若有说明:int a[3][4]={0};则以下说法正确的是 C 。 A) 只有元素a[0][0]可得到初值0 B) 数组a 中各元素都可得到初值,但其值不一定为0 C) 数组a 中每个元素均可得到初值0 D) 此说明语句不正确 7. 下面对字符数组s 的初始化不正确的是 D 。 A) char s[5]={“abc”}; B) char s[5]={‘a’,’b’,’c’}; C) char s[5]=“”; D) char s[5]=“abcdef ”; 8.执行下面的程序段后,变量k 中的值为 A 。 int k=3, s[2]; s[0]=k; k=s[1]*10; A) 不定值 B) 33 C) 30 D) 10 9.以下程序运行后,输出结果是 D 。 #include void main( ) { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++; y=y/2; } while(y>=1); for(j=i-1;j>0;j--) cout< 10.若有定义int a[4][5],则元素a[2][3]是数组中第 B 个元素。 A) 13 B) 14 C) 8 D) 9 2 班级 学号 姓名 成绩 一、 单选题 1.有程序段如下:运行该程序的结果是 A 。 char a[3],b[ ]=”China”; a=b; cout< char s[10]; s="abcd"; cout< char a[7]=”abcdef”, b[4]=”ABC”; int i; strcpy (a,b); for (i=0;i<7;i++) cout< 1. # include void main( ) { char ch[7]=”12ab56”; int i,s=0; for (i=0;ch[i]>=’0’&&ch[i]<=’9’;i+=2) s=10*s+ch[i]-‘0’; cout<<”s =”< 输出结果是 s=1 。 2. #include void main( ) {int a[][3]={1,2,3,4,5,6,7,8,9}; int i,j,s=0; for (i=0;i<3;i++) for (j=0;j<3;j++) if(i==j) s=s+a[i][j]; cout<<"s="< 输出结果是 s=15 班级学号姓名成绩分析程序,写出运行结果 1.#include void main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int k,s,i; float ave; for (k=s=i=0;i<10;i++) { if (a[i]%2==0) continue; s+=a[i]; k++; } if (k!=0) { ave=s/k; cout<<“k=”< } 输出结果是 k=5, ave= 5。 2.#include #define N 5 void main() { int a[N]; for(int i=0;i { a[i]=1; for(int j=i-1;j>0;j--) a[j]=a[j]+a[j-1]; for(int k=0;k<=N-i;k++) cout<<" "; for( j=0;j<=i;j++) cout< cout< } } 程序运行结果为 1 3.#include void main( ) { int a[10]={67,85,45,78,53,92,75,80, 94,88}; int b[]={60,70,80,90,101}; int c[5]={0}; int i; for(i=0;i<10;i++) { int j=0; while(a[i]>=b[j]) j++; c[j]++; } for(i=0;i<5;i++) cout< cout< } 输出结果是 4.#include void main() { int a[3][4] = {12, 23, 14, 25, 36, 27, 18,39, 15, 27, 32, 35}; int m, n, i, j; m = n = 0; for (i = 0; i < 3; ++i) { f or (j = 0; j < 4; ++j) { if (a[m][n] < a[i][j]) { m = i, n = j; } } } cout << "a[" << m << "][" << n << "]=" << a[m][n]; } 程序运行结果为: 班级学号姓名成绩一、单选题 1.若有两个基本类型相同的指针p1,p2,则 下列不能进行的运算是 A 。 A)p1+p2 B)p1-p2 C)p1=p2 D)p1==p2 2.有下列定义和赋值语句,则说法正确的是 D。 (1)char str[ ]=”I am a boy.”; (2)char str[12]; str=”I am a boy.”; (3) char *p=”I am a boy.”; (4) char *p; p=”I am a boy.”; A)以上四组语句都正确. B)只有(1),(3)正确 C)只有(3),(4)正确。 D)只有(1),(3),(4)正确。 3.若已定义char s[10];则在下面表达式中 不表示s[1]的地址的是B。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 4.若有说明语句: char a[ ]=”It is mine”; char *p=”It is mine”; 则以下不正确的叙述是D。 A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a数组的长度为10 5.下面程序段的运行结果是D。 char s[6]; s=”abcd” ; cout<<“\””< A) ”abcd” B) abcd C) \”abcd \” D)编译出错 6.下面程序的输出是 D 。 #include void main() { int a,b,*p1,*p2; a=b=3;p1=&a;p2=&b; if (p1==p2) { cout< cout<<*p1<<","; cout<<*p2*2< } else { cout< cout<<*p1<<","; cout<<*p2+2< } } A) 18,3,6 B) 8,3,5 C) 9,3,6 D) 6,3,5 7.以下程序的运行结果是 B 。 #include void sub(int x,int y,int *z) { *z=y-x; } void main() { int a,b,c; sub(10,5,&a); sub( 7,a,&b); sub(a,b,&c); cout< } A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7 8.已有定义int k=2;int *ptr1,*ptr2;且 ptr1和ptr2均已指向变量k,下面不能正 确执行的赋值语句B。 A)k=*ptr1+*ptr2; B)ptr2=k; C)ptr1=ptr2; D)k=*ptr1*(*ptr2); 2 班级学号姓名成绩一、单选题 1. 以下程序运行后,输出结果是A。 #include void main( ) { char *s="abcde"; s+=2; cout< } A) cde B)字符c的ASCLL码值 C) 字符C的地址 D)编译出错 2. 有以下程序输出结果是C。 #include void fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } void main() { int a, b, c, d; a=30; b=50; fun(a,b,&c,&d); cout< } A)50,30 B)30,50 C)80,-20 D)80,20 3.有如下程序段: int *p,a=10,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为B。A) 12 B) 11 C) 10 D) 编译出错 4. 有如下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的数组元素的表达式是 B 。 A) *p+9 B) *(p+8) C) *p+=9 D) p+8 5. 若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中0≤i≤9, 则对a数组元素不正确的引用 D 。 A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] 6.以下程序执行后的结果为 C 。 #include void main( ) { int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; cout<<”a=”< } A) a=–1,b=5 B) a=1,b=6 C) a= 0,b=7 D) a=4,b=10 7.下列程序的输出结果是▁▁▁。[A] int a[10] = {1,2,3,4,5,6,7,8,9,10}, *p = a; cout << *(p+2) << endl; A.3 B.4 C.1 D.2 二、填空题 1.在如下定义int a=7;int *p;让指针p指向a的语句是 p= &a; ,当p指向a后, &a与p等价, a 与*p等价。 2.条件同上题,则语句(*point)++;与语句 a++ ;等价,执行point++后,则变量a的值为7 。 2 班级 学号 姓名 成绩 一、 读程序,写出运行结果 1. #include 2. #include char *chp ; for (chp =b;*chp ;chp +=2)