第四章数组参考答案
一、选择题:1、 B 2、C 3、D 4、C 5、C 6、B 7、D 8、B 9、B 10、A
二、填空题:
1、首地址
2、按行存放
3、一个字符
4、′\0′
5、字符数组名或字符串
6、9 0
7、6
8、j-1 str[j-1]
9、62 10、s1[i]=s2[i];
三、改错题
1、错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18};
正确语句:int a[ ][3]={2,4,6,8,10,12,14,16,18};
2、错误语句:if (str[2]>string) string=str[2];
正确语句:if (strcmp(str[2],string)>0) strcpy(string,str[2]);
3、错误语句:char c[5]={'C','h ','i','n','a '};
正确语句:char c[6]={'C','h ','i','n','a '};或char c[ ]={“China”};
4、错误语句:int a[3]={3*0} ;
正确语句:int a[4];
5、错误语句:scanf(“%d%d%d”,&a);
正确语句:for (i=0; i<3; i++) scanf(“%d”,&a[i]);
或scanf(“%d%d%d”, &a[0], &a[1], &a[2]);
四、编程题
1、用数组来处理,求解Fibonacci数列前40项:1,1,2,3,5,8,13,21…。
#include<stdio.h>
void main()
{
int i;
int t[40]={1,1};
for(i=2;i<40;i++)
t[i]=t[i-2]+t[i-1];
for(i=0;i<40;i++)
{
if(i%5==0) printf("\n");
printf("%15d",t[i]);
}
}
2、用选择法对20个整数排序(由大到小)。
#include<stdio.h>
void main()
{int i,j,min,t,x[20];
for(i=0;i<20;i++)
scanf("%d",&x[i]);
for(i=0;i<19;i++)
{min=i;
for(j=i+1;j<20;j++)
if(x[min]>x[j])min=j;
t=x[i];
x[i]=x[min];
x[min]=t;
}
for(i=0;i<20;i++)
printf("%6d",x[i]);
}
3、有一个3×5的矩阵,要求编程序求出其中值最小的那个元素的值,以及其所在的行号和列号。
#include<stdio.h>
void main()
{
int i,j,s=0,t=0,min;
int a[3][5];
for (i=0;i<3;i++)
for (j=0;j<5;j++)
scanf("%d", &a[i][j]);
min=a[0][0];
for (i=0;i<3;i++)
for (j=0;j<5;j++)
if (a[i][j]<min)
{min=a[i][j];
s=i;
t=j;
}
printf("min=%d,s=%d,t=%d\n",min,s,t);
}
4、编一程序,将两个字符串连接起来,不要用strcat函数。
#include<stdio.h>
void main()
{char str1[80],str2[20];
int i=0,j=0;
scanf("%s",str1);
scanf("%s",str2);
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
while(str1[i]!='\0')i++;
while(str2[j]!='\0')
{str1[i]=str2[j];
i++;
j++;}
str1[i]='\0';
printf("%s\n",str1);
}
5、求一个5×5矩阵对角线元素之和(左上至右下之对角线)。
#include<stdio.h>
void main( )
{float a[5][5],sum=0;
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%f",&a[i][j]);
for(i=0;i<5;i++)
sum=sum+a[i][i];
printf("sum=%f",sum);
}
6、编一程序,求数列的前10项:1,5,14,30…,即 f[1]=1;…;f[i]=f[i-1]+i*i。
#include<stdio.h>
void main()
{
int i;
long f[10]={0};
for(i=1;i<10;i++)
f[i]=f[i-1]+i*i;
for(i=1;i<10;i++)
{
if(i%5==0) printf("\n");
printf("%15d",f[i]);
}
}。