2013年计算机二级考试C语言第九章课后题及参考答案
第九章 数组
一、 选择题
9.1 若已定义:
int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素的引用不正确的是
A)a[p-a]
B)*(&a[i])
C)p[i]
D)*(*(a+i))
答案:D
9.2 以下程序段给数组所有元素输入数据,应在下划线处填入的是
A)a+(i++)
B)&a(i+1)
C)a+i
D)&a[++i]
main()
{
int a[10],i=0;
while(i<10)scanf("%d",_________);
.
.
.
}
答案:D
9.3 以下程序的输出结果是
A)3
B)4
C)1
D)2
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\\n",*(p+2));
}
答案:A
9.4、 以下程序的输出结果是
A)不确定的值
B)3
C)2
D)1
main()
{
int n[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\\n",n[k]);
}
答案: A
9.5 以下程序的输出结果是
A)17
B)18
C)19
D)20
main()
{
int a[ ]={2,4,6,8,10},y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y+=*(p+x);
printf("%d\\n",y);
}
答案: C
9.6 以下程序的输出结果是
A)6
B)8
C)4
D)2
main()
{
int a[10]={2,4,6,8},*p=a,i;
for(i=0;i<4;i++)a[i]=*p++;
printf("%d\\n",a[2]);
}
答案:A
计算机二级C语言章节练习在线测试 | ||
第9章 | 数组 |
9.7 以下程序的输出结果是
A)720
B)120
C)24
D)6
f(int b[ ],int n)
{
int i,r=1;
for(i=0;i<=n;i++)r=r*b[i];
return r;
}
main()
{
int x,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\\n",x);
}
答案:B
9.8 以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是
A)212
B)204
C)1a4
D)1a6
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\\n",p);
printf("%x\\n",p+9);
}
答案:D
9.9 以下程序的输出结果是
A)0987654321
B)4321098765
C)5678901234
D)0987651234
fun(int *s,int n1,int n2)
{
int i,j,t;
i=n1; j=n2;
while(i<j)
{
t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},*p=a,i;
fun(p,0,3); fun(p,4,9); fun(p,0,9);
for(i=0;i<10;i++)printf("%d",*(a+i));
}
答案: C
9.10 以下程序的输出结果是
A) 4 4
B) 2 2
C) 2 4
D) 4 6
main()
{ int a[5]={2,4,6,8,10},*p,**k;
p=a; k=&p;
printf("%d ",*(p++));
printf("%d\\n",**k);
}
答案: C
9.11 当运行以下程序时输入三行,每行都是在第一列上开始,<CR>代表Enter键:
a<CR>
b<CR>
cdef<CR>
则程序的输出结果是
A) abcdef
B) a
C) a
D) a
b b b
c cd cdef
d
e
f
#include "stdio.h"
#define N 6
main()
{ char c[N]; int i=0;
for(i=0;i<N;i++) c[i]=getchar();
for(i=0;i<N;i++) putchar(c[i]);
}
答案: C
9.12 若有定义和语句:
int c[4][5], (*cp)[5];cp=c;
则对c数组元素的引用正确的是
A) cp+1
B) *(cp+3)
C) *(cp+1)+3
D) *(cp+2)
答案: D
计算机二级C语言章节练习在线测试 | ||
第9章 | 数组 |
9.13 若已定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0];
则能正确表示数组元素a[1][2]的表达式是
A) *((*prt+1)[2]
B) *(*(p+5))
C) (*prt+1)+2
D)
*(*(a+1)+2)
答案: D
9.14 若有定义和语句:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p[4],i;
for(i=0;i<4;i++) p[i]=a[i];
则不能够正确表示a数组元素的表达式是
A) a[4][3]
B) p[0][0]
C) prt[2][2]
D)
(*(p+1))[1]
答案: A
9.15 以下程序的输出结果是
A) 23
B) 26
C) 33
D) 36
main()
{ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];
for(i=0; i<2; i++)
{ if(i==0)
aa[i][i+1]=*p+1;
else ++p;
printf("%d",*p);
}
printf("\\n");
}
答案: A
9.16 以下程序的输出结果是
A) 60
B) 68
C) 99
D) 108
main()
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4]=a,i,j,k=0;
for(i=0; i<3; i++)
for(j=0; j<2; j++)
k+=*(*(p+i)+j);
printf("%d\\n",k);
}
答案: A
9.17 以下程序的输出结果是
A) 1,5,9,
B) 1,4,7,
C) 3,5,7,
D) 3,6,9,
main()
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0; i<3; i++) printf("%d,",x[i][2-i]);
}
答案: C
9.18 若有定义语句 int (*p)[M]; 其中的标识符p是
A) M个指向整型变量的指针
B) 指向M个整型变量的函数指针
C) 一个指向具有M个整型元素的一维数组指针
D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型量
答案: C
计算机二级C语言章节练习在线测试 | ||
第9章 | 数组 |
二、填空题
9.19 若有以下定义:
double w[10];
则w数组元素下标的上限是____,下限是____。
答案: 9 0
9.20 以下程序的输出结果是____。
main()
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z;
for(y=0; y<3; y++)
z=(*(prt+y)<x)?*(prt+y):x;
printf("%d\\n",z);
}
答案:6
9.21 以下程序的输出结果是____。
main()
{ int arr[10],i,k=0;
for(i=0; i<10; i++) arr[i]=i;
for(i=0; i<4; i++) k+=arr[i]+i;
printf("%d\\n",k);
}
答案:12
9.22 以下程序的输出结果是____。
#define N 5
fun(char *s,char a,int n)
{ int j;
*s=a; j=n;
while(a<s[j]) j--;
return j;
}
main()
{ char s[N+1]; int k,p;
for(k=1; k<=N; k++) s[k]=\’\’\’\’A\’\’\’\’+k+1;
printf("%d\\n",fun(s,\’\’\’\’E\’\’\’\’,N));
}
答案:3
9.23 若输入3个整数3,2,1,则以下程序的输出结果是____.
void sub(int n,int uu[])
{ int t;
t=uu[n--]; t+=3*uu[n];
n++;
if(t>=10)
{ uu[n++]=t/10; uu[n]=t%10; }
else uu[n]=t;
}
main()
{ int i,n,aa[10]={0};
scanf("%d%d%d",&n,&aa[0],&aa[1]);
for(i=1; i<n; i++) sub(i,aa);
for(i=0; i<=n; i++) printf("%d",aa[i]);
printf("\\n");
}
答案: 2721
9.24 以下程序的输出结果是____.
main()
{ int i,j,row,col,m;
int arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=arr[0][0];
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(arr[i][j]<m)
{ m=arr[i][j]; row=i; col=j; }
printf("%d,%d,%d\\n",m,row,col);
}
答案: -850,2,0
9.25 以下findmax返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax(int s[],int t)
{ int k,p;
for(p=0,k=p; p<t; p++)
if(s[p]>s[k]) ____;
return ____;
}
答案: k=p k
9.26 以下程序统计从终端输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,
其它依次类推.用#号结束输入,请填空.
#include "stdio.h"
#include "ctype.h"
main()
{ int num[26]={0},i; char c;
while(____!=\’\’\’\’#\’\’\’\’)
if(isupper(c)) num[___]+=1;
for(i=0; i<26; i++)
if(num[i]) printf("%c: %d\\n",i+\’\’\’\’A\’\’\’\’,num[i]);
}
答案: (c=getchar()) c-\’\’\’\’A\’\’\’\’
计算机二级C语言章节练习在线测试 | ||
第9章 | 数组 |