給定程序中,函數fun的功能是:求ss所指字符串數組中長度最長的字符串所 在的行下標,作為函數值返回,並把其串長放在形參n所指變量中。ss所指字符串數組中共有M個字符串,且串長
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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("輸入子字符串: ");