C++编程题,编写的程序有点不满意求高手修改!!

题目是这样的:
自定义函数,实现字符串中某个字符全部出现的位置,返回位置并输出。

我写的代码如下:
#include <iostream>

using namespace std;
int Search(char *str,char ch,int *s);
int main()
{
char str[100],ch;
int flag,x,s[100];
cout << "请输入字符串:";
cin >>str;
cout <<"请输入查找的字符:";
cin >>ch;
flag=Search(str,ch,s);
if(flag==0)
{
cout <<"找不到该字符!";
}
else
{
cout<<"该字符出现在字符串的";
for(x=0;x<flag;x++)
{
cout<<s[x]<<"";
}
cout<<"的位置.";
}

}
int Search(char *str,char ch,int *s)
{
int i,j=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]==ch)
{
s[j]=i++;
j++;
}
}
return j;
}

这是运行的结果:

已经基本能够实现要求了,就是在显示字符出现在字符串是XX位置,(以截图为例)a应该出现在字符串的第1,5,8个位置,可显示的047则是查找到字符a时存放的数组下标,现在我就想把这些下标加上1,不以下标形式显示,希望以正常我们看到字符串数出来的的位置158这样显示,求高手帮忙修改一下!!感激不尽QAQ

你好!!

改了一种输出的形式,你看看合适吗


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-24
额,你不就加1就行了么?
 
#include <iostream>

using namespace std;
int Search(char *str,char ch,int *s);
int main()
{
   char str[100],ch;
   int flag,x,s[100];
   cout << "请输入字符串:";
   cin >>str;
   cout <<"请输入查找的字符:";
   cin >>ch;
   flag=Search(str,ch,s);
   if(flag==0)
   {
    cout <<"找不到该字符!";
   }
   else
   {
    cout<<"该字符出现在字符串的";
    for(x=0;x<flag;x++)
{
cout<<s[x]+1<<"";  //此处加1就是以1开始计数了
    }
    cout<<"的位置.";
   }

}
int Search(char *str,char ch,int *s)
{
int i,j=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]==ch)
{
s[j]=i++;
j++;
}
}
return j;
}

本回答被提问者采纳
第2个回答  2013-10-15

如下图所示:

第3个回答  2013-10-15
你的代码有bug,如果现在输入连续两个一样的字符,如aabc,只能找到一个a的位置。
将Search函数改为如下:bug和你想要的效果都有了
int Search(char *str,char ch,int *s)
{
int i,j=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]==ch)
{
s[j]=i+1;
j++;
}
}
return j;
}追问

这个问题我还没发现,谢谢你提出来,不过不好意思你没说到我想要的问题,就不选你了。谢谢你给我找到新问题。

追答

选不选我没关系,不过怎么就没说到你想要的问题了,这样就能输出下标+1了,也就是你说的正常看到的位置

追问

好吧对不起(。﹏。*) 我错了…… 。。窝太渣了ORZ、、、真不好意思。

第4个回答  2013-10-15
简单!
if(flag==0)
{
cout <<"找不到该字符!";
}
else
{
cout<<"该字符出现在字符串的";
for(x=0;x<flag;x++)
{
cout<<s[x]+1<<"";
}
cout<<"的位置.";
}

改成这样
相似回答