使用printf作为变量转换打印的数字

时间:2016-05-30 19:27:20

标签: c int printf

我有

int main ()
{
    int x=69057;
    int y=23
    printf("%d", x);
    printf("%d", y);
    return 0;
}

它打印6905723.如何将打印的数字转换为整数?我做不到

int z=6905723

因为在原始程序中我不知道x和y有什么价值。

4 个答案:

答案 0 :(得分:0)

你在这里想要做的是将x乘以大于y的10的最小幂,然后将y加到它上。

假设x和y小到不会溢出long结果,你可以这样做:

int x = 69057;
int y = 23
int temp = y;
long result = x;
while (temp > 0) {
    result *= 10;
    temp /= 10;
}
result += y;

printf("%ld\n", result);

答案 1 :(得分:0)

以下是{@ 1}}的答案。即使您之前不了解int zx,它仍然有效。您只需要确保答案实际上符合y

int

如果int main () { int x=69057; int y=23 char buff[512]; sprintf(buff, "%d%d", x, y); int z = atoi(buff); /* Now z is equal to 6905723 */ return 0; } 是一个负数,你会遇到问题,但是在你的问题中你并不清楚你在那种情况下想要发生什么。

答案 2 :(得分:0)

试试这个。非常简单

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
    int x,y,z,a,b;
    x=69057;
    y=23;
    printf("x=%d y=%d\n",x,y);
    a = log10(y) + 1;
    for (b=0;b<a;b++)
    {
        x*=10;
    }
    z=x+y;
    printf("z=%d",z);
    return 0;
}

答案 3 :(得分:-1)

您可以编写一个函数来为您完成:

#include <stdio.h>

int my_function(int x, int y);

int main()
{
    int x = 69057;
    int y = 23;
    int z = my_function(x, y);
    printf("%d\n", z);
    return 0;
}

int my_function(int x, int y)
{
    int tmp = y;
    do {
        x *= 10;
    } while (tmp /= 10);
    return x + y;
}