将整数n这个数字转换为对应的字符串

题目:实现一个函数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;
}
时间: 10-29

将整数n这个数字转换为对应的字符串的相关文章

【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中

#include <stdio.h> static int i=0;//定义全局变量i 作为数组s[]的下标 int itoa(int n,char s[]) {  if(n<10) { s[i]=n+'0'; } else  { itoa(n/10,s);//递归 i++; n=n%10;//最后一位的数字 s[i]=n+'0'; } s[i+1]='\0';//字符串结束标志 } int main() { char s[6]; int num=0; printf("inpu

将整数n这个数字转换为对应的字符串,保存到s中(两种方法)

方法一. 用循环的方法取出每一位,存到字符数组中,最后将数组翻转. 代码实现如下: #include<stdio.h>#include<string.h>#include<assert.h>#define MAX 20void reverse(char *left, char *right){ assert(left); assert(right); while (left < right) {  int tmp = *left;  *left = *right;

c语言实现,将整数n这个数字转换为对应的字符串

#include<stdio.h> int main () {      int i=0;      char arr[10]={0};      int n=0;      int j=0;      scanf("%d",&n);      if(n<0)      {           n=-n;      }      while(n)      {           arr[j]=n%10;           n/=10;           

java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

1 package com.llh.demo; 2 3 import java.util.Scanner; 4 5 /** 6 * 7 * @author llh 8 * 9 */ 10 public class Test { 11 /* 12 * 将任意一个十进制数数字转换为二进制形式,并输出转换后的结果(使用数组存储) 13 */ 14 public static void main(String[] args) { 15 Scanner sc = new Scanner(System.in

字符串分隔 -&gt;连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.*; public class Main{     public static void main(String[] ar

ORACLE中将数字转换为英文

SELECT LEVEL, to_char(to_date(LEVEL,'J'),'Jsp') FROM dual CONNECT BY LEVEL <= 1000 运行结果如下图所示:   说明: TO_CHAR(aDate,'JSP')是指日期aDate距离JULIAN日期的第一天即4712-01-01BC的天数,也就是从公元前4712年的1月1号到aDate这个日期的天数的英文拼写. JULIAN日期的范围是公元前4712-01-01到公元9999-01-01.期间的天数是我们能够拼写的最

关于C#中将数字转换为指定格式

将数字转换为钱格式: double money=11226.00; 转换为金钱格式:¥11,226.00 var newMoney=money.ToStrring("c") 转换为每三位数用逗号隔开格式:11,226.00 var newMoney=money.ToStrring("n");

将整形数字(int)转换成字符串

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<string.h> void itoa(int n, char *buf) { int count = 0; char nu; char buf2[128] = { 0 }; //核心算法很简单 就是每次取出各位数字然后把数字转存进数组,中间有一个数组匿置的过程 do

C语言中把数字转换为字符串 【转】

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出.这也导致sprintf 比printf 有用得多. sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数.而它的精华,显然就在第二个