第6章 数组答案.docx
《第6章 数组答案.docx》由会员分享,可在线阅读,更多相关《第6章 数组答案.docx(17页珍藏版)》请在冰豆网上搜索。
第6章数组答案
第6章数组
一、选择题
1、以下错误的定义语句是(C)
A)intx[][3]={{0},{1},{1,2,3}};
B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)intx[][3]={1,2,3,4};
2、若有定义:
inta[2][3];以下选项中对a数组元素正确引用的是(D)
A)a[2][!
1]B)a[2][3]C)a[0][3]D)a[1>2][!
1]
3、以下能正确定义一维数组的选项是(B)。
A)intnum(5*2);B)intnum[5*2];C)intlong[10];D)intnum(10);
4、以下能正确定义一维数组的选项是(B)。
A)intnum[];
B)#defineN100
intnum[N];
C)intnum[0..100];
D)intN=100;
intnum[N];
5、以下选项中正确的语句组是(D)
A)chars[];s=”BOOK!
”B)char*s;s={“BOOK!
”};
C)chars[10];s=”BOOK!
”D)char*s;s=”BOOK!
”;
6、若以下说明,则数值为4的表达式是(D)。
inta[12]={1,2,3,4,5,6,7,8,9,10};
charc=’a’,d,g;
A)a[g-c]B)a[4]C)a[‘d’-‘c’]D)a[‘d’-c]
7、以下程序的输出结果是(C)。
main()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A)258B)741C)852D)369
8、有以下程序,程序运行后的输出结果是(D)。
main()
{
inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf(“%d\n”,k);
}
A)60B)61C)62D)63
9、有如下程序
main()
{intn[5]={0,0,0},i,k=2;
for(i=0;iprintf(“%d\n”,n[k]);
}
该程序的输出结果是(D)。
A)不确定的值B)2C)1D)0
10、以下程序的输出结果是(A)。
main()
{
inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A)0650B)1470C)5430D)输出值不定
11、有以下程序,执行后输出结果是(C)。
main()
{
intm[][3]={1,4,7,2,5,8,3,6,9};
inti,j,k=2;
for(i=0;i<3;i++)
printf("%d",m[k][i]);
}
A)456B)258C)369D)789
12、以下程序的输出结果是(A)。
A)18B)19C)20D)21
main()
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf(“%d\n”,s);
}
13、以下程序的输出结果是(C)。
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2-i]);
}
A)1,5,9,B)1,4,7,C)3,5,7,D)3,6,9,
14、有以下程序,执行后输出的结果是(D)。
main()
{
intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2)
{k=k+p[i];
i++;
}
printf("%d\n",k);
}
A)58B)56C)45D)24
15、有以下程序
main()
{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf("%d",c[i]);
printf("\n");
}
程序的运行结果是(C)
A)1234B)2344C)4332D)1123
16、有以下程序
main()
{
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是(B)
A)42B)45C)56D)60
17、当执行下列程序时,如果输入ABC,则输出结果是(A)。
main()
{
charss[10]=”12345”;
gets(ss);strcat(ss,”6789”);
printf(“%s\n”,ss);
}
A)ABC6789B)ABC67C)12345ABC6D)ABC45678
18、有以下程序,程序运行后的输出结果是(A)。
main()
{
chararr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A)you&meB)youC)meD)err
19、有以下程序,程序运行后的输出结果是(A)。
main()
{
inta[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++)
{
a[i][j]=i+j;
if(i=j)
sum=sum+a[i][j];
}
printf(“sum=%d”,sum);
}
A)sum=26B)sum=1C)sum=6D)sum=25
20、有以下程序,程序运行后的输出结果是(A)。
main()
{chars[10]=”12134211”;
intv[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{
switch(s[k])
{
case‘1’:
i=0;break;
case‘2’:
i=1;break;
case‘3’:
i=2;break;
case‘4’:
i=3;break;
}
v[i]++;
}
for(k=0;k<4;k++)
printf(“%d”,v[k]);
}
A)4211B)0008C)4678D)8888
21、以下程序的输出结果是(B)。
main()
{
charst[20]="hello\0\t\\";
printf("%d%d\n",strlen(st),sizeof(st));
}
A)99B)520C)1320D)2020
22、以下程序的输出结果是(D)。
main()
{
intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A)3B)2C)7D)4
23、以下程序的输出结果是(B)
main()
{charcf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"
24、若有定义语句:
chars[10]=”1234567\0\0”;则strlen(s)的值是(A)
A)7B)8C)9D)10
25、有以下程序
voidfun(inta,intb)
{
intt;
t=a;a=b;b=t;
}
main()
{
intc[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2)fun(c[i],c[i+1]);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序的运行结果是(A)
A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,
26、有以下程序
voidf(charp[][10],intn)/*字符串从小到大排序*/
{
chart[10];inti,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[i],t);}
}
main()
{
charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}程序运行后的输出结果是(D)
A)2 B)4 C)6 D)3
27、有以下程序
main(){
charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcat(p,r);strcpy(p+strlen(q),q);
printf("%d\n",sizeof(p));
}
程序运行后的输出结果是(C)
A)9 B)6 C)20 D)7
28、有以下程序
#defineN20
fun(inta[],intn,intm){
inti,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main(){
inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)
printf("%d",a[i]);
}
程序运行后的输出结果是(C)。
A)10234
B)12344
C)12334
D)12234
29、有以下程序
intf(intb[][4])
{inti,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[i][j];
}
returns;
}
main()
{inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));
}
执行后的输出结果是(D)。
A)12 B)11 C)18 D)16
30、有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a);swap2(b[0],b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);
}
其输出结果是(B)。
A)5353 B)5335 C)3535 D)3553
二、程序阅读题
1、有以下程序
main()
{
chars[]="abcde";
s[0]+=2;
printf("%d\n",s[0]);
}
执行后的结果是99。
2、有以下程序
main()
{
intx[3][2]={0},i;
for(i=0;i<3;i++)scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:
246<回车>,则输出结果为204。
3、有以下程序
main()
{
inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);
}
程序的执行后的输出结果是357。
4、以下程序的输出结果是30。
main()
{inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];
printf(“%d\n”,s);
}
5、有以下程序
voidsum(inta[])
{a[0]=a[-1]+a[1];}
main()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
程序运行后的输出结果是6。
6、以下程序的输出结果是abc。
main()
{
chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
7、下列程序的输出结果是CDABC。
main()
{
charb[30];
strcpy(&b[0],”CH”);
strcpy(&b[1],”DEF”);
strcpy(&b[2],”ABC”);
printf(“%s\n”,b);
}
8、有以下程序
main()
{
charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));
};
程序运行后的输出结果是34。
9、有以下程序
voidfun(int*s,intnl,intn2)
{inti,j,t;
i=nl;j=n2;
while(i}
main()
{
inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);
fun(a,4,9);
fun(a,0,9);
for(k=0;k<10;k++)printf(“%d”,a[k]);
printf(“\n”);
}
程序运行的结果是5678901234
10、以下程序运行后的输出结果是abcbcc
main()
{
charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
三、程序填空题
1、以下程序的功能是:
求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。
请填空。
main()
{
intx[10],a[9],i;
for(i=0;i<10;i++)scanf(“%d”,&x[i]);
for(i=1;i<10;i++)
a[i-1]=x[i]+x[i-1] ;
for(i=0;i<9;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
2、若已定义:
inta[10],i;,以下fun函数的功能是:
在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。
请填空。
fun(inta[])
{inti;
for(i=1;i<=10;i++)a[i-1]=i;
for(i=0;i<5;i++)a[4-i]=a[i];
}
3、程序的功能是使一个字符串按逆序存放,请填空。
main()
{
charstr[]={“abcdefghijl”},m;
inti,j;
for(i=0,j=strlen(str);i{m=str[i];
str[i]=str[9-i];
str[j-1]=m;
}
printf(“%s\n”,str);
}
4、用冒泡法对10个数据进行排序,请填空,让程序能正确运行。
main()
{
inta[11],i,j,t;
printf(“input10numbers:
\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
for(j=1;j<10;j++)
for(i=1;i<10-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(“thesortednumbers:
\n”);
for(i=1;i<10;i++)
printf(“%d”,a[i]);
}
5、矩阵转置,请填空,让程序能正确运行。
main()
{
inta[2][3]={1,2,3,4,5,6};
intb[3][2],i,j;
printf(“arraya:
\n”);
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
_b[j][i]=a[i][j];
printf(“%5d”,a[i][j]);}
printf(“\n”);
}
printf(“arrayb:
\n”);
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf(“%5d”,b[i][j]);
__printf(“\n”);_
}
}
6、函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1
11
121
1331
14641.
其构成规律是:
(1)第0列元素和主对角线元素均为1
(2)其余元素为其左上方和正上方元素之和
(3)数据的个数每行递增1
请将程序补充完整。
#defineN6
voidyanghui(intx[N][N])
{inti,j;
x[0][0]=1;
for(i=1;i{x[i][0]=x[i][i]=1;
for(j=1;j
x[i][j]=x[i-1][j-1]+x[i-1][j];
}
}
7、程序的功能是:
例如输入字符串:
abc123edf456gh,执行程序后输出:
123456,即将字符串中的数字字符输出。
请填空。
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!
='\0';i++)
if(s[i]>=’0’&&s[i]<=’9’){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
8、若有定义语句:
chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现字符串拷贝。
(注:
不得使用逗号表达式)
while(s[i]){d[j]=s[i++];j++;}
d[j]=0;
9、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!
='\0';i++)
if(s[i]>=’0’&&s[i]<=’9’){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
10、下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
请填空。
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j=j+2)
if(_a[i]>a[j]_)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
printf("\n");
}
四、程序编程题
(1)编程实现:
给定大小为10的int型一维数组a,要求先输入10个数存入a中,再分别输出该数组中值为奇数的元素个数和值为偶数的元素个数。
(2)从键盘输入一个数,查找该数在一个给定的数组中出现的次数,并打印出现的位置(即下标)。
(3)有一个整型数组a[10],它的初值分别是:
6,5,9,3,8,1,0,4,2和7。
要求编写程序,将数组的值按升序排列。
(4)删除字符串中出现的数字。
比如:
输入字符串“a1b2c333d56ef”,处理完后输出为“abcdef”