来自四楼机房的第一篇博客
#include<cstdio>
using namespace std;
int main()
{
//freopen("add.in","r",stdin);
//freopen("add.out","w",stdout);
char str[1000];
int n,k,t,a,b;
scanf("%d %d %d\n",&n,&k,&t);
gets(str);
for(int i=1;i<=k;i++)
{
char ch;
cin>>ch;
if(ch=='G') cout<<str[t-1]<<endl;
if(ch=='L') t=t-1;
if(ch=='R') t=t+1;
if(ch=='S')
{
int c,d;
char ch3;
cin>>c>>d;
ch3=str[c-1];
str[c-1]=str[d-1];
str[d-1]=ch3;
}
}
return 0;
}
首先自我检讨阿,刚开始码代码的时候包子皮都没有输对,最重要的是自己在反复检查之后居然没有检查出来,好把,下一次要熟悉常见的错误。
******************************华丽丽的分割线*************************
首先,此题是c语言,这点就比较坑,谁让c和c++能同时出现呢
可能刚开始运用不太熟悉, 导致码的时候很慢很慢;
以上都是次要的,重要的是我在码交换的时候居然定义了两个变量,很明显当时我是出于一种懵逼的状态的,仅仅因为是字符数组而忘记交换的简单代码
P.S我想起来亲爱的数学老师讲算法框图时候的快乐例子了,那瓶水的倒水问题(笑cry),的确阿,把交换比作倒水很形象,需要多拿一个瓶子来盛多余的水。。。。
啥也不说,贴题:
******************************分割线**华丽丽**************************
陶陶学了数组,他对写文章特别感兴趣,自从学了数组之后,他就想编一个文字编辑器。现在对一般的文字操作很感兴趣,于是,他就有了以下问题。
现在有个长度为n的字符数组,并且知道插入光标的位置为k,现在他对字符数组有以下操作:
1、输出操作(G):输出光标所在的当前字符。
2、左移光标(L):把光标从当前位置左移一位.
3、右移光标(R):把光标从当前位置右移一位。
4、交换操作(S a b):把 a位置的字符与b位置的字符交换
(删除与旋转操作)
比如 当前长度为13字符数组为: 'long long ago';当前光标所在位置为4
如果一个G操作:则输出字符'g'
如果一个L操作:则光标会移到3
如果一个R操作:则光标会移到5
如果一个S 1 4 操作,则字符数组会变成 'gonl long ago'
当然会有很多次的各种操作,操作顺序不一样,输出结果肯定不一样.
陶陶觉得这个问题很有意义,于是他就想让大家用程序来实现这些操作
*****************************这次有点多哈,写在最后******************************
只当是给下一届福利了,连题带答案还有解析(我都不忍心看的解析)
以后还要多码程序,少去问度娘,毕竟刚刚开始,需要熟悉计算机语言,而不是去贴别人的代码
撤退!
posted on 2016-06-17 18:28 supersumax 阅读(78) 评论(0) 编辑 收藏 举报