最近中文字幕完整版高清,宅男宅女精品国产av天堂,亚洲欧美日韩综合一区二区,最新色国产精品精品视频,中文字幕日韩欧美就去鲁

首頁(yè) > 考試輔導(dǎo) > 計(jì)算機(jī)考試 > 計(jì)算機(jī)等級(jí)考試 > 試題集錦 > 2006年9月全國(guó)等級(jí)考試三級(jí)c語(yǔ)言上機(jī)題庫(kù)(十九)

2006年9月全國(guó)等級(jí)考試三級(jí)c語(yǔ)言上機(jī)題庫(kù)(十九)

題目19(無(wú)憂id 144 單詞個(gè)數(shù)統(tǒng)計(jì)題)

 

編寫(xiě)一個(gè)函數(shù)findstr(char *str,char *substr),該函數(shù)統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的子字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為"asd asasdfg asd as zx67 asd mklo",子字符串為"as",函數(shù)返回值是6。

函數(shù)readwrite()實(shí)現(xiàn)從文件in.dat中讀取兩個(gè)字符串,并調(diào)用函數(shù)findstr(),最后把結(jié)果輸出到文件out.dat中。

注意:部分源程序存在文件prog1.c中。

請(qǐng)勿改動(dòng)主函數(shù)main()和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)findstr()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

#include <stdio.h>

#include <string.h>

#include <conio.h>

 

int findstr(char *str,char *substr)

{ int n=0;

char *p , *r;

while ( *str )

{p=str;

r=substr;

while(*r)

if(*r==*p) { r++; p++; }

else break;

if(*r=='\0')

n++;

str++;

}

return n;

}

 

 

main()

{

char str[81], substr[3] ;

int n ;

 

clrscr() ;

printf("輸入原字符串:") ;

gets(str) ;

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

gets(substr) ;

puts(str) ;

puts(substr) ;

n=findstr(str, substr) ;

printf("n=%d\n", n) ;

readwrite() ;

}

 

readwrite()

{

char str[81], substr[3], ch;

int n, len, i = 0;

file *rf, *wf ;

 

rf = fopen("in.dat", "r") ;

wf = fopen("out.dat", "w") ;

while(i < 25) {

fgets(str, 80, rf) ;

fgets(substr, 10, rf) ;

len = strlen(substr) - 1 ;

ch = substr[len] ;

if(ch == '\n' || ch == 0x1a) substr[len] = 0 ;

n=findstr(str, substr);

fprintf(wf, "%d\n", n) ;

i++ ;

}

fclose(rf) ;

fclose(wf) ;

}

 

解法二:

int findstr(char *str,char *substr)

{ int i,j,len1,len2,cnt=0,flag;

len1=strlen(str);

len2=strlen(substr);

for(i=0;i<len1;i++)

{ for(j=0;j<len2;j++)

if(str[i+j]==substr[j]) flag=1;

else {flag=0;break;}

if(flag==1) cnt++;

}

return cnt;

}

解法三:

int findstr(char *str,char *substr)

{ int i,cnt=0;

for(i=0;i<strlen(str);i++)

if(str[i]==*substr&&str[i+1]==*(substr+1)) cnt++;

return cnt;

}

解法四:

int findstr(char *str,char *substr)

{int cnt=0;

while(*str)

if(*str==*substr&&*(str+1)==*(substr+1)) { cnt++; str++;}

else str++;

return cnt;

}