编写一个函数,将数字字符串转换为十进制整数,用主函数调用这个函数,并输出结果。
功能:数字字符串转整型int,去除高位0。
注意:不要输入超出int范围。
#include <stdio.h>#include <string.h>
int pw10(int m);//计算10次方
int str2int(char *nums);
int main()
{
char nums[]="0103456";
int num;
printf("原字符串:%s\n",nums);
num=str2int(nums);
printf("转成整型后的数字为:%d\n",num);
return 0;
}
int pw10(int m)//计算10次方
{
int i,mu=1;
if(m==0)
return 1;
for(i=0;i<m;i++)
mu= mu*10;
return mu;
}
int str2int(char *nums)
{
char *p=nums;
int len=strlen(nums),i,m=0,sum=0;
while(1)//去高位0
{
if(*p=='0')
p++;
else
break;
}
for(i=len-1;&nums[i]>=p;i--)
sum=sum+(nums[i]-'0')*pw10(m++);
return sum;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-05-29
代码如下:
#include <stdio.h>#include <stdlib.h>
int atoi(const char *str)
{
int val = 0, sign = 1;
const char *p = str;
// 判断正负号
if (*p < '0' || *p > '9') {
if (*p == '+') {
sign = 1;
}
else if (*p == '-') {
sign = -1;
}
else {
return val;
}
p++;
}
while (*p != '\0') {
if (*p < '0' || *p > '9') {
break;
}
val = val * 10 + (*p - '0');
p++;
}
return val * sign;
}
int main()
{
int n;
n = atoi("1234");
printf("%d\n", n);
n = atoi("-1234");
printf("%d\n", n);
system("pause");
return 0;
}
运行结果:
第2个回答 2018-05-29
#include <stdio.h>
int fun(char s[]){
int i=0,n=0;
while(s[i]!='\0')
{n=n*10+s[i]-'0';i++;}
return n;
}
int main(){
char s[80]={'\0'};
scanf("%s",&s);
printf("%d",fun(s));
return 0;
}
int fun(char s[]){
int i=0,n=0;
while(s[i]!='\0')
{n=n*10+s[i]-'0';i++;}
return n;
}
int main(){
char s[80]={'\0'};
scanf("%s",&s);
printf("%d",fun(s));
return 0;
}
//运行示例:
本回答被提问者采纳