第四章习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.提示:先找出行的最大元素,根据列下标找出列的最大元素。