C语言程序设计习题参考答案第四章(数组)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章数组参考答案
一、选择题: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
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
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
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=a[i][j]; s=i; t=j; } printf("min=%d,s=%d,t=%d\n",min,s,t); } 4、编一程序,将两个字符串连接起来,不要用strcat函数。 #include 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 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 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]); } }