注册 登录
编程论坛 版务及公告

一道想不明白的程序题目

大风车 发布于 2008-07-31 10:26, 3173 次点击
内容如下:
设有如下函数定义,则输出的结果为----
char*fun(char*str)
{char*p=str;
 while(*p)
  {if(*p>'d')continue;
   p++;
   }
    ruturn p;
   }
main()
{printf("%s\n",fun("welcome!"));}
A.welcome!    C.w  D 程序陷入死循环中
疑问:d的ASCII码是97嘛,然后下面执行的那个if语句是要大于d嘛,所以我就认为后面的程序应该是执行到字母c的时候循环结束,然后就输出wel这样的答案啊,我到底什么地方搞糊涂了啊!??
9 回复
#2
yi10182008-07-31 14:46
回复 1# 大风车 的帖子
我的大致印象是if(*p>'d')continue;
  它执行完之后, p++;是这有问题
#3
yi10182008-07-31 14:47
回复 1# 大风车 的帖子
好久没有接触C++了你在看下,希望可以给你一点灵感
#4
chuxuhaha2008-08-02 21:44
回贴
你是不是搞错了d的阿斯码是100吧
#5
sdluhaibing2008-08-07 11:33
char是单字符型变量
char*str 不能作为Welcome!的传递参数吧!
不知道对不对...
#6
守鹤2008-09-10 19:57
此程序陷入了死循环
#7
mxxtxmyn2008-09-11 18:35
break是当执行到这个命令时立即跳转出来,然后执行循环体外的下一条语句,
而continue当条件为假时,跳过这次循环,并不是跳出循环体,而是接着执行循环内的下一次的循环
我觉得这个程序会一直比较 ‘w’和‘d’
if 条件一直成立
所以会进入死循环
还有
d的ascii码是100
你可以用 printf("%d",'d')查看一下
#8
jdshaoheyi2008-11-07 08:34
死循环while(*p),永远符合条件
#9
wangfujun2008-11-11 12:45
赞同7#的看法  还有传递的是welcome的首地址
#10
tp312cf72009-11-30 11:35
7楼同学很好,9楼也不错
1