例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
移动后的输出为:30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 10
double fun(double *x)
{int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i for(i=j=0; i if(x[i] /**********found**********/ y[j]=x[i]; x[i]=-1; __2__;} i=0; while(i {if(x[i]!= -1) y[j++]=x[i]; /**********found**********/ __3__; } for(i=0; i return av; } main() {int i; double x[N]; for(i=0; i printf("\nThe average is: %f\n",fun(x)); printf("\nThe result :\n",fun(x)); for(i=0; i } 解题答案: /*********第一空**********/ for(i=0; i /**********第二空**********/ y[j]=x[i]; x[i]=-1; j++;} /**********第三空**********/ i++; ****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。 例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun (char *s, int num[5]) {int k, i=5; for (k = 0; k
/**********found**********/ num[i]=0; for (; *s; s++) {i = -1; /**********found**********/ switch (s) {case 'a': case 'A': {i=0; break;} case 'e': case 'E': {i=1; break;} case 'i': case 'I': {i=2; break;} case 'o': case 'O': {i=3; break;} case 'u': case 'U': {i=4; break;} } if (i >= 0) num[i]++; } } main() {char s1[81]; int num1[5], i; printf("\nPlease enter a string: "); gets(s1); fun (s1, num1); for (i=0; i < 5; i++) printf ("%d ",num1[i]); printf ("\n"); } 解题答案: /**********found**********/ num[k]=0; /**********found**********/ switch(*s) ****************************************** [NextPage] 三、程序题:请编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为 61。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #define M 4 #define N 5 int fun (int a[M][N]) { } main() {int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8}, {1,3,5,7,0}}; int i, j, y;void NONO (); printf ("The original data is : \n"); for (i=0; i {for (j =0; j printf ("\n"); } y = fun (aa); printf("\nThe sum: %d\n" , y); printf("\n"); NONO(); } void NONO () {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i, j, y, k, aa[M][N] ; FILE *rf, *wf ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); for(k = 0 ; k < 10 ; k++) { for(i = 0 ; i < M ; i++) for(j = 0 ; j < N ; j++) fscanf(rf, "%d", &aa[i][j]); y = fun (aa); fprintf(wf, "%d\n", y); } fclose(rf); fclose(wf); } 参考答案: int fun ( int a[M][N] ) { int tot = 0, i, j ; for(i = 0 ; i < N ; i++) { tot += a[0][i] ; tot += a[M-1][i] ; } for(i = 1 ; i < M - 1 ; i++) { tot += a[i][0] ; tot += a[i][N-1] ; } return tot ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|