编一个程序,将一指定字符从一个已知字符串中删除
解决时间 2021-05-17 05:50
- 提问者网友:wodetian
- 2021-05-16 07:36
#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++,纠结中……
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-05-16 09:10
首先,输入字符串不是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楼网友:思契十里
- 2021-05-16 12:49
i应该声明为int类型,for(i=1;i<10;i++){
if(s[i]=='m') i=max;},这应给有括号吧
- 2楼网友:千杯敬自由
- 2021-05-16 11:57
是不是要这个效果:
#include<iostream>
using namespace std;
int main()
{
char s[10],i,max,j;
cout<<"请输入字符串:"<<endl;
cin>>s;
for(i=0;i<10;i++)
if(s[i]=='m') {max=i;
for(j=max;j<10;j++)
s[j]=s[j+1];
}
cout<<"显示删除后字符串:"<<endl;
for(i=0;i<10;i++)
cout<<s[i]<<" ";
cout<<endl;
system("pause");
return 0;
}
- 3楼网友:上分大魔王
- 2021-05-16 10:43
你这既不是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;
}
- 4楼网友:胯下狙击手
- 2021-05-16 09:44
#include"iostream.h"
void main()
{
char s[10],i,max;
cout<<"请输入字符串:"<<endl;
cin.getline( s, 10 );
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;
}
我要举报
大家都在看
推荐资讯