发布网友 发布时间:2022-04-22 04:38
共3个回答
热心网友 时间:2023-10-03 14:39
在这里先假设n的值为123。
*s = '0'+i%10; i%10相当于取i取的个位数,即数字3. 字符0 加上 整数3就是字符3.(这个要弄明白哦)。所以字符s的字为3.
itoa(i/10,s-1); i/10即 123/10 = 12. 迭代函数, 字符指针s后退一位,s-1 = 2;
同理推出 s-2 = 1.itoa(n,str+5); str的长度是7。
即:str[0],str[1],str[2],str[3],str[4],str[5],str[6].
str + 5 即把地址指向 str[5].
看函数itoa(),
n为 123 时
str[0] = '';
str[1] = '';
str[2] = '';
str[3] = '1';
str[4] = '2';
str[5] = '3';
str[6] = '';
热心网友 时间:2023-10-03 14:39
#include
#include
用
main()
{int
x,n,k,i,z,y;
char
a[100];
scanf("%d",&x);
for(n=0;;n++)
for(定义值;条件;增量
)
{if(pow(10,n)<=x&&pow(10,n+1)>x)
{y=n;
goto
fu;}}
fu:
a[0]='\0';
for(n=y;n>=0;n--)
{k=x/pow(10,n);
x-=k*pow(10,n);
for(i=0;i<=y;i++)
if(a[i]=='\0')a[i]=k+48;}
printf("%s\n",a);}
错误太多了
再有转换只能由字符到整
不能倒过来
热心网友 时间:2023-10-03 14:40
改你的代码真是太麻烦了,你看看哪些地方修改了吧。前面的define
pow是编译器不同造成的。
#include
#include
int
power(int
a,
int
n)
{
return
pow((double)a,
n);
}
#define
pow
power
int
main()
{
int
x,
n,
k,
i,
z,
y;
char
a[100]
=
{};
//清零
scanf("%d",&x);
for(n=0;;n++)
{
if(pow(10,
n)
<=
x
&&
pow(10,n+1)
>
x)
{
y
=
n;
break;
//goto
fu;
}
}
//fu:
//a[0]='\0';
for(n=y;
n>=0;
n--)
{
k
=
x/pow(10,
n);
x
-=
k*pow(10,
n);
for(i=0;
i<=y;
i++)
{
if(a[i]
==
'\0')
{
a[i]
=
k+'0'/*48*/;
break;
}
}
}
printf("%s\n",
a);
return
0;
}