大家看看这个c语言程序的结果 运行报错求解释

挺简单的一个程序,win7上用dev-c++4.9.9.2编译通过,运行报错如下图,希望大家运行看看,求结果#include<stdio.h>#include<strin... 挺简单的一个程序,win7上用dev-c++4.9.9.2编译通过,运行报错如下图,希望大家运行看看,求结果
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
void fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<s2)
{
t=*s1++;
*s1=*s2--;
*s2=t;
}
}
int main(int argc, char *argv[])
{
char *p="1234567";
fun(p,strlen(p));
printf("%s",p);
system("PAUSE");
return 0;
}
看了各位的回答,个人认为,这个程序本想实现修改p的内容为7654321
但是 t=*s1++; *s1=*s2--;*s2=t;简洁的过分了,导致s1指针的后一个值被s2的值覆盖
s2的前一个值被s1覆盖,没什么意义,估计结果应为1714717
今天找个合适的版本运行一下再选择满意答案
我把这个程序稍微改动了一下:
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
void fun(char *w,int n);
int main(int argc, char *argv[])
{
char p[]="1234567";
fun(p,strlen(p));
printf("%s",p);
system("PAUSE");
return 0;
}
void fun(char w[],int n)
{
char t,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<s2)
{
t=*s1++;
*s1=*s2--;
*s2=t;
}
}
结果为:1711717
指针和数组的不同
防不胜防
仍然感谢大家的参与,我就闭眼选满意答案了
展开
 我来答
cq867118177
2012-04-07
知道答主
回答量:11
采纳率:0%
帮助的人:15.7万
展开全部
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
void fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<s2)
{
t=s1++;
s1=s2--;
s2=t;
}
}
int main(int argc, char *argv[])
{
char *p="1234567";
fun(p,strlen(p));
printf("%s\n",p);
system("PAUSE");
return 0;
}
结果为:1234567
你可以自己试一试。
其中,*s1=*s2--;这句话出错,这真不是这样赋值,修改后就可以运行了。还有就是,fun()似乎没用,因为最后输出是指针p的内容,而不是fun()函数的内容。
追问
为什么不能这样赋值,课本上很多类似的例子,而且完全没有错误

void main()
{
char *a="I am a boy",b[20],*p1,*p2;
int i;
p1=a;p2=b;
for(;*p1!='\0';)
*p2++=*p1++;
*p2='\0';
printf("string a is:%s\n",a);
printf("string b is:");
printf("%s",b);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2012-04-07 · TA获得超过3296个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4447万
展开全部
while(s1<s2)
这里可能有问题,因为你比较的是指针,不是下标。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
287011055
2012-04-07 · TA获得超过225个赞
知道答主
回答量:154
采纳率:0%
帮助的人:68.4万
展开全部
呵呵 LZ自己都看出问题了 还来提问,逗我们玩?
whlie()语句第二条的S1、第三条S2已近发生变化了
把自加和自减写到最后, t=*s1;*s1=*s2;*s2=t;*s1++;*s2--;
追问
关键是这个破程序编译没错误,一运行就出错,很不爽
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式