第四章习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、填空题

1.若有定义int a[3][5];则排列在数组中的第9个元素是()。

2.strlen("How are you\n")的值是( )。

3.C语言中字符串结束的标志是( )。

4.写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是( )。

5.strcmp("how","How")的值是( )。

二、选择题

1.若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是()

A.1

B.2

C.3

D.4

2.对数组的描述正确的是()。

A.数组一旦定义其大小是固定的,但数组元素的类型可以不同。

B.数组一旦定义其大小是固定的,但数组元素的类型必须相同。

C.数组一旦定义其大小是可变的,但数组元素的类型可以不同。

D.数组一旦定义其大小是可变的,但数组元素的类型必须相同。

3.对字符串"Boy"进行完整赋值的操作是()。

A.char s[3] = {'B','o','y'}; B. char s[] = "Boy";

C.char s[3] = {"Boy"}; D.char s[3]; s="Boy";

4.在c语言中引用数组元素时,其数组下标的数据类型允许是( )。

A.整型常量 B.整型表达式

C.整型常量或整型表达式 D.任何类型的表达式

5.对以下说明语句的正确理解是()。

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.因为数组长度与初值的个数不相同,所以此语句不正确

三、阅读程序,写出运行结果

1.

main()

{int a[3][3] = {{1,0,2}, {2,2},{0,2}}, c[3][3],i,j;

for(i=0; i<3; i++)

{

for(j=0; j<3; j++)

{

c[i][j] = a[a[i][j]][a[j][i]];

printf("%5d",c[i][j]);

}

}

printf("\n");

}

2.当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。

main()

{ char s[80], c='a';

int i=0;

scanf("%s",s);

while(s[i++]!='\0')

if(s[i] == c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32;

puts(s);

}

3.main()

{ int a[5]={1,2,3,4,5};

int *p=&a[1];

printf("%d",p[2]);

}

4.main()

{ char a[]="I love China!";

char *p=a;

p=p+2;

printf("%s",p);

}

5.main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*pa)[4]=a;

pa++;

printf("%d",*(*(pa+1)+2));

}

6.main()

{ char *str[]={"zhao","qian","sun","li"};

int i;

for (i=0;i<4;i++)

printf("%c",str[i][0]);

}

四、编程题

1.用数组方法定义一个矩阵,求其转置矩阵。

2.从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,并输出其行、列下标。

3.利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。

1

1 1

12 1

133 1

1464 1

1510105 1

4.矩阵A是一个3×3的矩阵,B是一个3×2的矩阵,编程求C=A B。

5.不用现有的函数求计算字符串长度的程序。

6.从键盘上输入一串字符,将其逆向显示。

7.找出一个二位数组中的鞍点的位置,即该位置上的元素在该行上最大,在该列上最小。

如果有,输出其所在的行、列号,如果没有,则输出提示信息。

参考答案

一、填空题

1. a[1][3] 2 12 3 '\0' 4 float s[6]={0}; 5 32 或>0

二、选择题

1 D

2 B

3 B

4 C

5 B

三、写结果

1 运行结果为:

2 2 0 0 0 2 2 0 1

2 运行结果为:AH2Ma

3 运行结果为:4

4 运行结果为:love China!

5 运行结果为:11

6 运行结果为:zqsl

四、编程题

1.提示:已知a[3][2],转置后的结果存放在b[2][3]; 则b[j][i]=a[i][j];

2.提示:已知a[3][3],max,row,col分别用来存放一列的最大值,行下标和列下标。

3.提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。

4.提示:

定义一个3X2的数组c[3][2],该数组的元素值由A数组的一行元素分别与B的一列元素相乘得到。譬如:c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]。

5.提示:通过循环从前到后计算字符个数,遇到字符串结束标志'\0'结束。

6.提示:首先计算字符串的长度,在从右边逐一显示字符,直到下标等于0为止。

7.提示:先找出行的最大元素,根据列下标找出列的最大元素。

相关文档
最新文档