我不知道为啥这样不对
提示 答案错误67
大佬们看看 能回答就回答下 谢过
我看了其他的解答
那种输入一句打一句的反而对了
我看是这题目判定有问题吧
解题思路:
例样输入:
2
www.dotcpp.com DOTCPP 21
A C M
D O T CPP
//思路:
直接将换行符添加到字符串中
构造 a = "www.dotcpp.com DOTCPP\n\nA C M\n\nD\n\nO\n\nT\n\nCPP\0"这样的字符串
注意事项:
参考代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
/*
2
www.dotcpp.com DOTCPP 21
A C M
D O T CPP
思路: 构造a = "www.dotcpp.com DOTCPP\n\nA C M\n\nD\n\nO\n\nT\n\nCPP\0"这样的字符串
*/
//在字符数组的第一个元素后面插入ch
void fn(char *a,char ch,int c)
{
for(int i=c;i>0;i--)
a[i+1] = a[i];
a[1]=ch;
}
int main()
{
char a[1000]={0}; //清零
char *p=a; //p指向a 后面好操作
int n,c; //c存储每次输入的字符串的长度
cin>>n; //n=2;
cin.get();//吃掉回车符 这个BUG我找了半天
if(n>100) return -1;
while(n) //先读n次
{
cin.getline(p,101,'\n'); //读一行 "www.dotcpp.com DOTCPP"
c=strlen(p); //读入的长度c 刚好p[c] 为末尾'\0'的位置
p[c]='\n'; p[c+1]='\n'; p[c+2]='\0';//改为 "www.dotcpp.com DOTCPP\n\n\0"
p=p+c+2; //p指针指向末尾的 '\0';
n--;
}
//前2句修改完成:
//"www.dotcpp.com DOTCPP\n\nA C M\n\n\0" 指针位置如下:
// a p
//p此时指向\0
//读取最后一行
cin.getline(p,101,'\n'); //"D O T CPP"
c=strlen(p);
p[c]='\0';
//用\0无视掉最后一行末尾多余的空格
//比如
//["A B C \0"] 修改为 ["A B C\0 \0"];
for (int i = c;; c--) {
if(p[i]==' ') p[i]='\0';
else break;
}
//"D O T CPP"
for (int i = 0; ; i++) // "D O T CPP"
{
if(p[i]=='\0') break;
if(p[i]=='\n') continue;
if(p[i]!=' ' && p[i+1]==' ') //"D O T CPP"
{
p[i+1]='\n';
fn(p+i,'\n',strlen(p+i));
}
}
//"D\n\nO\n\nT\n\nCPP\0"
//a="www.dotcpp.com DOTCPP\n\nA C M\n\nD\n\nO\n\nT\n\nCPP\0"
//直接打印出来
cout<<a;
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复