31、下面关于C++字符数组的叙述中,错误的是( )。
(A)字符数组可以放字符串
(B)字符数组的字符可以整体输入、输出
(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
(D)可以用关系运算符对字符数组比较大小
32、以下正确的描述是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套。
B.函数的定义不可以嵌套,但函数的调用可以嵌套。
C.函数的定义和函数的调用均不可以嵌套。
D.函数的定义和函数的调用均可以嵌套。
33、若有数组名作为函数调用的实参,则传递给虚参的是( )
(A)数组的首地址 (B)数组第1个元素的值
(C)数组中全部元素的值 (D)数组元素的个数
34、下列字符列中可以作为“字符串常量”的是( )。
A. ABC B. ″ABC″ C. ’abc’ D. ’a’
35、下面各语句中能正确进行字符串赋值操作的语句是( )。
A. char s[5] = {“ABCDE”};
B. char s[5] = {‘A’,’B’,’C’,’D’,’E’};
C. char *s; s = “ABCDE”;
D. char *s; scanf(“%s”, s);
36、以下正确的函数原型声明语句是( )
(A)int fun(int a,b); (B)float fun(int a;int b);
(C)double fun( ); (D)int fun(char a[][],b);
37.判断字符型变量ch是否为大写英文字母,应使用表达式( )。
A、ch>='A' & ch<='Z’ B、ch<='A' ||ch>='Z’
C、’A’〈=ch〈='Z’ D、ch>='A' && ch〈=’Z'
38、变量的指针,其含义是指该变量的( )。
A) 值 B) 地址 C) 名 D) 一个标志
39、变量的引用,其含义是指该变量的( )。
A.值 B.类型 C.别名 D.地址
40、有如下代码段:
int p,a[10]={1,3,4,5,7,8,10,12,15,16};
p=&a[5];
则(p-1)的值为( )。
A)1 B) 4 C) 7 D) 10
41、设有数组定义:char array[]=”China”;则数组array所占的空间为( )。
A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节
42、已有定义“int a=5,&ra=a;”则下叙述中,错误的说法是( )。
(A)ra是变量a的引用 (B)ra的值为5
(C)ra是a的地址值 (D)执行“ra=10;”后变量a的值也变为10
43、设 int x = 1, y = 3 , 能正确表示代数式3x|x-y|的C++表达式是( )。
(A)abs(x-y)*3*x (B)3x(abs(x-y))
(C)3x||(x-y) (D)3x(x-y)|| 3x(y-x)
44、设有说明语句
struct abc
{
int m;
float n;
} stype;
则下面错误的叙述是( )
(A)struct 是定义结构体类型的关键字
(B)stype是结构体类型名
(C)m和n都是结构体成员
(D)stype是结构体变量名
45、一个结构体变量所占用的内存字节数是( )
(A)结构体中第一个成员所需的内存字节数
(B)结构体中最后一个成员所需的内存字节数
(C)结构体中占用内存最大的成员所需的字节数
(D)结构体中各成员所需的内存字节数和
46、设a和b是两个结构体变量,下面正确的表达式是( )
(A)a=b (B)a=b+1 (C)a>b (D)a==b
47.假定 int 类型变量占用两个字节,则以下定义的数组 a 在内存中所占字节数是( )。
int a[10]={10,2,4};
A. 20
B.10
C.6
D.3
48、若有定义:int a[2][3];以下选项中对数组元素正确引用的是( )。
A. a[2][0]
B. a[2][3]
C. a[0][3]
D. a[1>2][1]
49、对于以下定义,正确的叙述为( )。
char x[]="abcdefg", char y[]={'a','b','c','a','e','f','g'};
A.数组 x 和数组 y 等价
B.数组 x 的长度大于数组 y 的长度
C.数组 x 和数组 y 的长度相同
D.数组 x 的长度小于数组 y 的长度
50.以下程序段的输出结果是( )。
int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i, s=0;
for(i=0; i<4; i++)
s+=aa[i][3];
printf("%d\n", s);
A.11
B.19
C.13
D.20
二、填空题
1.写出以下程序段的输出结果:输入4,则输出( ),输入5,则输出( ),输入12,则输出( ),输入-5,则输出( )。
int i, n = 5, x, a[10] = {1, 3, 5, 7, 9};
scanf("%d", &x);
for (i = n - 1; i >= 0; i--)
if (x < a[i])
a[i + 1] = a[i];
else
break;
a[i + 1] = x;
n++;
printf("%d", i + 1);
答:
2.求数组中相邻元素之和。将数组 x 中相邻两个元素的和依次存放到 a 数组中。请填空。
int i, a[9], x[10];
for (i = 0; 1 < 10; i++)
scanf("%d", &x[i]);
for (_______; i < 10; i++)
a[i - 1] = _______ + x[i];
答:
- ( )
- ( )
3.简化的插入法排序。将一个给定的整数 x 插到已按升序排列的整型数组 a 中,使 a 数组仍然按升序排列。假定变量都已正确定义并赋值,请填空。
for (i = 0; i < n; i++)
{
if (________)
{
break;
}
}
for (________)
{
a[j + 1] = a[j];
}
________;
n++;
答:
- ( )
- ( )
- ( )
4.输入 8 ,以下程序段的输出结果为( ),输入 5 ,输出结果为( )。
int i, max_sum, n, this_sum, a[] = {-1, 3, -2, 4, -6, 1, 6, -1};
scanf("%d", &n);
max_sum = this_sum = 0;
for (i = 0; i < n; i++)
{
this_sum += a[i];
if (this_sum > max_sum)
max_sum = this_sum;
else if (this_sum < 0)
this_sum = 0;
}
printf("%d\n", max_sum);
答: