单元6 拓展训练答案.docx
《单元6 拓展训练答案.docx》由会员分享,可在线阅读,更多相关《单元6 拓展训练答案.docx(19页珍藏版)》请在冰豆网上搜索。
单元6拓展训练答案
单元6拓展训练答案
一、单项选择题
1.下列描述中不正确的是(C)。
A.字符型数组中可以存放字符串
B.可以对字符型数组进行整体输入、输出
C.可以对整型数组进行整体输入、输出
D.不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
2.设有数组定义:
chararray[]="China";则数组array所占的空间为(C)。
A.4个字节B.5个字节C.6个字节D.7个字节
3.设有程序段:
#defineN3#defineMN+2floata[M][N];则数组a的元素个数和最后一个元素分别是(D)。
A.15,a[5][3]B.15,a[3][5]C.8,a[4][2]D.15,a[4][2]
4.设有定义:
inta[][3]={{1,2,3},{4,5,6},{7,8,9}};则a[1][2]的初值为(C)。
A.2B.4C.6D.8
5.以下数组定义中,不正确的是(B)。
A.intb[3][4];
B.intc[3][]={{1,2},{1,2,3},{4,5,6,7}};
C.intb[200][100]={0};
D.intc[][3]={{1,2,3},{4,5,6}};
6.以下数组定义中正确的是(D)。
A.floatf[3,4];B.inta[][4];
C.charc(3);D.doubled[3+2][4];
7.定义数组:
intx[2][3];则数组x的维数是(B)。
A.1B.2C.3D.6
8.以下程序执行输出结果是(A)。
#include
intmain()
{
intn[5]={0,0,0},i,k=2;
for(i=0;in[i]=n[i]+1;
printf("%d\n",n[k]);
return0;
}
A.0B.1C.不确定D.2
9.若有以下的定义:
intt[3][2];能正确表示t数组元素地址的表达式是(D)。
A.&t[3][2]B.t[3]C.t[1][2]D.t[2]
10.以下程序执行后输出的结果是(A)。
#include
intmain()
{
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);
return0;
}
A.18B.19C.20D.21
11.以下程序执行后输出的结果是(C)。
#include
intmain()
{
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]);
return0;
}
A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,
12.以下程序执行后输出的结果是(B)。
#include
intmain()
{
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);
return0;
}
A.20B.21C.22D.23
13.以下程序执行后输出的结果是(B)。
#include
intmain()
{
charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",w[k]);
return0;
}
A.ABCDB.ABCDC.EFGD.EFG
FGHFGHJKIJKL
KLIJ
14.以下程序执行后输出的结果是(C)。
#include
intmain()
{
charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
return0;
}
A.AAAAB.BBBC."BBB"D."BBBCC"
15.若有以下的定义:
intaa[8];不能代表数组元素aa[1]的地址的是(C)。
A.&aa[0]+1B.&aa[1]C.&aa[0]++D.aa+1
16.以下不能正确进行字符串赋初值的语句是(A)。
A.charstr[5]="good!
";B.charstr[]="good!
";
C.char*str="good!
";D.charstr[5]={'g','o','o','d'};
17.以下程序执行后输出的结果是(B)。
#include
intmain()
{
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);
return0;
}
A.3B.4C.1D.9
18.以下程序运行后的输出结果是(B)。
#include
#include
intmain()
{
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");
return0;
}
A.abcabcabc;B.abcbcc
C.bcabcbc;D.abcbcbc;
19.以下程序是(D)。
#include
#include
intmain()
{
inti;
charstr[10],temp[10];
gets(temp);
for(i=0;i<4;i++)
{
gets(str);
if(strcmp(temp,str)>0)
strcpy(temp,str);
}
printf("%s\n",temp);
return0;
}
A.升序排序B.降序排序
C.求最大串D.求最小串
20.以下程序运行后输入串bcdafgeaabbce(此处代表回车符),则输出结果是(A)。
#include
#include
#defineN5
voidsort(chara[N][20],charstr[100])
{
inti,j;
chartemp[20];
for(i=0;i{
for(j=0;jif(strcmp(a[j],a[j+1])>0)
{
strcpy(temp,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],temp);
}
strcat(str,a[N-1-i]);
strcat(str,"");
}
strcat(str,a[0]);
}
intmain()
{
chara[N][20],str[100]={0};
inti;
for(i=0;i{
gets(a[i]);
}
sort(a,str);
printf("str:
%s",str);
return0;
}
A.eabcebcdafgabB.abafgbcdbceea
C.bcdafgeaabbceD.abbceafgbceea
二、程序填空题
1.下列程序中,函数fun()的功能是:
使数组中的元素的值增加10倍,请填空。
#include
voidfun(inta[])
{
intj;
printf("\nInsubfuncaftercalling\n");
for(j=0;j<10;j++)
{
a[j]=a[j]*10;
printf("%3d",a[j]);
}
}
intmain()
{
inti,m[10];
printf("\nInmainbeforecalling\n");
for(i=0;i<10;i++)
{
m[i]=i;
printf("%3d",m[i]);
}
fun(m);
printf("\nInmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
printf("\n");
return0;
}
2.将用户输入的十进制数转换成任意进制的数。
思路:
进制之间转换采用求余法。
由用户输入十进制数(用变量n表示),以及要转换的进制(用变量base表示),然后将转换的结果存储在一维数组num[32]中。
程序如下,请填空。
#include
voidconv(intnum[],intbase,intn)
{
inti=0,j;
charc;
do
{
num[i]=n%base;
n=n/base;
i++;
}while(n!
=0);
printf("\n");
printf("Answeris:
");
for(j=i-1;j>=0;j--)
{
if(num[j]<10)printf("%d",num[j]);
else
{
c='A'+num[j]-10;
printf("%c",c);
}
}
}
intmain()
{
intbase,num[32];
intn;
printf("Inputnum:
");
scanf("%d",&n);
printf("Inputbase:
");
scanf("%d",&base);
conv(num,base,n);
return0;
}
3.以下程序的功能是将字符串s中的数字字符放入d中并输出。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
#include
#include
voidfun(chars[80],chard[80])
{
inti,j;
for(i=j=0;s[i]!
='\0';i++)
{
if(s[i]>='0'&&s[i]<='9')
{
d[j]=s[i];j++;
}
}
d[j]='\0';
}
intmain()
{
chars[80],d[80];
gets(s);
fun(s,d);
puts(d);
return0;
}
三、程序阅读题
1.以下程序运行后的输出结果是(520)。
#include
#include
intmain()
{
charst[20]={"hello\0\t\\\""};
printf("%d%d\n",strlen(st),sizeof(st));
return0;
}
2.以下程序运行后的输出结果是(123789104561112)。
#include
voidfun(int*w,intn,intm)
{
inti,j,a;i=n;j=m;
while(i{
a=w[i];
w[i]=w[j];
w[j]=a;
i++;
j--;
}
}
intmain()
{
inti,a[]={1,2,3,4,5,6,7,8,9,10,11,12};
fun(a,3,5);fun(a,6,9);fun(a,3,9);
for(i=0;i<12;i++)
printf("%3d",a[i]);
return0;
}
四、程序设计题
1.求输入任意10个整数中的正数之和及个数。
程序代码:
#include
voidcount(inta[])
{
inti,n=0,s=0;
for(i=0;i<10;i++)
{
if(a[i]>0)
{
n++;s+=a[i];
}
}
printf("正数有%d个,正数之和为:
%d\n",n,s);
}
intmain()
{
inta[10],i;
printf("请输入10个整数:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
count(a);
return0;
}
2.求二维数组MxN周边元素之和。
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
inti,s=0;
for(i=0;is=s+a[0][i]+a[M-1][i];
for(i=1;is=s+a[i][0]+a[i][N-1];
returns;
}
intmain()
{
intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};
inti,j,y;
printf("原始数组为:
\n");
for(i=0;i{
for(j=0;jprintf("%3d",aa[i][j]);
printf("\n");
}
y=fun(aa);
printf("\n周边元素之和为:
%d\n\n",y);
return0;
}
3.对二维数组NxN,使数组左下半三角元素中的值全部置成0。
程序代码:
#include
#include
#defineN9
intfun(inta[][N])
{
inti,j;
for(i=0;ifor(j=0;j<=i;j++)
a[i][j]=0;
return0;
}
intmain()
{
inta[N][N],i,j;
printf("原始数组为:
\n");
for(i=0;i{
for(j=0;j{
a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("结果数组为:
\n");
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
return0;
}
4.输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c,如果找不到则输出“没有找到!
”;若找到则输出字符串S中从c开始的所有字符。
#include
#include
intcmpout(charstr[],charch);
intmain()
{
charstr[80],ch;
printf("请输入一个字符串:
\n");
gets(str);
printf("请输入一个要查找的字符:
\n");
scanf("%c",&ch);
cmpout(str,ch);
return0;
}
intcmpout(charstr[],charch)
{
unsignedintt,i,flag=0;
for(i=0;i{//从字符串第一个字符到最后一个字符(不是'\0')循环查找
if(str[i]==ch)
{//如果找到测用t记录下标,并使flag=1结束循环
t=i;
flag=1;
break;
}
}
if(flag==1)
for(i=t;iprintf("%c",str[i]);
else
printf("没有找到!
");
printf("\n");
return0;
}
5.输入一个不超过5位的整数,输出其中文大写形式。
如输入:
52001,则输出:
伍万贰千零壹。
#include"stdio.h"
#include"string.h"
intwrite(chara[])
{
charb[][3]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾"};
charc[][5]={"","十","百","千","万"};
inti,l,t;
i=0;
l=strlen(a)-1;
while(a[i])
{
t=a[i]-'0';
if(t)
{
printf("%s",b[t]);
printf("%s",c[l]);
}
else
if(a[i+1]!
='0'&&a[i+1]!
='\0')
printf("%s",b[t]);
l--;
i++;
}
printf("\n");
return0;
}
intmain()
{
chara[20];
printf("请输入一个不超过5位的整数:
");
gets(a);
printf("其中文大写为:
");
write(a);
return0;
}