2013-09-13 3 views
-4

Я начинаю использовать C. Я хочу объединить два целых числа в 1. См. Пример кода.Комбинирование двух целых чисел в 1?

#include <stdio.h> 

int main() 
{ 
    int age[4]; 
    int mouse[4]; 
    mouse[0]=50; 
    age[0]=23; 

    age[1]=mouse[0]age[0]; 

    printf("%d",age[1]); 
    return 0; 
} 

Как вы можете видеть, у меня есть 50 у мышей [0], 23 в возрасте [0], и я хочу, возраст [1], чтобы быть 5023.

Что это самый простой способ сделать это? Это будет небольшая часть большого кода, поэтому я действительно хочу сохранить его простым. И извините глупые имена переменных!

Спасибо всем!

+5

Умножить и добавить? –

+0

Если вы ищете само выражение «объединение двух целых чисел в одно», вы получите десятки ударов. –

+0

@OliCharlesworth (или google) –

ответ

0

age[1] = 1000*mouse[0] + age[0]

Если вы хотите получить более общее решение, тот, который не зависит от mouse[0] быть две цифры, вы могли бы определить функцию, чтобы получить число цифр:

int digits(int num) { 
    return ceil(log10(num)); 
} 

Тогда вам может объединить целые числа, как так:

age[1] = ((int)pow(10, digits(mouse[0])))*mouse[0] + age[0]; 
2

вы не можете сцепить целые числа так: вам нужно сделать это через какую-то элементарную математику ,

Придумайте «объединение» как умножение с последующим добавлением:

age[1] = mouse[0]*100 + age[0]; 

Вот как это работает:

A = 23 
B = 50, B*100 = 5000 

    23 
+ 5000 
------ 
    5023 

Обратите внимание, что этот трюк работает только тогда, когда второй номер имеет ровно две цифры. Когда второе число имеет цифры N, вам необходимо умножить первое число на N-й степени десять до выполнения добавления.

+0

Глупая арифметическая ошибка: у вас есть дополнительный ноль –

0

Я думаю, что вы имели в виду age[1]=mouse[0]age[0]; быть age[1]=mouse[0]+age[0]; Если вы всегда можете быть уверены, что величины двух чисел (например, две цифры), а затем просто умножить на 100, чтобы сдвинуть цифры над age[1]=mouse[0] * 100 + age[0];

Если вы не» знаю точные цифры, то вы можете рассчитать, сколько нужно сдвинуть значение над использованием log10:

age[1] = mouse[0] * (int)pow(10, (int)log10(age[0])) + age[0];

0

с OP делает конкатенацию, завуалированный в текст, конкатенации, а затем обратно int.

char buf1[64+64]; 
char buf2[64]; 
sprintf(buf1, "%d", mouse[0]); 
sprintf(buf2, "%d", age[0]); 
strcat(buf1, buf2); 
age[1] = atoi(buf1); 

Есть несколько способов преобразования int в текст, sprintf() просто один удобный один. Также было много сообщений для преобразования текста в int. Вы должны следить за значком - и переполнением буфера.

0

Кажется, вас интересует конкатенация текстового представления двух ints.

int mouse = 50; 
int age = 23; 

char combi[BUFSIZ];/*char array to contain the "combination"*/ 

/*print two ints together in one c-string*/ 
snprintf(combi, BUFSIZ, "%d%d", mouse,age); 
printf("value = %s\n", combi); /*print as string*/ 

Это будет печатать value = 5023 на терминал, в некоторых интерпретируемых языках один может конкатенацию строк легко и текстовые и числовое представление преобразуются автоматически, однако в C это должно быть сделано очень тщательно.

Смежные вопросы