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[i]= s; } for(s=0.0,i=0;i s+= a[i] ; s /=n; printf("平均值是%.2f\n", 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[i] ); for(i=0,j=n-1;i t= a[i]; a[i]=a[j] ;a[j] =t; } for(i=0; i printf("%d\t", a[i]); 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[i]!=’\0’ ; i++) ; for(j=0;s2[j]!=’\0’ ;i++,j++) so[i]=s[j] ; s1[i]=’\0’ printf("sl=%s\n" ,sl); }
4.编程序按下列公式计算S的值(其中X1、X2、…、Xn由键盘输入): s=∑(xi-x0)(xi-x0) (其中x0是X1、x2、…、Xn的平均值) 【解】输入数组x的n个元素的值,按公式计算。程序首先输入n,设n<100,然后输入n个数据,接着求它们的平均值,最后按计算公式求出s,并输出。程序如下: # include # define N 100 main() { double x[N+1], s; int i,n; do { printf("Enter n(<100)"); scanf("%d", &n); } while(<=0||n>=100); for(i=1; i<=n;i++){ scanf("%lf", &s);x[i]=s; } for(s=0.0,i=1;i<=n; i++) s+=x[i] ; x[0] = s/n; for(s=0.0, i=1;i<= n;i++) s+=(x[i]-x[0])*(x[i]-x[0]); printf("s=%f\n", s); }
5.输入一个3X5的整数矩阵,输出其中最大值、最小值和它们的下标。 【解】输入一个二维数组,寻找二维数组的最大值和最小值。其中寻找最大值和最小值的工作可用两重循环实现,即按行按列考察二维数组的元素。程序如下: # include main() { int a[3][5], i,j,t,n=3, m=5, min,max, minrow, mincol, maxrow, maxcol; printf("Enter %d*%d numbers !\n" , n,m); for(i=0; i for( j=0;j scanf("%d", &t); a[i][j]= t; } min=max=a[[0][0]; minrow=mincol=maxrow=maxcol=0; for(i=0;i for(j=0;j if( a[i][j]> max ){ max= a[i][j] ;maxrow= i;maxcol=j ; } if( a[i][j] min=a[i][j] ; minrow= i; mincol=j ; } } printf("MAX=a[%d][%d] =%d MIN= a[%d][%d] =%d \n", maxrow,maxcol,max,minrow,mincol,min) ; } |