使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s1,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返0。如: s1为’’1112223333aaaaeeffd’’ s2为’’11’’则返回1

admin2019-05-29  27

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s1,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返0。如:
s1为’’1112223333aaaaeeffd’’
s2为’’11’’则返回1
s2为’’aat’’则返回2
    注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
1  #include<iostream.h>
2  //注意只能使用int类型。不能类型转换
3  int fun(char* s1,char* s2)
4  {
5
6  }
7  void main()
8  {
9  char s1[1024];
10  char s2[2 5 6];
11  cout<<’’please input a string:’’<<end1;
12  cin.getline(s1,1024);
13   cout<<’’please input other string:’’<<endl
14    cin.getline(s2,256);
15    cout<<fun(s1,S2);
16    cout<<end1;
17    return;
18  }

选项

答案1 int size=0; //初始化字符串统计变量个数 2 int s1len; 3 int s2len; 4 for(s1len=0;s1[s1len]!=0;s1len++);//第一个字符串循环 5 for(s2len=0;s2[s2len]!=0;s2len++);//第二个字符串循环 6 for(int i=0;i<s1len;i++) 7 { 8 int j=0; 9 for(;j<s2len;j++) 10 if(s1[i+j]!=s2[j]) //将第二个串中的字符与第一个串中的字符比较 11 break; 12 if(j==s2len) 13 { 14 ++size; 15 i+=j; 16 --i; 17 } 18 } 19 return size;

解析 (1)该程序功能是计算s1中出现s2的个数。它的解题思路是两个字符串逐个比较其中的字符,从而统计符合的字符串个数。
    (2)从已给部分源程序的main主函数开始入手,核心函数int fun(char*s1,char*s2)中的s1,s2参数为输入的字符串。
    (3)size变量用来存放s1中出现s2的个数,初始值赋为0。
    (4)然后利用for循环对s2中的每一个字符与s1中的字符进行比较。
    (5)如果循环中有符合条件的字符串,就将变量size个数加1。
转载请注明原文地址:https://jikaoti.com/ti/YXA0FFFM
0

最新回复(0)