2016年計算機二級考試試題庫
- 計算機二級
- 關注:1.99W次
給定程式中,函式fun的功能是:求ss所指字串陣列中長度最長的字串所 在的行下標,作為函式值返回,並把其串長放在形參n所指變數中。ss所指字串陣列中共有M個字串,且串長
請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果。
注意:源程式存放在考生資料夾下的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