社区讨论
为什么40分无解(c++)
P5734【深基6.例6】文字处理软件参与者 4已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo118upi
- 此快照首次捕获于
- 2023/10/22 13:33 2 年前
- 此快照最后确认于
- 2023/11/02 13:04 2 年前
再发一遍,希望有人看吧orz
才发现有一道错了这么久的题哎
样例已过,代码+没啥大用的注释通俗易懂
C#include<bits/stdc++.h>
using namespace std;
int n,na,nb;//n-->q
char a[206],b[206];//没用string,用的char
void hc()//后接插入,在文档后面插入字符串str,并输出文档的字符串
{
int i;
cin>>b;
na=strlen(a);
nb=strlen(b);
for(i=na;i<na+nb;i++) a[i]=b[i-na];
na+=nb;//合并长度
for(i=0;i<na;i++) cout<<a[i];
cout<<endl;
}
void bl()//截取文档部分,只保留文档中从第a个字符起第b个字符,并输出文档的字符串
{
int i,x,y;
cin>>x>>y;
for(i=x;i<x+y;i++) a[i-x]=a[i];
na=y;//截取长度
for(i=0;i<na;i++) cout<<a[i];
cout<<endl;
}
void zj()//:插入片段,在文档中第a个字符前面插入字符串str,并输出文档的字符串
{
int i,x;
cin>>x>>b;
nb=strlen(b);
for(i=x;i<na;i++) a[i+nb]=a[i];
for(i=x;i<x+nb;i++) a[i]=b[i-x];//插入
for(i=0;i<na+nb;i++) cout<<a[i];
cout<<endl;
}
void cz()//查找子串,查找字符串str在文档中最先的位置并输出;如果找不到输出-1
{
int i,j,zt;//zt状态变量
cin>>b;
nb=strlen(b);
for(i=0;i<=na;i++){
zt=1;
if(a[i]==b[0]){//查找
for(j=1;j<nb;j++)
if(a[i+j]!=b[j]){
zt=0;
break;
}
if(zt==1){
cout<<i<<endl;
return;
}
}
}
cout<<-1<<endl;
return;
}
int main()
{
int i,t;
cin>>n>>a;
for(i=0;i<n;i++){
cin>>t;
switch(t){//判断操作
case 1:hc();break;
case 2:bl();break;
case 3:zj();break;
case 4:cz();break;
}
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...