2012年自考“高级语言程序设计”经典习题及答案(17)
4.说明下列程序的功能。
main()
{ int i,j ;
float a[3][3],b[3][3],c[3][3],x;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ scanf(“%f”, &x); a[j]= x;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{scanf(“%f”,&x);b[j]=x;
}
for(i=0; i<3; i++)
for(j=0;j<3;j++)
c[j]=a[j]+ b[j] ;
for(i=0; i<3;i++)
{ printf(“n”);
for(j=0;j<3;j++)
printf(“%f”, c[j]);
}
printf(“n”);
}
“解”程序第一段的功能是按行顺序输入数组a 的元素。程序第二段的功能是按行顺序输入数组b的元素。程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。最后,按行顺序输出数组C的全部元素。
4.4 程序设计题
1.编程序,输入单精度型一维数组 a[10] ,计算并输出 a数组中所有元素的平均值。
“解”为了计算数组元素的平均值,首先要累计它的全部元素的和,然后除以数组元素的个数,即得数组元素的平均值。写成C程序如下:
# include
main()
{ int i, n=10;
float s,a[10] ;
printf(“Enter %d numbers! n”, n);
for( i=0;i< n; i++)
{ scanf(“%f”,&s); a= s;
}
for(s=0.0,i=0;i
s+= a ;
s /=n;
printf(“平均值是%.2fn”, s);
}
2.编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。
“解”将数组的元素逆序重新存放,就是将数组的首尾对应元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的数组元素。开始时,i的值为0,j的值为末元素的下标。每次交换后,i增1,j减1.继续交换的
条件是i
# include
main()
{ int a[10], i,j,t,n=10;
printf(“Enter %d numbers! n”, n);
for(i=0;i
scanf(“%d”,&a );
for(i=0,j=n-1;i
t= a; a=a[j] ;a[j] =t;
}
for(i=0; i
printf(“%dt”, a);
printf(“n”);
}
3.编程序,输入两个字符串(<40个字符) ,连接后输出(不准用系统函数) .
“解”将字符串s2连接到字符串s1的计算过程可分两个步骤完成。首先找到字符串s1的末尾,然后参照字符串s2,将字符串s2的全部有效字符逐一复制到字符串s1,最后在字符串s1的末尾接上字符率结束标记符。完整程序如下:
# include
# define N 40
main()
{ char s1[N] ,s2[N];
int i,j;
printf(“Enter stringl!n”);
scanf(“%s”,s1);
printf(“Enter string2! n”);
scanf(“%s”, s2);
for(i=0; sl!=‘