编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。 10

(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。... (不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。 展开
 我来答
liuyanqiu353
2011-05-28 · 超过23用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:47.8万
展开全部
思路:先判定字符串第一位是否为符号,“+”或没有则符号为正(1),“-”则符号为负(-1)。然后每一位的数值是ASCII值减去48。计算公式为:123=12*10+3=(1*10+2)*10+3.

#include <stdio.h>
int atoi_(char *p)
{ int a = 0;
int b = 0;
int i = 0;
int j = 0;
int sign = 1;
if (*p =='+')
p = p+1;//判定首位是否为正号。指针指到符号后面。
if (*p == '-')//判定首位是否是负号。
{
p = p+1;
sign = -1;//符号标识符为-1.
}
while (*(p+i) >= 48 && *(p+i) <= 57)
{
i++; //计算一共多少位数字。
}
for (j = 0;j < i;j++)
{
b = *(p+j)-48;
a = a*10+b;
}
a = a*sign;//计算出来的数字乘以前面判定的符号。
return a;
}
int main(void)//主函数。
{ char str1[10] = "";
int a;
printf("请输入字符串str1 = ");
gets(str1);
a = atoi_(str1);//调用atoi_函数。
printf("the number is %d.\n",a);
return 0;
}
百度网友7a7e6f3
推荐于2018-04-18 · TA获得超过252个赞
知道小有建树答主
回答量:211
采纳率:100%
帮助的人:95万
展开全部
下面是用C++语言写的,加上头文件
#include <string>
main()
{
string a;
cout<<"请输入一个数字:";
cin>>a; //这里不检查数字字符串的正确性,假定是输入的字符串可以转成数字的
bool zhengshu=true;//假定是正数
if (a[0]=='-')
{
zhengshu=false;
}
int Num=0;
unsigned int i;
for (i=(zhengshu?0:1);i<(a.length());i++)//如果是负数,就从第2位开始转换,否则从第1位开始转换
{
int j=a[i]-'0';
Num=Num*10+j;
}
if (!zhengshu)//如果是负数就取反
{
Num=-Num;
}
cout<<Num<<endl;
}
在VS2010上通过编译,可以正确运行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海游龙1111
2011-05-28 · 超过19用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:35.5万
展开全部
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>

int main()
{
char a[13];
long b=0,x=0;
int i,t;
printf("please input a string:\n");
gets(a);
t=strlen(a);
if(a[0]!='-')
{
for(i=0;i<t;i++)
{
x=pow(10,t-i-1);
b=b+(a[i]-48)*x;
}
}
else
{
for(i=1;i<t;i++)
{
x=pow(10,t-i-1);
b=b+(a[i]-48)*x;
}
b=-b;
}
printf("\nThe result is %ld\n",b);
system("pause");
return(0);
}

没有考虑意外情况,但输入数字字符串是正确的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ariesfalling
2011-05-29
知道答主
回答量:27
采纳率:0%
帮助的人:18.5万
展开全部
符号要分开检测
字符串的话 int a = '1234' - '0';
如果遇到负号那么 int a = - ( '1234' - '0' )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baithan
2011-05-28 · TA获得超过717个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:580万
展开全部
不知道要用什么语言写呐?C? 这我不会,,,不过可以给你个思路哦!

比如要把 字符串 '1' 转为整型,,可以先得到它的ascii码,然后再减30就是1了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式