2015年9月全國計算機二級C操作題真題第1套 |
一、改錯題 函數fun的功能是:將一副撲克牌編號為1,2,3...53,54,以某種特定的方式洗牌,這種方式是將這副牌分成兩半,然后將它們交叉,并始終保持編號為1的牌在最上方,譬如第一次這樣洗牌后的結果為:1,28,2,29,...53,27,54。兩次洗牌后的結果為:1,41,28,15,2,42...53,40,27,14,54。 程序的功能是:輸出經過n次這樣洗牌后的結果。 請在程序的下劃線處填入正確的內容,并把下劃線刪除,使程序得出正確的結果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結構! #include <stdio.h> void fun( int a[55], int n ) { int i, k ; /**********found**********/ int __(1)__[55]; for (i=0; i<n; i++) { for (k=1; k<= 27; k++) { b[ 2*k-1 ] = a[k]; /**********found**********/ b[ __[2]___* k ] = a[k+27]; } for (k=1; k<=54; k++) /**********found**********/ a[k]=___(3)___; } } main( ) { int m, a[55],i; for (i=1; i<55; i++) a[i]= i; printf("請輸入洗牌次數 : "); scanf("%d", &m); fun(a, m); for (i=1; i<55; i++) printf("%d,",a[i]); printf("\n"); } 二、改錯題 給定程序MODI1.C中,函數fun的功能是:判斷輸入的任何一個正整數n,是否等于某個連續正整數序列之和。若是,則輸出所有可能的序列。否則輸出“不能分解”。 例如:當輸入100時,輸出:100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 請改正函數fun中指定部位的錯誤,使它能得出正確的結果。 注意:不要改動mam函數,不得增行或刪行,也不得更改程序的結構。 #include <stdio.h> void fun( int n ) { int j, b, c, m, flag=0; for (b=1; b<=n/2; b++) { /**********found**********/ n = m; c = b; while (m !=0 && m>=c) { /**********found**********/ m = m - c; c++ } /**********found**********/ if ( m!=0) { printf("%d=", n); for (j=b; j<c-1; j++) printf( "%d+", j ); printf("%d\n", j); flag=1; } } if(flag==0) printf("不能分解\n"); } main() { int n; printf("請輸入一個整數 : "); scanf("%d", &n); fun(n); } 三、編程題 請編寫函數fun,其功能是:判斷t所指字符串中的字母是否由連續遞增字母序列組成(字符串長度大于等于2)。例如字符串:uvwxyz滿足要求;而字符串:uvxwyz不滿足要求。 注意:部分源程序存在PROG1.C中,請勿改動主函數main和其他函數中的任何內容,僅在函數fun指定的部位填入所編寫的若干語句。 #include <stdio.h> #include <stdio.h> #include <string.h> int fun( char *t ) { } main() { char s[26]; printf("請輸入一個字母組成的字符串 : "); gets(s); if( fun(s) ) printf("%s 是由連續字母組成的字符串.\n", s ); else printf("%s 不是由連續字母組成的字符串!\n", s ); / *NONO(); */ }
109 |