谁能帮我解释一下这个课后题看不懂啊itoa那个
#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';
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;
} 哪个课后题????? 嘉岳呀 发表于 2021-2-4 14:57
哪个课后题?????
参数和指针自己写一个类似于itoa函数那个 #include <stdio.h>
char *myitoa(int num, char *str);
char *myitoa(int num, char *str)//两个参数,第一个是待转换数据,第二个是char类型指针,用于存放转换结果
{
int dec = 1;
int i = 0;
int temp;
if (num < 0)//先判断num的正负,看是否需要在字符串前面写负号
{
str = '-';//num为负数,str为'-',str,i在前,先使用i,在对i自加一
num = -num;//将nuam取反,变为正数
}
temp = num;//将临时变量赋值为num,后面需要判断num是多少位,但又要保持num不被改变,所以就定义了一个临时变量temp。
while (temp > 9)//使用temp循环,判断num有多少位,num有多少位,dec结果就有多少位
{
dec *= 10;
temp /= 10;
}
while (dec != 0)//循环,根据位数,从高位开始,逐位向str中添加
{
str = num / dec + '0';//获取当前位的数字,并转为数字对于的ASCII码值,然后添加到字符串中
num = num % dec;//num去掉当前的最高位
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;
} #include <stdio.h>
char * myitoa(int num , char * str)
{
int d , k , m ;
char c ;
d = (num > 0) ? num : - num ;
for(m = 0 ; d ; d /= 10 , m ++) * (str + m) = '0' + (d % 10) ;
if(num < 0) * (str + m ++) = '-' ;
* (str + m) = '\0' ;
for(k = 0 ; k < m / 2 ; k ++) {
c = * (str + k) ;
* (str + k) = * (str + m - 1 - k) ;
* (str + m - 1 - k) = c ;
}
return str ;
}
main(void)
{
char s ;
printf("%s\n" , myitoa(-12345678 , s)) ;
printf("%s\n" , myitoa(987654321 , s)) ;
} itoa 这个函数是将 int 型转换为字符型。itoa 将它分开来,就便于记忆了 i (int) to a (alphabet)
页:
[1]