从品牌网站建设到网络营销策划,从策略到执行的一站式服务
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:在一行中输出循环左移N次后的字符串。
输入样例:Hello World!
2
输出样例:llo World!He
"Hello World!"左移2位输出,即:
1.先输出该字符串第2位(从第0位计)后的字符llo World!
2.再输出第0位与第1位字符He。
那么,如何先输出llo World!呢? 很简单,printf("%s",str+2);即可(str是字符串首地址)。如果我们仍然想借助printf("%s",str);碰到"\0"即停止的特性输出前2位字符He呢?很简单只要第2位的"l"变成"\0"即可,原字符串就变为了"He\0lo World!"。此时再printf("%s",str);即可完成任务。但这么做有一个隐含问题,原字符串内容改变了,后续再调用该字符串会出现问题。如何解决呢?我们只需要在左移输出任务完成后将变成"\0"的"l"变回去即可。
此外,关于左移N位。如果我们将"Hello World!"左移13位得到的结果与左移2位一致,也就是说实际左移位数应该为N%(strlen(string))。
#include#includevoid Print_StringLeftMove(char* string,int len,int move) {
char temp = 0;
move %= len;//实际左移位数
printf("%s", string + move);//输出llo World!
temp = *(string + move);//暂存l
*(string + move) = '\0';//l 变成 \0
printf("%s", string);//输出He
*(string + move) = temp;//\0 变回 l
}
int main() {
char string[100] = { 0 };
gets(string);
int move = 0;
scanf("%d", &move);
Print_StringLeftMove(string, strlen(string), move);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图