第10套:
給定程序中,函數(shù)fun的功能是:判定形參a所指的N×N(規(guī)定N為奇數(shù))的矩陣是否是"幻方",若是,函數(shù)返回值為1; 不是,函數(shù)返回值為0。"幻方"的判定條件是:矩陣每行、每列、主對(duì)角線及反對(duì)角線上元素之和都相等。
例如,以下3×3的矩陣就是一個(gè)"幻方":
4 9 2
3 5 7
8 1 6
請(qǐng)?jiān)诔绦虻南聞澗處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 3
int fun(int (*a)[N])
{ int i,j,m1,m2,row,colum;
m1=m2=0;
for(i=0; i { j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; } if(m1!=m2) return 0; for(i=0; i row=colum= __1__; for(j=0; j { row+=a[i][j]; colum+=a[j][i]; } if( (row!=colum) __2__ (row!=m1) ) return 0; } return __3__; } main() { int x[N][N],i,j; printf("Enter number for array:\n"); for(i=0; i printf("Array:\n"); for(i=0; i { for(j=0; j printf("\n"); } if(fun(x)) printf("The Array is a magic square.\n"); else printf("The Array isn't a magic square.\n"); } 解題思路: 第一處:行列變量row和colum的值初始化為0。 第二處:兩個(gè)條件只要有一個(gè)不滿足就返回0,所以應(yīng)填:||。 第三處:如果矩陣是“幻方”,則返回1。 *************************************************** 給定程序MODI1.C中fun函數(shù)的功能是: 根據(jù)整型形參m,計(jì)算如下公式的值。 1 1 1 t = 1 - ----- - ----- - …… - ----- 2 3 m 例如,若主函數(shù)中輸入5,則應(yīng)輸出 -0.283333。 請(qǐng)改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除, 使它能計(jì)算出正確的結(jié)果。 注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include double fun( int m ) { double t = 1.0; int i; for( i = 2; i <= m; i++ ) t = 1.0-1 /i; _______; } main() { int m ; printf( "\nPlease enter 1 integer numbers:\n" ); scanf( "%d", &m); printf( "\n\nThe result is %lf\n", fun( m ) ); } 解題思路: 第一處:在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),所么所除結(jié)果也是整數(shù),因此應(yīng)改為t-=1./i。 第二處:應(yīng)是返回公式的值,函數(shù)中公式的值是存放在臨時(shí)變量t中,所以應(yīng)填return t;。 *************************************************** 請(qǐng)編寫一個(gè)函數(shù),函數(shù)的功能是刪除字符串中的所有空格。 例如, 主函數(shù)中輸入"asd af aa z67", 則輸出為 "asdafaaz67"。 注意:部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。 給定源程序: #include #include int fun(char *str) { } main() { char str[81]; int n; printf("Input a string:") ; gets(str); puts(str); fun(str); printf("*** str: %s\n",str); NONO(); } 解題思路: 本題是考察考生怎樣利用字符串指針來(lái)刪除字符串的空格字符。在函數(shù)開始處把指針p先指 向字符串str以及位置變量i置0,然后采用while循環(huán)和字符串指針p來(lái)處理的,每循環(huán)一次來(lái)判斷指針p所指的字符是否為空格,如果不是空格,則把該字符寫到str字符串中,位置由i來(lái)控制,如果是空格,則不處理,繼續(xù)取下一字符,直至字符串結(jié)束為止,最后再把字符串結(jié)束符寫到 位置為i的str上,再通過(guò)形參str返回。 參考答案: int fun(char *str) { char *p = str ; int i = 0 ; while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ; } 相關(guān)推薦: 2012年下半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間及入口匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |