题目:实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中。
题目分析:
对于这一个问题,我们首先能够联想到字符在计算机存储是以自身的ASCII码存储的,例如:‘0’存储为48,‘1’存储为49,那么如果给‘0’—‘9’这些字符相应的减去‘0’,刚好对应的是数字的0-9;这是我们做这个题目的前提。
同时,可以定义一个数组,将转换好的数字先保存下来,这时会发现数组中保存的数字与我们期望得到的数字顺序相反,这时可以考虑数组元素的逆置。将这些问题解决了,这道题目就完成了。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> /*实现一个函数itoa(int n,char s[]), 将整数n这个数字转换为对应的字符串,保存到s中。*/ void itoa(int n,char s[]) { int i = 0; int left = 0; int right = 0; while( n ) //将数字转换为字符 { s[i] = n % 10 + ‘0‘; n /= 10; i++; //left已经向后移位 } right = i - 1; s[i] = ‘\0‘; //添加字符串结束标志 while(left < right) //将数组中的元素逆置 { char tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } } int main() { int num = 0; char arr[10]; scanf("%d", &num); itoa(num, arr); printf("%s\n", arr); system("pause"); return 0; }
本文出自 “无心的执着” 博客,谢绝转载!
原文地址:http://10740590.blog.51cto.com/10730590/1707797