展开全部
参数的类型应该是 char *,不是 char。
可以这样写(main( ) 里以有前导空白的负数测试):
#include <stdio.h>
#include <ctype.h>
int atoi( char *s ) {
int sign = 1,
mag = 0;
while ( isspace( *s ) ) /* 忽略前导空白 */
++s;
if ( *s == '-' || *s == '+' )
if ( *s++ == '-' ) /* 检测负号并自增 s */
sign = -1;
while ( isdigit( *s ) ) /* 从最高有效数开始 */
mag = mag * 10 + *s++ - '0';
return sign * mag;
}
void main( ) {
printf( "%d\n", atoi( " -321" ) );
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std ;
int main()
{
char a[] = "123123123" ;
cout << atoi ( a ) ;
}
using namespace std ;
int main()
{
char a[] = "123123123" ;
cout << atoi ( a ) ;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似是面试经典题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int pd(char s)
{
if(s=='1')return 1;
}
int atoi (char s[])
{
int i,j;
double k;
for (i=0;i<100;i++)
{
if (s[i]=='.')j=i;
}
k=1.0;
for (i=0;i<j;i++)k=k*10.0;
pd(s[0])
s[0]
}
{
if(s=='1')return 1;
}
int atoi (char s[])
{
int i,j;
double k;
for (i=0;i<100;i++)
{
if (s[i]=='.')j=i;
}
k=1.0;
for (i=0;i<j;i++)k=k*10.0;
pd(s[0])
s[0]
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询