用c语言输出一个整数n和一字符串,将字符串循环左移n个字符
答案:3 悬赏:30 手机版
解决时间 2021-03-04 18:46
- 提问者网友:我是女神我骄傲
- 2021-03-04 14:49
用c语言输出一个整数n和一字符串,将字符串循环左移n个字符
最佳答案
- 五星知识达人网友:轮獄道
- 2021-03-04 16:25
使用带头结点的环形链表存储字符串,从链表头开始做N次L->next=L->next->next;L=L->next;此时记录N=L;并输出链表内容(注意跳过头结点,头结点无字符信息),直至L==N;
全部回答
- 1楼网友:第四晚心情
- 2021-03-04 18:12
我先讲一下我的算法,要是有需要我可以写写看。
就用牺牲空间的方法,将这个数组复制。再直接截取。
例如字符串为abcdefghijklmn要循环左移10位。
1。先复制得到abcdefghijklmnabcdefghijklmn。
2。直接从第十位开始往后取字符串的长度位就是结果。abcdefghij klmnabcdefghij klmn。
中间那段就是了。追问希望写一下谢谢追答那你是希望最后得到一个目标数组里面是结果是么?追问我想看看编程的过程谢谢追答大概写了一下,但是请自己注意一下字符串的边界问题,我完全没有处理。只是提前声明了200的char数组,要是输入的字符串长于99了,就会出错了。
楼主还可以看看3楼的意见,看看你具体什么需求。
#include
#include
int main()
{
printf( "请输入目标字符串和想移动的位数 例如 abcd 1,用空格隔开\n" );
char a[200];
int n;
scanf("%s %d",&a,&n);
int len = strlen(a);
for(int i = 0;i {
a[len+i] = a[i];
}
//output
n = n%len;
for(int i = n;i {
printf("%c",a[i]);
}
return 0;
}
就用牺牲空间的方法,将这个数组复制。再直接截取。
例如字符串为abcdefghijklmn要循环左移10位。
1。先复制得到abcdefghijklmnabcdefghijklmn。
2。直接从第十位开始往后取字符串的长度位就是结果。abcdefghij klmnabcdefghij klmn。
中间那段就是了。追问希望写一下谢谢追答那你是希望最后得到一个目标数组里面是结果是么?追问我想看看编程的过程谢谢追答大概写了一下,但是请自己注意一下字符串的边界问题,我完全没有处理。只是提前声明了200的char数组,要是输入的字符串长于99了,就会出错了。
楼主还可以看看3楼的意见,看看你具体什么需求。
#include
#include
int main()
{
printf( "请输入目标字符串和想移动的位数 例如 abcd 1,用空格隔开\n" );
char a[200];
int n;
scanf("%s %d",&a,&n);
int len = strlen(a);
for(int i = 0;i
a[len+i] = a[i];
}
//output
n = n%len;
for(int i = n;i
printf("%c",a[i]);
}
return 0;
}
- 2楼网友:荒野風
- 2021-03-04 17:05
不用这么复杂,你用模运行符(%)就可以,不用再复制的:
算法如下
字符串: s ="abcdefghijklmn";
左移量: n = 10;
输出:
int i,j=strlen(s);
for(i=n; i prinft("%c", s[ i%j ] );
算法如下
字符串: s ="abcdefghijklmn";
左移量: n = 10;
输出:
int i,j=strlen(s);
for(i=n; i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯