练习8 您所在的位置:网站首页 裁判测试程序样例 练习8

练习8

2024-06-27 00:47| 来源: 网络整理| 查看: 265

 移动字母 (10 分)

本题要求编写函数,将输入字符串的前3个字符移到最后。

函数接口定义: void Shift( char s[] );

其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。

裁判测试程序样例: #include #include #define MAXS 10 void Shift( char s[] ); void GetString( char s[] ); /* 实现细节在此不表 */ int main() { char s[MAXS]; GetString(s); Shift(s); printf("%s\n", s); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: abcdef 输出样例: defabc

分析:题目很简单,就是把一行字符串的前三个放到字符串的后面。 我想到的方法有两种:1、使用两个数组进行数据的交换达成需求目的。2、使用字符串处理函数,但也需要定义两个数组,相当于三个数组的运算。

作者请求:如果博友们没有在博主这里找到答案,欢迎博友私信我,一般在下午我都在线,可以单独发给博友,我也是一个菜鸟,希望与大家一起进步努力,成长。

代码实现:

        方法一:利用数组交换数据实现

void Shift(char s[]) { int len = strlen(s); if (len == 3); else { int i = 0; int a = 0; char arr[5] = {0}; for (i = 0;i < len;i++) { if (i < 3) arr[i] = s[i];//储存s数组中下标为0-2的数据 else s[a++] = s[i];//把s数组中3-(len-1)的数据储存在s从0下标开始的数组当中 } for (i = 0;i < 3;i++) { s[a++] = arr[i];//把arr数组中的数据放在s数组的最后 } } }

        方法二:字符串处理函数 

void Shift(char s[]) { char x[MAXS], y[MAXS];//特别注意这里定义数组的时候,需要用宏的数据,不然会报错 strcpy(x, s);//把数组数据复制给x x[3] = '\0';//只要前三位 strcpy(y, s + 3);//复制s数组中第三个数据之后的数据 strcat(y, x);//连接y,x数据,y和x写的顺序有限制的哦,不能随意改动的 strcpy(s, y);//复制y数据给s }

        



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有