练习题6及参考答案Word下载.docx
《练习题6及参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《练习题6及参考答案Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
![练习题6及参考答案Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/11/7125bad9-0e3e-47c5-9a37-e46ce571a132/7125bad9-0e3e-47c5-9a37-e46ce571a1321.gif)
A.a[g-c]
B.a[4]
C.a['
d'
-'
c'
]
D.a['
-c]
【答】D
(5)以下合法的数组定义是
A.inta[]="
string"
B.inta[5]={0,1,2,3,4,5};
C.chara="
D.chara[]={0,1,2,3,4,5};
(6)以下错误的字符串赋值或赋初值方式是
A.char*str;
str="
B.charstr[7]={'
s'
t'
r'
i'
n'
g'
C.charstr[10];
D.charstr1[]="
str2[]="
12345678"
stcpy(str2,strl);
(7)若有以下定义和语句,则输出结果是
char*sp="
\"
D:
\\ANI.WSP\"
printf("
%s"
sp);
A.字符串中有非法字符,输出值不定
B.\"
C."
\ANI.WSP"
D."
\\ANI.WSP"
(8)若有以下定义和语句,则输出结果是
chars[12]="
abook!
%d"
strlen(s));
A.12
B.8
C.7
D.6
(9)以下一维数组a的正确定义是
A.inta(10);
B.intn=10,a[n];
C.intn;
D.#defineSIZE10
scanf("
&
n);
inta[SIZE];
inta[n];
(10)以下正确的定义语句是
A.intA['
];
B.intA[3,4];
C.intA[][3];
D.intA[10];
(11)以下对一维数组a进行正确初始化的是
A.inta[10]=(0,0,0,0);
B.inta[10]={};
C.inta[]={0};
D.inta[10]={10*2};
(12)以下对二维数组a进行正确初始化的是
A.inta[2][3]={{1,2},{3,4},{5,6}};
B.inta[][3]={1,2,3,4,5,6};
C.inta[2][]={1,2,3,4,5,6};
D.inta[2][]={{1,2},{3,4}};
【答】B
(13)以下给字符数组a定义和赋值正确的是
A.charstr[10];
str={"
China"
B.charstr[]={"
strcpy(str,"
abcdefghijklmn"
D.charstr[10]={"
(14)在执行staticinta[][3]={{1,2},{3,4}};
语句后,a[1][3]的值是
A.3
B.4
C.0
D.2
(15)在定义inta[3][6];
后,第10个元素是
A.a[2][4]
B.a[1][3]
C.a[3][1]
D.a[4][2]
(16)在定义inta[3][4][2];
。
A.a[2][1][2]
B.a[1][0][1]
C.a[2][0][1]
D.a[2][2][1]
(17)以下程序的运行结果是
#include<
stdio.h>
string.h>
main()
{
chara[80]="
AB"
b[80]="
LMNP"
inti=0;
strcat(a,b);
while(a[i++]!
='
\0'
)b[i]=a[i];
puts(b);
}
A.LB
B.ABLMNP
C.AB
D.LBLMNP
【答】D
(18)以下程序的运行结果是
charstr[]="
SSSWLIA"
c;
intk;
for(k=2;
(c=str[k])!
k++)
{
switch(c)
case'
I'
:
++k;
break;
L'
continue;
default:
putchar(c);
}
putchar('
*'
A.SSW*
B.SW*
C.SW*A
D.SW
(19)以下程序的运行结果是
chara[]="
morning"
t;
inti,j=0;
for(i=1;
i<
7;
i++)
if(a[j]<
a[i])j=i;
t=a[j];
a[j]=a[7];
a[7]=a[j];
puts(a);
A.mogninr
B.mo
C.morning
D.mornin
2.填空题
(1)以下程序运行时输入LanguageProgramming↙,其结果是
charstr[30];
str);
str=%s\n"
【答】Language
(2)以下程序的运行结果是
charstr[]={"
1a2b3c"
inti;
for(i=0;
str[i]!
if(str[i]>
0'
&
str[i]<
9'
)
printf("
%c"
str[i]);
\n"
【答】123
(3)以下程序的运行结果是
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
=2;
s=s+a[i][i];
s=%d\n"
s);
【答】s=15
(4)以下程序的运行结果是
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=1;
s=s*a[i][i];
【答】s=45
(5)以下程序的运行结果是
inta[]={0,2,5,8,12,15,23,35,60,65};
intx=15,i,n=10,m;
i=n/2+1;
m=n/2;
while(m!
=0)
if(x<
a[i])
i=i-m/2-1;
m=m/2;
elseif(x>
i=i+m/2+1;
elsebreak;
place=%d"
i+1);
【答】place=6
(6)以下程序的运行结果是
inti,j,row=0,col=0,m;
staticinta[3][3]={1,-2,0,4,-5,6,2,4};
m=a[0][0];
for(i=0;
3;
for(j=0;
j<
j++)
if(a[i][j]<
m)
m=a[i][j];
row=i;
col=j;
a(%d,%d)=%d\n"
row,col,m);
【答】a(1,1)=-5
(7)以下程序的运行结果是
inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
第%d个元素(%d,%d)值是%d\n"
n,i,j,a[i][j]);
【答】第9个元素(1,3)值是-3
(8)以下程序的运行结果是
inta[4][5]={1,2,4,-4,5,-9,3};
intb=0,i,j,i1,j1,n=-9;
4;
for(j=0;
5;
if(a[i][j]==n)
i1=i;
j1=j;
b=1;
break;
if(b)
%d是第%d个元素\n"
n,i1*5+j1+1);
【答】-9是第6个元素
(9)以下程序的运行结果是____。
intarr[10],i,k=0;
10;
arr[i]=i;
k+=arr[i]+i;
%d\n"
k);
【答】12
(10)以下程序的功能是将字符串s中所有的空格字符删除。
请填空。
char*s="
ourteacherteachsClanguage"
inti,j;
for(i=j=0;
s[i]!
if(s[i]!
'
)
①
②
%s\n"
【答】①s[j++]=s[i]②s[j]='
3.编程题
(1)编写一个程序,将两个字符串合并成一个字符串。
【解】程序如下:
/*文件名:
exci6_1.cpp*/
VC++6.0
chars1[20],s2[20],s3[40];
inti,j;
字符串1:
gets(s1);
字符串2:
gets(s2);
s1[i]!
s3[i]=s1[i];
s2[j]!
s3[i+j]=s2[j];
s3[i+j]='
合并字符串:
s3);
(2)编写一个程序,将一个子字符串插入到主字符串中指定位置。
exci6_2.cpp*/
intn,i,j,k;
主字符串:
gets(s1);
子字符串:
gets(s2);
起始位置:
scanf("
n;
i=%d,j=%d\n"
i,j);
for(k=n;
s1[k]!
s3[j+k]=s1[k];
s3[j+k]='
结果字符串:
(3)编写一个程序,输出一个字符串的逆转串。
exci6_3.cpp*/
chars1[20],s2[20];
字符串:
s1);
i++);
/*求出字符串s1的长度i*/
s1[j]!
s2[i-j-1]=s1[j];
s2[i]='
逆转串:
s2);
(4)编写一个程序,判定一个字符串是否是另一个字符串的子串。
exci6_4.cpp*/
inti,j,k,index;
index=0;
s1[i];
for(j=i,k=0;
s1[j]==s2[k];
j++,k++)
if(!
s2[k+1])
index=i;
if(index!
位置=%d\n"
index);
(5)编写一个程序,计算一个字符串中子串出现的次数。
exci6_5.cpp*/
inti,j,k,count=0;
count++;
出现次数=%d\n"
count);
(6)编写一个程序,将用户输入的正十进制数转换成某一进制base(base≤16)的数输出。
【解】采用辗转相除法进行进制之间的相互转换,将结果存储在一维数组num中,最后显示该数组即为所得。
程序如下:
exci6_6.cpp*/
inti=0,base,n,j,num[20];
输入正十进制整数:
输入要转换的进制:
base);
do
i++;
num[i]=n%base;
n=n/base;
}while(n!
=0);
转换的结果:
for(j=i;
j>
=1;
j--)
if(num[j]<
10)
num[j]);
else
A'
+num[j]-10);
(7)编写一个程序,计算两个3×
4阶矩阵相加,并打印出结果。
【解】使用两个二维数组a和b存储两个3×
4阶矩阵的元素值,然后用两重for循环进行相加求值产生二维数组c,最后输出c的各元素值。
exci6_7.cpp*/
inta[3][4]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}};
intb[3][4]={{-2,3,0,-1},{1,0,-2,3},{-2,0,1,-3}};
inti,j,c[3][4];
c[i][j]=a[i][j]+b[i][j];
i++)
/*输出结果*/
%d"
c[i][j]);
(8)编写一