社区讨论

为什么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 条回复,欢迎继续交流。

正在加载回复...