c语言问题:将数字字符串(如“1234”)转换为数值型数据怎么实现啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言问题:将数字字符串(如“1234”)转换为数值型数据怎么实现啊相关的知识,希望对你有一定的参考价值。

使用自定义函数实现,不要使用atoi之类的库函数。。。。。

代码示例如下:

#include<stdio.h>

int fun(char*p)

    

int sum=0;  

while(*p!='\\0')  

        

sum=10*sum+*p-'0';   

p++;   

   

return sum;

void main()

 

char str[20];   

int num;    

gets(str);   

num=fun(str);  

printf("%d\\n",num);

拓展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。   目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考技术A 给你一个思路,从字符串的第一位开始为转化为数值,用ascII码转如; x=9-‘0’,x就可以是 int 型的9.。 然后,每判断一位让前面的书乘以10,在加上这个数,就可以了 参考技术B #include<stdio.h>
int fun(char*p)

    int sum=0;
    while(*p!='\\0')
    
        sum=10*sum+*p-'0';
        p++;
    
    return sum;

void main()

    char str[20];
    int num;
    gets(str);
    num=fun(str);
    printf("%d\\n",num);

本回答被提问者采纳
参考技术C #include <stdio.h>

int a2i(char const *s);

int main(void) 

printf("%d\\n",a2i("-123"));
return 0;


int a2i(char const *s)

int sign=1,t=0;
if(*s=='-')

s++;
sign=-1;

while(*s)

t=t*10+*s++-'0';

return sign*t;

参考技术D atoi("1234")追问

哦豁,特意强调了不要用库函数。。。。。

java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

可是可以,但是特别麻烦.

先要把中缀表达式,转换为后缀表达式,再计算后缀表达式.

通常把我们日常中看到的数学表达式称为中缀表达式如:(3+4)*5,
后缀表达式为计算机中容易计算的一种表达式.

A*B+C;转换为后缀表达式后为:AB*C+;
(A+B)*(C-D);转换为后缀表达式后为:AB+CD-*;
后缀表达式中没有括号,优先级为从左至右

后缀表达式较中缀表达式而言容易计算.
在中缀表达式中做一项运算要考虑优先级,所以要检查后面的字符
在后缀表达式中只要碰到运算符就可以运算了,直到表达式结束.

把中缀表达式转换为后缀表达式,再计算后缀表达式,这个两个过程都可以用数据结构(栈)来完成.

下面是一个C语言的例子.你看了应该会明白一点.(和JAVA差不多)
这是2008上半年程序员考试的题目,五个空分别为:
(1)prt++
(2)0
(3)*ptr-'0'
(4)&s,tnum
(5)*result

http://thea.cn/cs/learning/2008-5-26/84218-5.htm

不知道楼主为什么问这个问题,不可以用其它方式解决吗?
参考技术A 如果能计算的当然能直接转换 如:

public class lesson7d1
public static void main(String[] args)
String s1 = "12";
String s2 = "12";
int i = Integer.parseInt(s1)+Integer.parseInt(s2);
System.out.println(i);


但是如果 String s1 = "1a";那就不行啦 会抛出异常java.lang.NumberFormatException:本回答被提问者采纳
参考技术B 你是说能直接计算出字符串如"1+4-5"的值????应该不行哦,肯定要处理一下

以上是关于c语言问题:将数字字符串(如“1234”)转换为数值型数据怎么实现啊的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript:字符串转换为数字

C语言 将一个整数转换成一个字符串

C++或C语言如何将字符串转化为数学表达式

编写一个函数,将一个数字字符串转换为一个整数

字符串转化为整数

c++字符串转化为数字