[求助]我实在找不到问题出在哪,好像是逻辑错误,编译器没找到语法错误
#include<stdio.h>#include<ctype.h>
#define MAX 81
#define F -1
int atoi(char pr[]);
int jisuan(char *pr,int p);
int main(void)
{
char ar[MAX];
int n;
printf("输入一个字符串\n");
while(gets(ar))
{ n=atoi(ar);
printf("%d\n",n);
printf("输入一个字符串\n");
};
return 0;
}
int atoi(char pr[])
{
int u,uu,i,total;
u=0;
while(pr[0]=='-'||pr[0]=='+'||isdigit(pr[u]))
u++;
if(pr[0]=='-'||pr[0]=='+')
{
uu=--u;
for(total=0,i=0;i<u,uu>0;i++,uu--)
total+=jisuan(pr+i+1,uu);
}
else
{
uu=u;
for(total=0,i=0;i<u,uu>0;i++,uu--)
total+=jisuan(pr+i,uu);
}
if(pr[0]=='-')
return total*F;
else
return total;
}
int jisuan(char *pr,int p)
{
int u,i,e;
e=1;
u=*pr-48;
for(i=0;i<p-1;i++)
e*=10;
return u*e;
}
//一旦输入-500或+500这种类型的,程序就死了,这程序是构造atoi()函数