求指点——-下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234,程序思路不是很懂

main()
{char s[6];
int n;
gets(s);
if(*s==’-’) n=-chnum(s+1);
else n=chnum(s);
printf(“%d\n”,n);
}
chnum(char *p)
{ int num=0,k,len,j;
len=strlen(p);
for( ;____________ ; p++ )
{
k=______________;
j=--len;
while( _________ ) {k=k*10;}
num=num+k;
}
}

这个算法是比较麻烦的。搞的挺复杂。 

main()
{char s[6];
 int n;
 gets(s);
 if(*s==’-’) n=-chnum(s+1);
 else n=chnum(s);//这个判断就是判断符号的。 æ²¡ä»€ä¹ˆéš¾çš„。 chnum函数, åªè½¬æ¢ä¸ç®—符号的部分。 
 printf(“%d\n”,n);
}
chnum(char *p)
{ int num=0,k,len,j;
 len=strlen(p);
 for(  ;____________ ; p++ )   //循环是遍历整个数组, æ­£å¸¸åº”该是一个常数和len比较。 ä½†æ˜¯åœ¨å¾ªçŽ¯é‡Œé¢len是变化的, æ‰€ä»¥åªè¦åˆ¤æ–­len就可以了。 æ‰€ä»¥å¡«len!=0        
  {
   k=______________;//从下面看, k是累加到num上的。 è¿˜æœ‰ä¸€ä¸ªå¾ªçŽ¯æ˜¯k=k*10. æ‰€ä»¥ è¿™é‡Œæœ€ç»ˆå¾—到的k值,就是对应位上代表的实际值。 äºŽæ˜¯åˆå§‹å€¼ä¸ºè¯¥ä½å®žé™…数字值。 å¡«  *p-'0'
   j=--len;//j=--len,这样j就是当前p所在的位数,也就是个位j=0 åä½j=1 ç™¾ä½j=2...
   while( _________ )  {k=k*10;}//根据j ä¹Ÿå°±æ˜¯p指向的位置, å†³å®šk乘几次10. å¡«j--
   num=num+k;
}
    return num;//这里少了一个返回。 
}

这个算法太麻烦了, 看看就好 没必要深究。 

实际上这种运算, 常用的方法是这样的。 

main()
{char s[6];
 int n;
 gets(s);
 if(*s==’-’) n=-chnum(s+1);
 else n=chnum(s);
 printf(“%d\n”,n);
}
chnum(char *p)
{ int num=0,k,len,j;
 len=strlen(p);
 for( j=0 ;j=len; j++ )           
  {
    num*=10;
    num+=p[j]-'0';//两句就可以搞定的
    //再简化一下, ä¸€å¥éƒ½å¯ä»¥ num=num*10+p[j]-'0'; æ•ˆæžœä¸€æ ·ã€‚ 
}
    return num;
}来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-21
第一处填*p也可以,都是判断p是否指向结尾

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网