我试了下先把整数倒序然后再输出为字符串,但是输出时第二个功能函数无法用我第一个功能函数得到的倒序得整数进行运算,最后输出了两个独立的结果,问问哪个大佬能帮看下哪里出了问题
代码如下:
#include <stdio.h>
//输出逆序整数
int convert(int x)
{
int sum = 0;
int d;
while(x > 0)
{
d = x%10;
sum = sum * 10 + d;
x = x/10;
}
return sum;
}
//输出位字符串形式,如x=123,则buf中是'1''2''3'
void trans(int x,char buf[])
{
int i,n=0;
int d = x;
while(d>0){n++;d/=10;}//计算位数
buf[n] = '\0';
n--;
while(n>=0)
{
buf[n] = x%10 + '0';
x = x/10;
n--;
}
}
//如果x=123,那么buf中是'3''2''1'
void trans2(int x,char buf[])
{
int d = x;
int i = 0;
while(d>0)
{
buf[i] = d%10 + '0';
d = d/10;
i++;
}
}
int main()
{
int x,number;
char buf[10];
printf("请输入一个数:");
scanf("%d",&x);
number = convert(x);
printf("%d\n",number);
trans(number,buf);
printf("字符:%s\n",buf);
trans2(number,buf);
printf("字符:%s\n",buf);
return 0;
}
倒序和转化为字符,一次就可以做完,供参考:
#include<stdio.h>
void convert(int n,char *s)
{
int k=0;
if(n < 0){
s[k++]='-';
n = -n;
}
while(n){
s[k++] = n%10 + '0';
n /= 10;
}
s[k] = '\0';
}
int main()
{
int num;
char s[32];
printf("请输入一个整数:");
scanf("%d",&num);
convert(num,s);
puts(s);
return 0;
}