编程实现输⼊⼀个整数转换为字符串输出
如:编写函数,输⼊⼀个整数,将其转换为字符串输出。例如,输⼊整数 86556 ,输出字符串 "86556" 。
⾸先确定函数头,函数输⼊⼀个 long 型整数,输出⼀个 char 型字符数组,
因此可以定为void IntInvertToChar(long lNum,char chWord[])。
注意这⾥的整数可能⽐较⼤,不要定为 int 型。
函数中,可以⾸先利⽤循环和 % 和 / 运算符,依次取得整数的每个位。思路如下:例如 86556 ,我们可以将其对 10 取余,得到个位 6 ;将 86556 除 10 余 8655 ,继续对 10 取余,得到⼗位 5 ; … … 以此类推,直到该数变为 0 为⽌。这样就可以将整数的每个位分离出来。
在上述的循环过程中,将分离出的数字依次保存到字符数组中。但是要注意,字符数组中保存的是字符,是数字的 ASCII 码,⽽不是数字本⾝的值。因为 ASCII 码表中阿拉伯数字的码值是连续的,因此⼀个常⽤的技巧是,字符 0 加数字值即为该数字的 ASCII 码值。
上述过程结束后,字符数组⾥存放了整数的每个位,但是不符合题⽬的要求,顺序正好相反。
这可以⽤⼀个循环对数组进⾏转置:字符串第⼀个元素和最后⼀个元素对换;第⼆个元素和倒数第⼆个元素对换; … … 程序循环进⾏字符串长度 /2 次(如果字符串长度为奇数,中间元素正好不⽤处理)。
数据要求
问题中的常量:
⽆
问题的输⼊:
long lNum
问题的输出:
char chWord[50]
scanf输入整型数组初始算法
1 .初始化变量 lNum ;
2 .调⽤函数得到字符串;
3 .程序输出结果后退出。
算法细化
步骤 2 的细化
2 . 1 初始化临时变量
2 . 2 lNum!=0 时,循环执⾏得到各个位的数字
2 . 2 . 1 转换数字 ASCII 码
2 . 2 . 2 i 变量增 1
2 . 2 .
3 lNum=lNum/10 ,本步骤的⽬的有两个,⼀是结束循环,⼆是正确的得到数字
2 .
3 字符串最后加标志
2 . 4 循环进⾏数组的逆序
2 . 5 结束
流程图
程序执⾏流程图
#include<stdio.h>
#include<stdlib.h>
int main()
{
long lNum;
char chWord[50];
void IntInvertToChar(long lNum,char *chWord);
printf("please input an Integer:");
scanf("%ld",&lNum);
IntInvertToChar(lNum,chWord);
printf("The converted string is:");
printf("%s\n",chWord);
system("pause");
return 0;
}
void IntInvertToChar(long lNum,char *chWord)
{
int i=0,j;
char chTemp;
while(lNum!=0)
{
chWord[i]=lNum+'0';
i++;
lNum=lNum/10;
}
chWord[i]='\0';
for(j=0;j<i/2;j++)
{
chTemp=chWord[j];
chWord[j]=chWord[i-1-j];
chWord[i-1-j]=chTemp;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论