关于c语言数组shift函数的信息

C语言数组的左移函数

//下面是将数组左移的函数void fun(char *a, int *length)//length为字符串a的长度{ for(int i = 0; i length - 2; i++) { a[i] = a[i+2]; }*length = (*length) - 2; } //如果只是输出左移两位的结果,可以用下面这个函数void fun(char *a, int length){ for(int i =2; i length; i++) { printf("%c",a[i]); }}

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了东方免费建站欢迎大家使用!

C语言函数问题

#include stdio.h

#include string.h

#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;

}

//下面是修改过的答案及原因

void GetString(char s[])

{

scanf("%s", s);

return;//void也写上return比较好

}

void Shift(char s[])

{

int i, t, d = 0, e;

char a[100], b[100], c[100];

memset(a, 0, sizeof(a));//abc数组都没有初始化,里面的数据不能保证是正常的

memset(b, 0, sizeof(b));//可能在你的电脑上数据正常,放在评测机上就错了

memset(c, 0, sizeof(c));

e = strlen(s);

for (i = 0; ie; i++) {

if (i = 2) {

a[i] = s[i];

}

if (i2) {

b[d] = s[i];

d++;

}

}

d = 0;

t = strlen(b);

for (i = 0; ie; i++) {

if (it) {

s[i] = b[i];

//c[i] = b[i];

}

if (i = t) {

s[i] = a[d];

//c[i] = a[d];

d++;

}

}

// puts(c);

return;//void也写上return比较好

}

移动字母 C语言

如图,源代码在网页端发

你的思路不好,我改写了。

#include stdio.h

#include string.h

#define MAXS 100

void Shift( char s[] );

void GetString( char s[] ); /* 实现细节在此不表 */

int main()

{

char s[MAXS];

GetString(s);

Shift(s); //交换

printf("%s\n", s);

return 0; 

}

void GetString( char s[] ){//不写这个无法验证

scanf("%s",s);

}

void Shift( char s[] ){

char a[3];

int i,j;

for(i=0; i3 ;i++){

a[i]=s[i]; //将前3个字母存到a

}

//此时i已经=3

for(; s[i]!='\0' ;i++){

s[i-3]=s[i];

} //i从3开始 直到遇到结束符'\0',往前3格赋值

i-=3; //最后i要退回3格

for(j=0; j3 ;j++){

s[i++]=a[j];

} //将最后3个字母赋值为之前存到a的

}

C语言数组循环右移,代码和结果如下,请问大家哪里有错?

问题在ArrayShift函数中的2个for循环中j的值都没有递增,可以在i++后面加个:

,j++

或者

第一个for里改成:a[j++]=a[i];

第二个for里改成:a[i]=a[j++];


网站名称:关于c语言数组shift函数的信息
链接分享:http://myzitong.com/article/phpocp.html