重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用one,three两个变量的值作为参数,调用move函数。
为江都等地区用户提供了全套网页设计制作服务,及江都网站建设行业解决方案。主营业务为做网站、成都网站建设、江都网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
move函数在程序最后定义了,其作用就是按一定的格式在屏幕上输出显示两个参数的值。
输出结
果:cdeab
分析:只要你理解了move函数的作用你就能明白整个过程:
第一次循环调用move(char
*str,int
n)这一函数给它的参数是
s与
s的长度(就是你输入的abcde的长度5),第一步执行temp=str[5-1]=str[4],而str[4]的值为'e',所以temp的值为'e',接着执行for(i=n-1;
i0;i--)
str[i]=str[i-1];
这个循环是把从str[1]开始的所有数组的元素都后移一位,
即str[2]成了str[1],str[3]成了str[2]等等,循环执行完后执行str[0]=temp;,也就是把e赋值给了
str[0]。所以abcde被move函数处理一次后就成了
eabcd,如果再被处理一次后就被变成deabc等等
也就是说move函数每调用一次就把相应的字符串循环右移一位
void *memmove( void *dest, const void *src, size_t count );
头文件是string.h
此函数将src后面的count个字符,拷贝到dest中。
举个例子:
char string1[60] = "The quick brown dog jumps over the lazy fox";
char string2[60] = "The quick brown fox jumps over the lazy dog";
/* 1 2 3 4 5
* 12345678901234567890123456789012345678901234567890
*/
memcpy( string1 + 16, string1 + 40, 3 );
/*
就是string1数组中第40个字符的后面三个字符,替换string1数组中第16个字符后面的三个字符
*/
printf( "Result:%s\n", string1 );
printf( "Length:%d characters\n\n", strlen( string1 ) );
程序得出的结果为:
Result: The quick brown fox jumps over the lazy fox
Length: 43 characters
我尽力讲清楚了,祝你好运~!
/* 第一部分 */
#include stdio.h
/* 函数声明 */
void move (int[], int, int );
/* 程序入口 */
int main (void )
{
int a[100],
n,
m,
i;
printf ("本程序用于把数组中的前n位元素循环右移m个单位,并打印结果。\n");
printf ("请输入n的值:\n");
scanf ("%d", n);
printf ("请依次设置数组前%d个元素:\n", n);
for (i = 0; i n; i++)
{
scanf ("%d", a[i]);
}
printf ("请设置要循环右移的位数m:\n");
scanf ("%d", m);
/* 打印循环右移前的数组前n个元素 */
printf ("原数组:\n");
for (i = 0; i n; i++)
{
printf ("%d", a[i]);
}
/* 循环右移 */
move (a, n, m);
printf("\n循环右移%d位:\n", m);
/* 打印循环右移后的数组前n个元素 */
for (i = 0; i n; i++)
{
printf ("%d", a[i]);
}
return 0;
}