void main() { int i;for(i=1;i+1;i++) {
if(i〉4) {
cout<〈i++;
break; }
cout<〈i++; } }
(三)编程题
1。
百钱百鸡:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只? 2.输出九九乘法表.
四、数组与指针部分试题:
(一)单选题
3。
以下数组定义中错误的是( )
A. int x[][3]={0};
B。 int x[2][3]={{1,2},{3,4},{5,6}}; C. int x[][3]={{1,2,3},{4,5,6}}; D。 int x[2][3]={1,2,3,4,5,6}; 4.
以下能正确定义二维数组的是( ) A。 int a[][3]; 5.
设有char array[]=\"China”;
则数组array所占的空间字节数为( ) A。 4 6.
对于以下定义正确的叙述为( )
char x[]=\"abcdefg”;
char y[]={’a’,'b’,’c','d’,’e’,'f’,’g'}; A。 数组x和数组y等价
B. 数组x和数组y的长度相同 D。 数组x的长度大于数组y的长度
C. 数组x的长度大于数组y的长度
B。 5
C。 6
D。 7
B。 int a[][3]={2*3};
C。 int a[][3]={}; D。 int a[2][3]={{1},{2},{3,4}};
33.
以下叙述中正确的是( )
A. 可以在一个函数中调用另一个函数 B. 可以在一个函数中定义另一个函数 C. main()函数必须放在其它函数之前 D。 所有被调用函数一定要在调用之前进行定义 34。
以下说法中正确的是( )
A. C++语言程序总是从第一个函数开始执行
B。 在C++语言程序中,要调用的函数必须在main()函数中定义 C。 C++语言程序总是从main()函数开始执行
D. C++语言程序中的main()函数必须放在程序的开始部分 35.
以下程序的输出结果是( ) void main( ) {
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; cout〈〈*(p+2)<〈endl; } A. 3 36。
以下程序的输出结果是( ) void main() {
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; cout〈〈(*p+9)〈〈endl; } A。 0 37.
以下程序的输出结果是( ) void main() {
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; cout〈〈(*p+*q)<〈endl; } A。 16
B. 10
C。 8
D. 6
B。 1
C. 10
D。 9
B。 4
C。 1
D。 2
38。
以下不能正确进行字符串赋初值的语句是( )
A. char str[5]= \"good!”; B. char str[]=”good!”; C。 char *str=\"good!”;
D。
str[5]={’g',’o',’o’,’d’,’!’};
39。
以下程序的输出结果是( ) void main()
{ char str[]=”ABCD”,*p=str; cout〈〈int(*(p+4))〈〈endl; } A. 68
B. ’D’
C。 0
40。
以下程序的输出结果是( ) void main()
{ char str[]=”aeiou\",*p=str; cout<<*(p+4)<〈endl; } A. o
B。 u
C. e
D。 62。
以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C。 数组的大小是固定的,所有数组元素的类型必须相同 D。 数组的大小是可变的,可以有不同的类型的数组元素 63.
以下对一维整型数组a的正确说明是( )。
A。int a(10); B。 int n=10,a[n]; C。int n; D。 const int SIZE=10; cin>〉n; int a[SIZE];
int a[n]; .
在C++语言中,引用数组元素时,其数组下标的数据类型允许是( ). A。 整型常量 B. 整型表达式
C。 整型常量或整型表达式 D。 任何类型的表达式
char
D。 ’0’
f
65。
以下对一维数组m进行正确初始化的是( ).
A。 int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D。 int m[10]=10*2; 66。
若有定义:int bb[ 8];.则以下表达式中不能代表数组元bb[1]的地址的是( )。
A。 &bb[0]+1 B。 &bb[1] C. &bb[0]++ D。 bb+1 67。
假定int类型变量占用两个字节,其有定义:int
x[10]={0,2,4};,则数组x在内存中所占字节数是( )。 A。 3 B。 6 C。 10
D. 20
68。
执行下面的程序段后,变量k中的值为( ). int k=3, s[2]; s[0]=k; k=s[1]*10;
A。 不定值 B. 33 C. 30 D. 10 69。
以下程序的输出结果是( )
void main() {
int i, a[10];
for(i=9;i>=0;i——) a[i]=10-i; cout〈〈a[2]〈〈a[5]〈〈a[8]<〈endl; } A。 258 B。 741 C。 852 D。70.
若说明:int a[2][3]; 则对a数组元素的正确引用是( ) .
A. a(1,2) B。 a[1,3] C。 a[1〉2][!1] Da[2][0]
71.
若有定义:int b[3][4]={0};则下述正确的是( ) .
A。 此定义语句不正确 B. 没有元素可得初值0 C。 数组b中各元素均为0
D。 数组b中各元素可得初值但值不一定为0 72。
若有以下数组定义,其中不正确的是( ) .
A。 int a[2][3];
。 369
B int b[][3]={0,1,2,3}; C. int c[100][100]={0};
D。 int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 73。
若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。
A。 t[2][4] B。 t[5][0] C。 t[0][0] D。 t[0,0]
74。
在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( ).
A。 4 B. 1 C。 2 D. 5 75。
在定义int n[5][6]后第10个元素是( )。
A. n[2][5] B. n[2][4] C。 n[1][3] D。 n[1][4]
76。
下述对C语言字符数组的描述中错误的是( )。
A. 字符数组可以存放字符串
B。 字符数组中的字符串可以整体输入、输出
C。 可以在赋值语句中通过赋值运算符\"=”对字符数组整体赋值 (strcpy()) D。 字符数组可以像普通数组那样初始化 77。
下述对C++语言字符数组的描述中正确的是 ( ). A。
任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
B。 一维数组的元素在引用时其下标大小没有 C。
任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
D。 一维数组的第一个元素是其下标为1的元素 78.
不能把字符串:Hello!赋给数组b的语句是( )。
A. char str[10]= {’H', ’e’, ’l’, ’l', 'o’, ’! ’}; B. char str[10];str=\"Hello!”;
C。 char str[10];strcpy(str,\"Hello!”); D. char str[10]=”Hello!”; 79.
合法的数组定义是( )。
A. int a[]=”string”; a[5]={0,1,2,3,4,5};
C. int s=\"string”; a[]={0,1,2,3,4,5};
80。
以下程序运行后,输出结果是( ). main() {
char arr[2][4];
B. D.
int char
strcpy(arr[0],\"you”); strcpy(arr[1],”me”); arr[0][3]='&'; cout<〈arr[0]〈〈endl;
}
A。 you&me B。 you C. me D。 err 99.
若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是( )。 A. p=q; B. *p=*q; C. a=*q; D. q=a; 100。
若定义:int a=511, *b=&a;,则cout<<*b;的输出结果为:( ) A. 无确定值 B. a的地址 C. 512 D. 511 101.
已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是( )。 A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);
102。
变量的指针,其含义是指该变量的( )。
A. 值 B. 地址 C. 名 D. 一个标志 103.
若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是( ). (1) int *p=&a; (2) *p=a;
A. 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值.
B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。 C. (1)在对p进行说明的同时进行初始化,使p指向a;
(2)变量a的值赋给指针变量p.
D. (1)在对p进行说明的同时进行初始化,使p指向a; (2)将变量a的值赋予*p。 104。
若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是( )。
A. a, p, *&a B. &*a, &a, *p C. *&p, *p, &a D. &a, &*p, p 105。
若需要建立如图所示的存储结构,且已有说明double
则正确的赋值语句是( )。
p
0.2345 x
*p,
x=0.2345;
A. p=x; B. p=&x; C. *p=x; D. *p=&x; 106。 有如下语句:int
p
m=6,
n=9, q *p, p
*q;
q p=&m;
q=&n;
如图1所示,若要实现下图所示的存储结构,可选用的赋值语句是( )。
m
n m n A. *p=*q; B. p=*q; C. p=q; D. *p=q;
107。
下面判断正确的是( )。
A. char *s=”girl”; 等价于 char *s; *s=”girl”;
B. char s[10]={”girl”}; 等价于 char s[10]; s[10]={\"girl”};
C. char *s=\"girl”; 等价于 char *s; s=”girl”;
D. char s[4]= \"boy”, t[4]= \"boy\"; 等价于 char s[4]=t[4]= ”boy\" 108。
以下不能正确进行字符串赋初值的语句是( ).
A. char str[5]= \"good!”; B. char *str=\"good!\"; C. char str[]=”good!”;
D. char str[5]={'g', 'o’,’o’, ’d’};
109。
下面程序段的运行结果是( ). char *s=”abcde\"; s+=2; cout〈< s;
A. cde B. 字符'c’ C. 字符’c'的地址 D. 无确定的输出结果 110.
设有如下的程序段:char s[]=”girl\", *t; t=s;则下列叙述正确的是( )。 A. s和t完全相同
B. 数组s中的内容和指针变量t中的内容相等 C. s数组和t指针指向的字符串没有关系 D. *t与s[0]相等 111.
若有说明语句:char
s[]=”it
is
a
example.\",
*t=”it
is
example.”;则以下不正确的叙述( )。
A. s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址 B. t指向另外的字符串时,字符串的长度不受 C. t变量中存放的地址值可以改变 D. s中只能存放16个字符 112。
若已定义char s[10];则在下面表达式中不表示s[1]地址的是( )。
A. s+1 B. s++ C. &s[0]+1 D. &s[1] 113。
下面程序段的运行结果是( ).(注:└┘代表空格) main()
{ char s[6];
s=\"abcd”; cout<〈 s; }
A. ”abcd” B. ”abcd└┘” C. \\\"abcd\\” D. 编译出错 113。
下列程序的输出结果是( )。
main() {
int a[]={1,2,3,4,5,6,7,8,9,0}, *p; p=a;
cout〈<*p+9〈A. 0 B. 1 C. 10 D. 9 114.有以下程序: #includeaint main() {
char *p=\"abcde\\0fghjik\\0”; cout<〈strlen(p)〈〈endl; return 0; }
程序运行后的输出结果是( )。
A. 12 B. 15 C. 6 D. 5 115。 有以下程序: int main() {
int a[10]={9,8,7,6,5,4,3,2,1,0}, *p=a+5; cout〈<*--p〈输出结果是( )。A. 非法 B. a[4]的地址 C. 5 D.116. 有以下函数:
char *fun(char *s) { … return s; }
该函数的返回值是( ).
A. 无确定值 B. 形参s中存放的地址值 C. 一个临时存储单元的地址 D. 形参s自身的地址值
(二)填空题:
1。 设有定义语句:int a[][3]={{0},{1},{2}}; 则数组元素a[1][2]的值为 0 。 2。
在C++语言中,有如下语句:
int a[]={10,20,30,40,50,60},*p; p=a+3;
cout〈<*p++〈〈endl; 则输出结果是 40 。
3 3。
以下程序运行后的输出结果是 15 . int a[2][3]={1,2,3,4,5,6}; int m,*p; p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4)); cout<〈m<〈endl; 6.
以下程序运行后的输出结果是 ab . #include〈iostream。h> void main() {
char s[]=”abcdef\"; s[3]=’\\0’; cout<〈s〈以下程序运行后的输出结果是 D . #include〈iostream.h> void main() {char s[]=”ABCD\",*p=s; cout〈〈*(p+3)<〈endl; } 8。
以下程序运行后的输出结果是 4 . char str[]=\"stop\\0\\n\\\"”; cout<〈strlen(str)<〈endl; 9.
以下程序运行后的输出结果是 5 。 #include #includechar str[]=”Beijing”;cout〈以下程序运行后的输出结果是 5 4 。 #include〈iostream。h> #include〈string。h> void main() {char a[]={’\\1','\\2’,’\\3','\\4’,'\\0’}; cout〈〈sizeof(a)<〈” \"〈〈strlen(a)〈〈endl; } 8.
输入20个整数到一维数组,统计正整数的个数及其和
void main()
{ int a[20],i,sum,count; sum=count= 0 ; for(i=0;i<20;i++) cin〉〉a[i]; for(i=0;i<20;i++) if( a[i]〉0 )
{ count++; sum+=a[i] ; } cout〈〈count<<\" \"〈9.输入10个整数到一维数组,输出其中最大数和最小数void main()
{ int a[10],i,max,min; for(i=0;i〈10;i++) cin〉〉a[i]; max=min= a[0] ; for(i=1;i〈10;i++)
if(a[i]>max) max=a[i] ; else if( a[i]10.输入一个字符串,将其倒序后输出void main() { int i,j;
char st[60],ch;
cin〉〉st;
for(i=0,j= strlen(st)-1 ; i〈=j ;i++,j——) { ch=st[i];
st[i]=st[j] ; st[j]=ch; }
cout<11。 C++语言中,数组元素的下标下限为 __0______。12. C++程序在执行过程中,不检查数组下标是否__越界______。 13。
以下程序段的输出结果是_Hello_______.
void main() {
char b[]=”Hello,you\"; b[5]=’\\0’; cout<〈b〈〈endl; }
14。 从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。 #include〈iostream。h〉 void main() {
char str[ ]={’h’,'e','l’,’l',’o’}; char str1[5]; 【1】int i,flag; for(i=0;i〈5;i++) 【2】cin>〉str1[i] ; flag=0;
for(i=0;i〈5;i++)
if 【3】(str[i]!=str1[i]) { flag=1; break;} if(flag)
cout〈〈”this word is not hello”〈〈endl; else
cout〈〈\"this word is hello”〈〈endl; }
15. 请填空: W
p
c
建立如图所示存储结构所需的说明语句是【1】char c,*p. 建立如图所示给c输入数据的输入语句是【2】 cin〉>c. 建立如图所示存储结构所需的赋值语句是【3】 p=&c。 16. 若有定义和语句:int
a[4]={1,2,3,4},*p;
p=&a[2];p的值是___2_____。
(三)编程题:
1。输入字符串,将其中的非数字字符删除后,输出整个字符串
五、函数部分的试题:
(一)单选题
81.
C++语言程序中,当函数调用时( )。 A。 实参和形参各占一个的存储单元 B。 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单元 D. 计算机系统自动确定是否共用存储单元 82。
关于return语句,下列正确的说法是( ). A. 在主函数和其他函数中均要出现 B. 必须在每个函数中出现 C。 可以在同一个函数中出现多次 D。 只能在除主函数之外的函数中出现一次 83.
一个函数返回值的类型是由( )决定的。 A。 return语句中表达式的类型 B。 在调用函数时临时指定 C。 定义函数时指定的函数类型
-—
,则*D. 调用该函数的主调函数的类型 84.
在C++语言的函数中,下列正确的说法是( )。 A. 必须有形参 B. 形参必须是变量名 C。 可以有也可以没有形参 D。 数组名不能作形参 85。
以下描述正确的是( )。
A。 函数调用可以出现在执行语句或表达式中 B. 函数调用不能作为一个函数的实参 C。 函数调用可以作为一个函数的形参 D. 以上都不正确 86。
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( ). A。 地址传递 87。
当调用函数时,实参是一个数组名,则向函数传送的是( )。 A。 数组的长度 88.
如果在一个函数的复合语句中定义了一个变量,则该变量( )。 A。 只在该复合语句中有效,在该复合语句外无效 B. 在该函数中任何位置都有效 C。 在本程序的源文件范围内均有效 D。 此定义方法错误,其变量为非法变量 。
下列说法不正确的是( )。
A。 主函数main中定义的变量在整个文件或程序中有效 B。 不同函数中,可以使用相同名字的变量 C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 90。
在一个源程序文件中定义的全局变量的有效范围是( ). A. 本源程序文件的全部范围 B. 一个C程序的所有源程序文件 C。 函数内全部范围
B. 数组的首地址
C。 数组每一个元素的地址
D。 数组每个元素中的值
B。 单向值传递
C。 由实参传给形参,再由形参传回实参 D。 传递方式由用户指定
D. 从定义变量的位置开始到源程序文件结束 91.
以下叙述中不正确的是( ).
A。 在不同的函数中可以使用相同名字的变量 B。 函数中的形式参数是局部变量
C。 在一个函数内定义的变量只在本函数范围内有效
D。 在一个函数内的复合语句中定义的变量在本函数范围内有效 93。
若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语
句中实参的个数是( ). A.3 95. 有如下程序
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〈〈r〈〈endl; }
该程序的输出的结果是( )。
A。 12 B. 13 C. 14 D. 15 96。 有以下程序
float fun(int x,int y) { return(x+y); } void main() {
int a=2,b=5,c=8;
cout〈〈(fun((int)fun(a+c,b),a—c)))〈〈endl; }
程序运行后的输出结果是( )。 A. 编译出错 B。 9 97.
以下程序的输出结果是( )。
int f( int b[ ], int m, int n) {
C。 21
D。
9。0
B。4 C。5
D.6
int i,s=0;
for(i=m;i〈n;i=i+2) s=s+b[i]; return s; }
void main() {
int x, a[ ]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf(”%d\\n”,x); }
A. 10 B. 18 C。 8 D。 15 98。
以下程序的输出结果是( )。
int a, b; void fun() {
a=100; b=200; }
void main() {
int a=5, b=7; fun();
cout<〈a〈〈b〈〈endl; }
A。 100200
B。 57
C。 200100 D。 75
六、文件部分的试题
1、C++中输入流类是( cin )类,该类实例的“>〉”运算符作用是将数据从( 输入流 )读出来,写入( 变量 )中。
2。
C++中输出流类是( cout )类,该类实例的“<<\"运算符作用是将数据从( 变量 )读出来,写入( 显示器 )中。
3。要使用输入输出流类,在include语句中应该包含( iostream。h )头文件。