一道二级C语言题目!

cxr5201314 2009-03-26 09:21:11
#include <stdio.h>
#include <string.h>
fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1<s2)
{t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{
char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}


怎么执行的 看不懂 汗。。。没返回值 怎么输出呢?
...全文
122 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
rclijia 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 cxr5201314 的帖子:]
#include <stdio.h>
#include <string.h>
fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1 <s2)
{t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{
char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}

[/Quote]

程序能执行吗????
P指向只读区,你对*P修改肯定出错啊!!
changhe325 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hahayihua 的回复:]
首先
s1->&1,s2->&7
循环第1次:s1 <s2
t=1;s1->&2;*s1=7;s2->&6;*s2=1;即此时数字是1734517
循环第2次 s1 <s2
t=7;s2->&3; *s1=1; s2->&5; *s2=7 1714717
循环第3次:s1 <s2
t=1;s2->&4;*s1=7;s2->&4; *s2=1; 1717717 -> 1711717
[/Quote]

行不行啊?这个程序本来是错的啊!你们都用什么编译器啊……
晕死
xing_cq 2009-03-26
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1 <s2)
{ t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{
char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}
magipan 2009-03-26
  • 打赏
  • 举报
回复
我用dev-c++运行出错的,不是试图改变常量么?传进去的是个常量地址啊
changhe325 2009-03-26
  • 打赏
  • 举报
回复
我用vc调试,总是abort
说XX地址不能为"written"
xiaoQ008 2009-03-26
  • 打赏
  • 举报
回复
覺得用文字敘述這個過程比較麻煩
況且語言的表述方式未必適合樓主您的風格~
本人覺得
自己用debuger跟蹤一遍應該就明白了~
shouwangzhe1981 2009-03-26
  • 打赏
  • 举报
回复
差一点出错,好好推推。
changhe325 2009-03-26
  • 打赏
  • 举报
回复
这个程序是错的……
p="1234567"; 这样的定义 p指向的是字符串常量……
对里面字符的操作都是非法的……
改成char p[] ="1234567";才可以吧。
hahayihua 2009-03-26
  • 打赏
  • 举报
回复
首先
s1->&1,s2->&7
循环第1次:s1<s2
t=1;s1->&2;*s1=7;s2->&6;*s2=1;即此时数字是1734517
循环第2次 s1<s2
t=7;s2->&3; *s1=1; s2->&5; *s2=7 1714717
循环第3次:s1<s2
t=1;s2->&4;*s1=7;s2->&4; *s2=1; 1717717 -> 1711717
cxr5201314 2009-03-26
  • 打赏
  • 举报
回复


传参数看的懂 执行过程中不是很明白。。
  • 打赏
  • 举报
回复
。。基本功不行,传2个参数看不懂?
cxr5201314 2009-03-26
  • 打赏
  • 举报
回复


怎么会输出1711717呢? 能说下执行步骤吗?谢谢!
downmooner 2009-03-26
  • 打赏
  • 举报
回复
1234567
7654321
rjianfeili 2009-03-26
  • 打赏
  • 举报
回复
函数fun(char *w,int n)
其中 *w 就是“1234567” int n 就是 “1234567”的长度 是没有返回值
但是指针p已经改变了指向的内存的值 后面puts(p) 就是输出来了
nullw 2009-03-26
  • 打赏
  • 举报
回复
fun(..)接收了指针,并在函数中拷贝和改变了指针所指向内存的值,虽然p没有改变,p所指向的值改变了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧