题目:实现一个函数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;
}
转载于:https://blog.51cto.com/10740590/1707797