前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言经典100例001-将一个数字字符串转换为一个整数

C语言经典100例001-将一个数字字符串转换为一个整数

原创
作者头像
Python编程爱好者
修改2020-11-06 14:28:17
7.3K0
修改2020-11-06 14:28:17
举报

系列文章《C语言经典100例》持续创作中,欢迎大家的关注和支持。

喜欢的同学记得点赞、转发、收藏哦~

后续C语言经典100例将会以pdf和代码的形式发放到公众号

欢迎关注:计算广告生态 即时查收

1 题目

题目:将一个数字字符串转换为一个整数(不得调用C语言中提供的字符串函数进行操作) 例如: 输入:字符串 -1234 输出:整数 -1234

image.png
image.png

2 思路

思路:将字符串每个位置的字符进行对应的ASCII码转换

例如:字符 '0'-'9' 对应的十进制整数是48~57,那么,将对应的整数减去48就得到了对应的整数

二进制

十进制

十六进制

字符

0011 0000

48

30

0

0011 0001

49

31

1

0011 0010

50

32

2

0011 0011

51

33

3

0011 0100

52

34

4

0011 0101

53

35

5

0011 0110

54

36

6

0011 0111

55

37

7

0011 1000

56

38

8

0011 1001

57

39

9

3 代码

代码语言:txt
复制
#include<stdio.h> 
#include<string.h>

/**
编写函数fun()
函数功能:将字符串转换为一个整数(但是不能使用C语言提供的字符串函数)

例如:
输入:字符串"-1234"
输出:整型 -1234
**/

long fun(char *p) {
	int r = 0;		//数字个数
	long res = 0L;	// 转化后的数字
	int pos = 1;		// 位数*10 *100 ...
	int size = strlen(p); 	// 字符串长度
	if (p[0] == '-'){
		r = size - 1;
	} else {
		r = size;
	}
	// 从前往后转换的话,需要分情况去计算。即:不是负数的话从p[0] 和 如果是负数的话需要从p[1]开始
	// 所以,可以从后往前计算,循环次数是 r 
	for (int i = 0; i < r; ++i) {
		res += (p[size-1-i]-48)*pos;
		pos *= 10;
	}
	return p[0]=='-'?-res:res; 
}

int main(int argc, char const *argv[]) {
	char s[6];
	printf("Enter a string: ");
	gets(s);
	long res = fun(s);	
	printf("Convert Result: %ld\n", res);
	return 0;
}

示例结果:

代码语言:txt
复制
$ gcc ex1.c -o demo
$ ./demo
Enter a string: -1234
Convert Result: -1234
$ ./demo
Enter a string: 9089
Convert Result: 9089

-- END --

喜欢本文的同学记得点赞、转发、收藏~

更多内容,欢迎大家关注我们的公众号:计算广告生态

后续C语言经典100例将会以pdf和代码的形式发放到公众号

同时也带来更多系列文章以及干货!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 题目
  • 2 思路
  • 3 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档