企业手机网站建设行情,做外贸哪个网站比较好2017,店面设计报价,做校园二手交易网站的目的本题要求编写函数#xff0c;将输入字符串的前3个字符移到最后。
函数接口定义#xff1a;
void Shift( char s[] );
其中char s[]是用户传入的字符串#xff0c;题目保证其长度不小于3#xff1b;函数Shift须将按照要求变换后的字符串仍然存在s[]里。
裁判测试程序样例…本题要求编写函数将输入字符串的前3个字符移到最后。
函数接口定义
void Shift( char s[] );
其中char s[]是用户传入的字符串题目保证其长度不小于3函数Shift须将按照要求变换后的字符串仍然存在s[]里。
裁判测试程序样例
#include stdio.h
#include string.h#define MAXS 10void Shift(char s[]);void GetString(char s[]); /* 实现细节在此不表 */int main()
{char s[MAXS];GetString(s);Shift(s);printf(%s\n, s);return 0;
}
/*你的代码写在这里*/
输入样例
abcdef
输出样例
defabc代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB 解题代码
void Shift(char s[]) {int i, j, n strlen(s);char p 0;for (i 1; i 3; i) {p *s; //将s[0]赋值给p重复三次也就是原本的s[0],s[1],s[2]for (j 0; j n - 1; j) {s[j] s[j 1]; //将字符串一起向前挪一个位置//第一轮则s[0]s[1],s[n-1]s[n]//第二轮则原本的s[1]s[2],s[n-2]s[n]......以此类推}s[n - 1] p; //每轮末位往前移1正巧通过循环把末尾的补上}
}解题思路
或许大家会对答案里的这一行代码有疑惑
p *s;
其实在函数引入形参的时候作为数组通常会发生数组衰减即
数组类型和维度的丢失称为数组衰减。 这通常发生在我们通过值或指针将数组传递给函数时。 它所做的是它将数组第一个元素地址作为指针发送。
因此我们若想要得到s[0]的值首先要对其解引用*。这串代码就是让p等于s[0]