C语言第五章习题带答案Word文件下载.docx
《C语言第五章习题带答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言第五章习题带答案Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
![C语言第五章习题带答案Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/22/5be1dc58-2c26-47b0-93a4-d3177c9ea8a6/5be1dc58-2c26-47b0-93a4-d3177c9ea8a61.gif)
inta[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.因为数组长度与初值的个数不相同,所以此语句不正确
二、填空题
6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:
34543和1234321都是回文数。
例如:
满足题意要求的数有:
N=1,11*11=121;
N=111,111*111=12321。
#include<
>
main()
{intm[16],n,i,t,count=0;
longa,k;
printf("
Resultis:
\n"
);
for(n=10;
n<
200;
n++)
{k=0;
t=1;
a=n*n;
for(i=1;
a!
=0;
i++)
{①;
a/=10;
}
for(;
i>
1;
i--)
{k+=m[i-1]*t;
②;
if(③)printf("
%2d:
%10d%10d\n"
++count,n,n*n);
}
}
则①为(m[i]=a%10;
)、②为(t*=10;
)、③为(k==n*n)。
7.设数组a包括10个整型元素。
下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
则①是(i=1)、②是(b[i]=a[i-1]+a[i];
)、③是(i%3)。
{inta[10],b[10],i;
for(i=0;
i<
10;
scanf("
a[i]);
for(①;
i++)②
for(i=1;
{printf("
%3d"
b[i]);
if(③==0)printf("
8.下面程序用“顺序查找法”查找数组a中是否存在某一关键字。
则①是(break;
)、②是(i==8)。
{inta[8]={25,57,48,37,12,92,86,33};
inti,x;
scanf("
x);
8;
if(x==a[i])
{printf("
Found!
Theindexis:
%d\n"
i+1);
①;
if(②)printf("
Can'
tfound!
"
三、读程序,写结果
9.若有以下输入(<
CR>
代表回车),则下面程序的运行结果是(SearchSuccessful!
5)。
52<
{inta[8]={6,12,18,42,44,52,67,94};
intlow=0,mid,high=7,found,x;
found=0;
while((low<
=high)&
&
(found==0))
{mid=(low+high)/2;
if(x>
a[mid])low=mid+1;
elseif(x<
a[mid])high=mid-1;
else{found=1;
break;
if(found==1)printf("
SearchSuccessful!
mid);
elseprintf("
tsearch!
练习5-2答案
1.已知:
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
,则下面语句的输出结果是(C)。
for(i=0;
3;
i++)printf("
x[i][2-i]);
A.159B.147C.357D.369
2.以下对二维数组a的正确说明是(C)。
A.inta[3][];
B.floata(3,4);
C.doublea[1][4];
D.floata(3)(4);
inta[3][4];
,则对数组元素引用正确的是(C)。
A.a[2][4]B.a[1,3]C.a[1+1][0]D.a
(2)
(1)
4.已知:
,则对数组元素的非法引用是(D)。
A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]
5.以下能对二维数组a进行正确赋初值的语句是(B)。
A.inta[2][]={{1,0,1},{5,2,3}};
B.inta[][3]={{1,2,3},{4,5,6}};
C.inta[2][4]={{1,2,3},{4,5},{6}};
D.inta[][3]={{1,0,1},{},{1,1}};
6.以下不能对二维数组a进行正确赋初值的语句是(C)。
A.inta[2][3]={0};
B.inta[][3]={{1,2},{0}};
C.inta[2][3]={{1,2},{3,4},{5,6}};
D.inta[][3]={1,2,3,4,5,6};
7.已知:
inta[3][4]={0};
,则下面正确的叙述是(D)。
A.只有元素a[0][0]可得到初值0
B.此说明语句是错误的
C.数组a中每个元素都可得到初值,但其值不一定为0
D.数组a中每个元素均可得到初值0
8.若有说明:
inta[][3]={1,2,3,4,5,6,7};
,则a数组第一维的大小是(B)。
A.2B.3C.4D.无确定值
9.若二维数组a有m列,则在a[i][j]前的元素个数为(B)。
A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1
10.下面的程序是求出数组a矩阵的两条对角线上的元素之和,则①是(j=2)、②是(j>
=0或j>
-1)。
{inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
for(j=0;
j<
j++)
if(i==j)sum1=sum1+a[i][j];
for(①;
②;
j--)
if(i+j==2)sum2=sum2+a[i][j];
sum1=%d,sum2=%d\n"
sum1,sum2);
11.从键盘上输入若干(不超过1000个)学生的成绩,计算出平均成绩,并输出低于平均分的学生的成绩,用输入负数结束输入。
则①是(a)、②是(a)、③是(sum/n)、④是(x[i]<
ave)。
{floatx[1000],sum=0,ave,a;
intn=0,i;
Entermark:
"
%f"
a);
while(a>
0&
n<
1000)
{sum+=①;
x[n]=②;
n++;
ave=③;
Output:
ave=%f\n"
ave);
n;
if(④)printf("
%f\n"
x[i]);
12.下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空,①是(j<
=2或j<
3)、②是(b[j][i]=a[i][j];
)、③是(i<
=2或i<
3)。
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
arraya:
<
i<
=1;
{for(j=0;
①;
%5d"
a[i][j]);
printf("
arrayb:
③;
j++)printf("
b[i][j]);
13.下面程序的功能是检查二维数组是否对称(即:
对所有i和j都有a[i][j]=a[j][i])。
请填空,①是(i=j+1注i值赋为0…j+1皆可,赋为j+1效率最高)、②是(found=1)。
{inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
inti,j,found=0;
for(j=0;
4;
for(①;
if(a[j][i]!
=a[i][j])
{②;
if(found)printf("
No"
Yes"
练习5-3答案
1.为了判断两个字符串s1和s2是否相等,应当使用(D)。
A.if(s1==s2)B.if(s1=s2)
C.if(strcpy(s1,s2))D.if(strcmpy(s1,s2)==0)
2.调用strlen("
abcd\0ef\0g"
)的返回值是(A)。
A.4B.5C.8D.9
charstr1[10],str2[10]={"
books"
,则在程序中能够将字符串"
赋给数组str1的正确语句是(B)。
A.str1={"
B.strcpy(str1,str2);
C.str1=str2;
D.strcpy(str2,str1);
4.下面程序段的运行结果是(B)。
(注:
□代表空格)
charc[5]={'
a'
b'
\0'
c'
printf("
%s"
c);
A.'
'
B.abC.ab□cD.ab□
5.下面程序段的运行结果是(D)。
chara[7]="
abcdef"
charb[4]="
ABC"
strcpy(a,b);
%c"
a[5]);
A.□B.\0C.eD.f
6.以下程序是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不同字符的ASCII码之差。
输入的两个字符串分别为"
abcdefg"
和"
abceef"
,则第一个不同字符为'
d'
和'
e'
,输出为-1.请填空,①是('
)、②是(str1[i]-str2[i])。
{charstr1[100],str2[100],c;
inti,s;
Enterstring1:
gets(str1);
Enterstring2:
gets(str2);
i=0;
while((str1[i]==str2[i]&
str1[i]!
=①))i++;
s=②;
s);
7.下面程序的功能是在三个字符串中找出最小的。
请填空,①是(strcmp(str[0],str[1])<
0str[0]:
str[1])、②是(s)。
或①是(str[0])、②是(strcmp(s,str[1])<
0s:
str[1])。
。
{chars[20],str[3][20];
inti;
i++)gets(str[i]);
strcpy(s,①);
if(strcmp(str[2],s)<
0)strcpy(s,str[2]);
%s\n"
②);
8.下面程序的功能是在任意的字符串a中将与字符'
相等的所有元素的下标值分别存放在整型数组b中,请填空,①是(a[i]=='
)、②是(k++)。
{chara[80];
inti,b[80],k=0;
gets(a);
a[i]!
='
if(①){b[k]=i;
k;
9.当运行以下程序时,从键盘输入:
AhaMA□Aha<
(□代表空格,<
代表回车),则下面程序的运行结果是(ahAMa)。
{chars[80],c='
inti=0;
while(s[i]!
)
{if(s[i]==c)s[i]=s[i]-32;
elseif(s[i]==c-32)s[i]=s[i]+32;
i++;
puts(s);
10.下面程序的运行结果是(SW*)。
{charstr[]="
SSSWLIA"
c;
intk;
for(k=2;
(c=str[k])!
k++)
{switch(c)
{case'
I'
:
++k;
case'
L'
continue;
default:
putchar(c);
putchar('
*'
11.下面程序段的运行结果是(600)。
charch[]="
600"
inta,s=0;
for(a=0;
ch[a]>
ch[a]<
9'
a++)s=10*s+ch[a]-'