#include<stdio.h> #include<string.h> void fun (char*w,int m) {char s,*p1,*p2; p1=w;p2=w+m-1; while(
#include<stdio.h>#include<string.h>voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;w...
#include<stdio.h>
#include<string.h>
void fun (char*w,int m)
{char s,*p1,*p2;
p1=w;p2=w+m-1;
while(p1<p2)
{s=*p1++;*p1=*p2--;*p2=s;}
}
main()
{char a[]="ABCDEFG";
fun(a,strlen(a));puts(a);
}
答案为什么是AGAAGAG 展开
#include<string.h>
void fun (char*w,int m)
{char s,*p1,*p2;
p1=w;p2=w+m-1;
while(p1<p2)
{s=*p1++;*p1=*p2--;*p2=s;}
}
main()
{char a[]="ABCDEFG";
fun(a,strlen(a));puts(a);
}
答案为什么是AGAAGAG 展开
2个回答
展开全部
初始:p1 指向数组中第一个字符A,p2指向数组中最后一个字符G
开始循环
第一次:
s得到p1指向的值A后p1向后移一位,指向数组中第二个字符B
p1所指的第二个字符改为p2指向的字符G,p2向前移动一位,指向数组中第六个字符F
p2所指的第六个字符改为s的值A
这次完成后数组值改为:AGCDEAG,p1指向数组第二个字符,p2指向数组中第六个字符
第二次:
s得到p1指向的值G后p1向后移一位,指向数组中第三个字符C
p1所指的第三个字符改为p2指向的字符A,p2向前移动一位,指向数组中第五个字符E
p2所指的第五个字符改为s的值G
这次完成后数组值改为:AGADGAG,p1指向数组第三个字符,p2指向数组中第五个字符
第三次:
s得到p1指向的值A后p1向后移一位,指向数组中第四个字符D
p1所指的第四个字符改为p2指向的字符A,p2向前移动一位,指向数组中第四个字符G(刚刚被改动过)
p2所指的第四个字符改为s的值A
这次完成后数组值改为:AGAAGAG,p1指向数组第四个字符,p2指向数组中第四个字符
循环结束。
展开全部
你的程序相当于下面的程序,我稍稍改了一下,看得更明白点:
#include<stdio.h>
#include<string.h>
void fun (char*w,int m)
{
char s,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<p2)
{
s=*p1;
p1++; //1
*p1=*p2;
p2--; //2
*p2=s;
}
}
main()
{
char a[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
从你的用意上讲,应该是把我注释的1、2两处语句移到循环临结尾处。即:
while(p1<p2)
{
s=*p1;
*p1=*p2;
*p2=s;
p1++; //1
p2--; //2
}
在你原来基础上改,就是改成这样:
while(p1<p2)
{s=*p1;*p1++=*p2;*p2--=s;}
楼主参考
祝你好运!
#include<stdio.h>
#include<string.h>
void fun (char*w,int m)
{
char s,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<p2)
{
s=*p1;
p1++; //1
*p1=*p2;
p2--; //2
*p2=s;
}
}
main()
{
char a[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
从你的用意上讲,应该是把我注释的1、2两处语句移到循环临结尾处。即:
while(p1<p2)
{
s=*p1;
*p1=*p2;
*p2=s;
p1++; //1
p2--; //2
}
在你原来基础上改,就是改成这样:
while(p1<p2)
{s=*p1;*p1++=*p2;*p2--=s;}
楼主参考
祝你好运!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询