當前位置:學者齋 >

計算機 >計算機二級 >

2016年計算機二級考試試題庫

2016年計算機二級考試試題庫

給定程式中,函式fun的功能是:求ss所指字串陣列中長度最長的字串所 在的行下標,作為函式值返回,並把其串長放在形參n所指變數中。ss所指字串陣列中共有M個字串,且串長

2016年計算機二級考試試題庫

請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果。

注意:源程式存放在考生資料夾下的BLANK1.C中。

不得增行或刪行,也不得更改程式的結構!

  給定源程式:

#include

#define M 5

#define N 20

int fun(char (*ss) ___1___, int *n)

{ int i, k=0, len=0;

for(i=0; i

{ len=strlen(ss[i]);

if(i==0) *n=___2___;

if(len>*n) {

___3___;

k=i;

}

}

return(k);

}

main()

{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

int n,k,i;

printf("nThe original strings are :n");

for(i=0;i

k=fun(ss,&n);

printf("nThe length of longest string is : %dn",n);

printf("nThe longest string is : %sn",ss[k]);

}

  解題思路

第一處:形參ss的定義,它是一個字串陣列的定義,其寬度為N,所以應填:N。

第二處:取第一個字串的長度賦值給變數*n,所以應填:len。

第三處:每迴圈一次,判斷當前字串的長度是否大於*n,如果大於,則*n=len。

***************************************************

  給定程式MODI1.C中 fun 函式的功能是: 根據形參m,計算如下公式的值。 1 1 1 1

t = 1 + ----- +----- + ----- + ……+ -----

2 3 4 m

例如,若輸入 5,則應輸出 2.283333。

請改正程式中的錯誤或在下劃線處填上適當的內容並把下劃線刪除, 使它能計算出正確的結果。

注意:不要改動 main 函式,不得增行或刪行,也不得更改程式的結構!

  給定源程式:

#include

double fun( int m )

{

double t = 1.0;

int i;

for( i = 2; i <= m; i++ )

t += 1.0/k;

________

}

main()

{

int m;

printf( "nPlease enter 1 integer number:" );

scanf( "%d", &m );

printf( "nThe result is %lfn", fun( m ) );

}

  解題思路:

第一處:在此變數k沒有定義過,再根據公式和for迴圈語句中所用的變數可知,這裡的k實際上是i。

第二處:應是返回公式的值,函式中公式的值是存放在臨時變數t中,所以應填return t;。

***************************************************

  編寫一個函式,該函式可以統計一個長度為2的`字串在另一個字串中出現的次數。例如,假定輸入的字串為: asd asasdfg asd as zx67 asd mklo,子字串為:as,則應輸出6。

注意:部分源程式在檔案PROG1.C中。

請勿改動主函式main和其它函式中的任何內容,僅在函式fun的花括號中填入你編寫的若干語句。

  給定源程式:

#include

#include

int fun(char *str,char *substr)

{

}

main()

{

char str[81],substr[3];

int n;

printf("輸入主字串: ");

gets(str);

printf("輸入子字串: ");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%dn",n);

NONO();

}

  解題思路:

本題是統計一個字串在另一個字串中出現的次數。

程式流程如下:

1. 利用strstr函式,首先找到第一個出現的位置。

2. 利用while迴圈和strstr依次查詢所有出現的位置,並進行統計,並把統計結果作為函

數值返回。

strstr(const char *s1, const char *s2)是字串s2在s1中出現的位置,如果找到則返回位置指標。

  參考答案

int fun(char *str,char *substr)

{

int cnt = 0 ;

char *p = str, *q ;

while(*p) {

q = strstr(p, substr) ;

if(q == NULL) break;

p = q + strlen(substr) ;

cnt++ ;

}

return cnt ;

}

main()

{

char str[81],substr[3];

int n;

printf("輸入主字串: ");

gets(str);

printf("輸入子字串: ");

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/erji/ej6pvk.html