Chinaunix

标题: 函数的返回值是多少? [打印本页]

作者: zdfpcuse    时间: 2005-07-01 18:10
标题: 函数的返回值是多少?
若给fun函数的形参s传送字符串:"  6354abc"(开始有两个空格),则函数的返回值是多少?
# include "ctype.h"
long fun(char s[])
{long n;int sign;
for(;isspace(*s);s++);
sign=(*s=='-')?-1:1;
        if(*s=='+'||*s=='-')s++;
                for(n=0;isdigit(*s);s++)n=10*n+(*s-'0');
        return(sign *n);}
作者: stevens_wu    时间: 2005-07-01 18:48
标题: 函数的返回值是多少?
6354
作者: deathbravo    时间: 2005-07-01 18:48
标题: 函数的返回值是多少?

  1. # include "ctype.h"
  2. long fun(char s[]) {
  3. long n;int sign;
  4.       for(;isspace(*s);s++);
  5.            sign=(*s=='-')?-1:1;
  6.       if(*s=='+'||*s=='-')
  7.            s++;
  8.       for(n=0;isdigit(*s);s++)
  9.            n=10*n+(*s-'0');
  10.       return(sign *n);
  11. }
复制代码

看起来还是不对劲
作者: jetrix    时间: 2005-07-01 19:21
标题: 函数的返回值是多少?
[quote]原帖由 "stevens_wu"]6354[/quote 发表:


对了.
作者: zdfpcuse    时间: 2005-07-01 23:03
标题: 函数的返回值是多少?
我觉得n=10*n+(*s-'0');中的*s-'0' '0'应该是个字符型,转换为ascii值后再运算,你认为呢
作者: kernelxu    时间: 2005-07-02 17:04
标题: 函数的返回值是多少?
  1. n=10*n+(*s-'0');
复制代码

*s是一个数字字符,'0'是0这个数字字符。
所以*s-'0' 就是算的*s与'0'的ASCII码值之差,也就是*S这个字符所表示的数字值。
作者: liubingqian    时间: 2005-07-02 22:48
标题: 函数的返回值是多少?
[quote]原帖由 "deathbravo"]看起来还是不对劲[/quote 发表:

美女看仔细啊,楼主的第一个for循环没有循环体,你多加了一个缩进,就乱了。
作者: tyzam    时间: 2005-07-04 09:01
标题: 函数的返回值是多少?
for(;isspace(*s);s++);
          sign=(*s=='-')?-1:1;

這個應該是程序自動縮進的,

楼主的第一个for循环没有循环体,
誰說沒有的,    for(;isspace(*s);s++); 他也可以寫成
   for(;isspace(*s);s++){};
這不就是他的循環體了,要注意看些這個for後面的“;”
作者: liujing6484    时间: 2005-07-05 21:32
标题: 函数的返回值是多少?
for后面的;也是循环体没错啊,但是那就没有什么意义了啊!
作者: Yarco    时间: 2005-07-06 08:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: yanshizhuan    时间: 2005-07-06 15:15
标题: 函数的返回值是多少?
for(;isspace(*s);s++);

s能+吗?s是数组的首地址,怎能“+”呢,他总是数组的首地址。
作者: kernelxu    时间: 2005-07-06 16:15
标题: 函数的返回值是多少?
原帖由 "yanshizhuan" 发表:
for(;isspace(*s);s++);

s能+吗?s是数组的首地址,怎能“+”呢,他总是数组的首地址。

运行一下再说可不可以加!
函数将S作为指针处理。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2