C++作业3-数组与字符串

更新时间:2024-06-09 17:24:01 阅读量: 综合文库 文档下载

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

一、判断题(每小题2分,共20分)

1. C++中允许对数组的大小作动态定义,即可用变量定义数组的大小。 答案:F。

2. 字符数组不要求它的最后一个字符为'\\0',甚至可以不包含'\\0'。 答案:T

3. 在对全部数组元素赋初值时,可以不指定数组长度。 答案:F

4. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素。 答案:T

5. char c[]={\与char c[]=\等价。 答案:T

6. 设已有说明: char c1[10],c2[10]; 下面程序片段是合法的。c1={\ c2=c1; 答案:F

7. 字符数组初始化如:char aStr[]={\不可省略花括弧,简单地写为char aStr[]=\答案:F

8. 对数组元素赋初值称为数组的初始化,例如: int a[10];

a={1,3,5,6,7}; 答案:F

9. 如果数组的元素类型是字符型(char),则此数组就是字符数组。字符数组的每个元素只能存放一个字符(存放字符的ASCII代码)。 答案:T

10. C++中数组的起始下标为0,最大下标值比常量表达式小一。 答案:T

二、选择题 (每题3分,共45分)

1. 以下对一维数组a的正确定义是( )。

A.char a(10); B.int a[ ]; C.int k=5, a[k];

D.char a[ ]={'a', 'b', 'c'};

答案:D

2. 下面关于C++字符数组的叙述中,错误的是( )。

A.字符数组可以存放字符串

B.字符数组的字符可以整体输入、输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.可以用关系运算符对字符数组中的字符比较大小

答案:C

3. 下面程序段的运行结果是( )。

char x[5]={'a', 'b', '\\0', 'c', '\\0'};

cout<

A.'a''b' B.ab

C.ab c D.abc

答案:B

4. 下面关于数组的叙述中,正确的说法是( )。

A.在定义一个数组时必须指定数组长度 B.必须用常量表达式来定义一个数组的长度

C.对数组进行初始化时大括号中的数据个数必须和数组的长度相同 D.定义一个一维数组时必须对数组进行初始化

答案:B

5. 在数组中,数组名表示( )。 A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址

C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址 答案:A

6. 若有以下说明,则数值为 4 的表达式是( )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ; A.a[g-c] B.a[4]

C. a['d'-'c'] D. a['d'-c] 答案:D

7. 下列语句中,正确的是 ( )。

A. char a[3][ ]={'abc', '1'};

B. char a[ ][3] ={'abc', '1'}; C. char a[3][ ]={'a', \D. char a[ ][3] ={ \答案:D

8. 字符串的长度是( ) A.串中不同字符的个数 B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零 D.串中所含字符的个数 答案:D

9. 下面关于数组的初绐化正确的是( ) A.char str[]={′a′,′b′,′c′}; B.char str[2]={′a′,′b′,′c′};

C.char str[2][3]={{′a′,′b′},{′c′,′d′},{′e′,′ f′}}; D.char str()={′a′,′b′,′c′}; 答案:A

10. 设有数组定义:char array[]=″China″;,则数组array所占的空间为( )

A.4个字节 B.5个字节 C.6个字节 D.7个字节 答案:C

11. 若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)( ) A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1 答案:A

12. 以下程序段的输出结果是( ) void main() { char x=0x41;

cout<

A.41 B.65 C.A D.B 答案:C

13. 对以下说明语句的正确理解是( ) int a[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确。 答案:B

14. 下面哪一项是不正确的字符串赋值或赋初值的方式( )。 A. char *str; str=\

B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1=\

D. char str1[]=\答案:C

15. 设有定义:char s[12]=\则cout<

A. 6 B. 7 C. 11 D. 12 答案:A

三、程序填空题 (本大题35分) 1.

本题分值:每空3分,共6分。 题目描述:设有一矩阵a要求这一矩阵的主对角线之和,请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main() {

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)

if ( __(1)__) sum=sum+__(2)__; cout<

答案: (1) i==j (2) a[i][j]

2.

本题分值:每空2分,共10分。

题目描述:从键盘输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请将未完成的部分填入,使之完整。

代码:

#include using namespace std; int main() {

int a[5],max,min,i,j,k; for(i=0;i<5;i++) cin>>a[i]; min=a[0]; k=0;

for(i=1;i<5;i++) //寻找最小数及其位置 if (a[i]

min=a[i];

__(1)__; //记住其最小数所在位置k } max=a[0]; j=0;

for (i=1;i<5;i++) //寻找最大数及其位数 if (a[i]>max) {

max=a[i]; __(2)__; }

a[k]= __(3)__; __(4)__;

cout<

cout<<__(5)__<答案: (1) k=i (2) j=i (3) max

(4) a[j]=min

(5) j 3.

本题分值:每空3分,共9分。

题目描述:将数组的各个元素倒过来存储。例如,a的10个元素分别为:1、12、-32、64、15、26、3、8、9、4,作逆序处理后其值为:4、9、8、3、26、15、64、-32、12、1。 代码:

#include using namespace std; int main() {

int i,t,a[10]; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<5;i++) {

__(1)__;

__(2)__;

__(3)__;

}

for(i=0;i<10;i++) cout<

4.

本题分值:每空2分,共4分。

题目描述:从键盘输入一个英文句子,统计其中含有多少个单词,单词之间用空格分隔的程序。请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main( ) {

char s[81],c1,c2; int i,num; i=0; num=0; c1=' ';

return 0;

cin.getline(s,80); // 输入英文句子 while(s[i]) {

c2=s[i];

if (i>0) c1=__(1)__; if (c1==' ' && c2!=' ') num++; __(2)__; }

cout<

5. 本题分值:每空2分,共6分。

题目描述:下面是去掉字符串中的所有空格的程序,请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main() {

char s[81]; int i,n;

cin.getline(s,80); i=0; n=0;

while(__(1)__) {

if (s[i]==' ') {

__(2)__; continue; }

s[n]=s[i]; n++; i++; }

s[n]=__(3)__; cout<

return 0;

} 答案: (1)s[i] (2)i++ (3)0

本文来源:https://www.bwwdw.com/article/9zw6.html

Top