s1e29动动手
#include <stdio.h>char *myitoa(int num, char *str);
char *myitoa(int num, char *str)
{
int dec = 1;
int i = 0;
int temp;
if (num < 0)
{
str = '-';
num = -num;
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
}
while (dec != 0)
{
str = num / dec +'0';//这里为什么要加‘0’呢?左边是char,右边是int,为什么可以这么转换呢?
num = num % dec;
dec /= 10;
}
str = '\0';
return str;
}
int main(void)
{
char str;
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
}
从十一到二十九哪里就不太懂原理,里面一步步都是在干嘛能稍微细讲一下吗,大佬们,球球了{:10_296:} 先看程序,有注释,若还不明白,提出来
#include <stdio.h>
char *myitoa(int num, char *str);
char *myitoa(int num, char *str)
{
int dec = 1;
//保存数字的权值
int i = 0;
//字符数组的索引
int temp;
//临时过渡
if (num < 0)
{
str = '-';
num = -num;
//如果数字是负数,将字符数组的首字符填充为负号,并把数字转化为正值
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
//如果temp大于10,判断数字的位数
}
while (dec != 0)
{
str = num / dec + '0';
num = num % dec;
dec /= 10;
//循环迭代拆分数字,并转化为字符填充字符数组
}
str = '\0';
//添加字符数组结束符
return str;
//返回字符数组的指针
}
int main(void)
{
char str;
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
} 风过无痕1989 发表于 2020-10-11 08:39
先看程序,有注释,若还不明白,提出来
三十里面的while不是很懂dec应该是num数字的位数那拿他去除num的意思是什么呢,然后还加字符0搞不懂 gzq44 发表于 2020-10-11 08:48
三十里面的while不是很懂dec应该是num数字的位数那拿他去除num的意思是什么呢,然后还加字符0搞不懂
num 是数字,除以权值(注意,经过第23行运算,权值已经不是 1 了)是为了数字的各位分开,然后以字符形式存入数组。第30句是循环条件,只要权值不为0,循环就继续 风过无痕1989 发表于 2020-10-11 09:20
num 是数字,除以权值(注意,经过第23行运算,权值已经不是 1 了)是为了数字的各位分开,然后以字符形式 ...
我是不太懂三十里面那个循环的意思{:10_278:} gzq44 发表于 2020-10-11 09:33
我是不太懂三十里面那个循环的意思
比如说 dec = 1234560789,那个循环在没有遇到 0,继续循环,遇到 0循环便结束,于是就只能将 123456进行分割,并存入字符数组(第32行),0789被舍去了。第32行、第33行对下一位数(第33行除10)进行新的权值设置 风过无痕1989 发表于 2020-10-11 09:51
比如说 dec = 1234560789,那个循环在没有遇到 0,继续循环,遇到 0循环便结束,于是就只能将 123456进行 ...
num为什么要除以dec在家字符0,num又为什么要被dec求余?最后dec为什么还得被除以10呢,我是这个意思{:10_319:} gzq44 发表于 2020-10-11 10:37
num为什么要除以dec在家字符0,num又为什么要被dec求余?最后dec为什么还得被除以10呢,我是这个意思{:10 ...
将数 12345 分开成一个一个数字的方法:
int 12345 / 10000 = 1;
int 12345 % 10000 = 2345;
int 2345 / 1000 = 2;
int 2345 % 1000 =345;
int 345 / 100 = 3;
int 345 % 100 =45;
int 45 / 10 = 4;
int 45 % 10 = 5;
这个能看得懂吗?
页:
[1]