全国计算机等级考试题库二级C操作题100套(第20套)
第20套:
給定程序中,函數fun的功能是:計算形參x所指數組中N個數的平均值(規定所有數均為正數),將所指數組中小于平均值的數據移至數組的前部,大于等于平均值的數據移至x所指數組的后部,平均值作為函數值返回,在主函數中輸出平均值和移動后的數據。
例如,有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 <stdlib.h> #include <stdio.h> #define N 10 double fun(double *x) { int i, j; double av, y[N]; av=0; for(i=0; i<N; i++) av +=__1__; for(i=j=0; i<N; i++) if( x[i]<av ) { y[j]=x[i]; x[i]=-1; __2__;} i=0; while(i<N) { if( x[i]!= -1 ) y[j++]=x[i]; __3__; } for(i=0; i<N; i++)x[i] = y[i]; return av; } main() { int i; double x[N]; for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);} printf("\n"); printf("\nThe average is: %f\n",fun(x)); printf("\nThe result :\n",fun(x)); for(i=0; i<N; i++) printf("%5.0f ",x[i]); printf("\n"); }解題思路:
第一處:求出N個數的平均值,所以應填:N。
第二處:利用for循環語句,把數組x中小于平均值的數,依次存放到數組y中,其中位置由變量j來控制,所以應填:j++。
第三處:i是while循環體的控制變量,每做一次循環均要加1。
給定程序MODI1.C中函數 fun 的功能是:統計字符串中各元音字母(即:A、E、I、O、U)的個數。注意:字母不分大、小寫。
例如:若輸入:THIs is a boot,則輸出應該是:1、0、2、2、0。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動 main 函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h> fun ( char *s, int num[5] ) { int k, i=5; for ( k = 0; k<i; k++ ) num[i]=0; for (; *s; s++) { i = -1; 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"); }解題思路:
第一處:num初始化錯誤,應為:num[k]=0;。
第二處:由于s是指針型變量,所以應改為:switch(*s)。
請編寫函數 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 <stdio.h> #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; clrscr(); printf ( "The original data is : \n" ); for ( i=0; i<M; i++ ) { for ( j =0; j<N; j++ ) printf( "%6d", aa[i][j] ); printf ("\n"); } y = fun ( aa ); printf( "\nThe sum: %d\n" , y ); printf("\n"); NONO( ); }解題思路:
本題是統計二維數組周邊元素值之和,但要注意的是不要重復計算四個角上的元素值,結果作為函數值返回。
參考答案:
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 ; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第20套)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL BENCHMARK函数的使用
- 下一篇: 全国计算机等级考试题库二级C操作题100