编一个程序,将一指定字符从一个已知字符串中删除

#include"iostream.h"
void main()
{
char s[10],i,max;
cout<<"请输入字符串:"<<endl;
cin>>s[10];
for(i=1;i<10;i++)
if(s[i]=='m') i=max;
for(i=max;i<9;i++)
s[i]=s[i+1];
cout<<"显示删除后字符串:"<<endl;
for(i=0;i<9;i++)
cout<<s[i]<<" ";
cout<<endl;
} 帮忙看一下。不知道哪里错了,运行不出来。谢谢大家了。初学C++,纠结中……

首先,输入字符串不是cin>>s[10];而是cin>>s;第二,数组下标从0开始,for(i=1;i<10;i++)应该改为for(i=0;i<10;i++)第三,if(s[i]=='m') i=max;应该改为if(s[i]=='m') max=i;找到相等的把i值给max,而不是反过来。第四,for(i=max;i<9;i++) s[i]=s[i+1];应该重新定义一个变量j,而不是使用i,i是外层循环使用的,改为for(j=max;j<10;j++) s[j]=s[j+1];
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-05
你这既不是C++,也不是C,不伦不类的建议你看C++ Primer或者C++ Primer Plus吧无论C语言还是C++,main函数都应该写成这个样子int main(){ //add your own code here return 0;}你这个程序,如果要用std::cin和std::cout,就定义string对象,不要用字符数组#include "iostream.h"
#include "stdio.h"
int main()
{
char s[10],i,max;
cout<<"请输入字符串:"<<endl;
scanf("%s",s);;
for(i=1;i<10;i++)
if(s[i]=='m') max=i; //你的程序中这个地方写反了,这是一个逻辑错误
for(i=max;i<9;i++)
s[i]=s[i+1];
cout<<"显示删除后字符串:"<<endl;
printf("%s",s);
cout<<endl;
return 0;
}
第2个回答  2013-11-05
#include"iostream.h"
void main()
{
char s[10],i,max;
cout<<"请输入字符串:"<<endl;
cin.getline( s, 10 ); /*cin>>s即可,不过这样仍种方式仍不可取,推荐cin.getline*/
for(i=0;i<10;i++)
if(s[i]=='m') max=i;

for(i=max;i<9;i++)
s[i]=s[i+1];
cout<<"显示删除后字符串:"<<endl;
for(i=0;i<9;i++)
cout<<s[i]<<" ";
cout<<endl;
}
相似回答