2015-12-06 4 views
0

Как я могу прочитать цифру в виде одной цифры в номере?Чтение цифр в виде отдельной цифры из большого числа

int main() { 
long long int num1; 
printf("enter number: "); 
scanf("%lld", &num1); 

например, если пользовательский ввод 123456789, как я могу использовать 4 как одну цифру?

+1

Там действительно нет такого t hing как «цифра» в «номере», например, десятичная цифра «123» == восьмеричная «723» - это первая цифра «1» или «7»? Возможно, вы имеете в виду строку символов, например «0x31323300» (для символов ASII «1», «2» и «3»)? – paulsm4

ответ

4

Потому что в вызове scanf() используется спецификатор %lld, который интерпретирует ввод в базовую десятку, мы можем предположить, что вы хотите цифры в базе десять. Предполагая, что число положительно:

  1. Первый разделите на десять. Чтобы извлечь шестую цифру справа, разделите ее на 10, которая имеет шесть цифр, например 100000. Это дает 1234. Если вы хотите получить переменную цифру, вы можете использовать повторное деление на 10 для перемещения правильной цифры в место, как показано в Ashiquzzaman's answer. Если вы вместо этого хотите цифры слева, начните с подсчета цифр в числе: разделите его на 10, пока коэффициент не станет равным нулю.
  2. Используйте оператор по модулю %, чтобы извлечь остаток от деления на 10. Это дает 4.

Если число является отрицательным, division in C rounds toward zero. Это означает, что -123456789 будет производить -1234 после первого шага и -4 после второго.

+0

Самый разумный ответ на глупый вопрос – paulsm4

+0

@ paulsm4 это не глупый вопрос. Я новичок в C, поэтому дай мне перерыв. =) – Batool

+0

OK, Batool. Но вы понимаете, что в «цифре» нет абсолютного значения «цифры»? Получаете ли вы, что * все * полученных вами ответов (а также несколько других, разных ответов, которые вы могли получить), являются «правильными» ... в зависимости от того, как вы определяете проблему? Как символ в строке, в результате в арифметическом выражении базы-десяти ... или, возможно, как «что-то еще» целиком? Это действительно не имеет ничего общего с «С» ... и все, что связано с «пониманием вычислений». – paulsm4

0

Прочти как последовательность символов (в основном, как если бы это была строка), используя% с в зсапЕ в цикле, пока EOF не читается

int main() 
{ 
    int digit; 

    printf("enter number: "); 
    digit = getchar(); 
    while (digit != EOF) 
    { 
    /* Process digit */ 
    digit = getchar(); 
    } 
} 
0

Вы можете сохранить введенные как символ * и доступ к цифрам с char [3] для четвертой цифры?

1

Вы можете взять вход в long long int затем извлечь цифру следующим образом:

#include <stdio.h> 
#include<math.h> 
int getDigit(long long number, int idx) 
{ 
    number = abs(number); 
    while(idx--) 
     number/=10; 
    return number%10; 
} 
int main() 
{ 
    long long int num1; 
    int indexOfDigit = 4; 
    printf("enter number: "); 
    scanf("%lld", &num1); 
    printf("%d\n", getDigit(num1, indexOfDigit)); 
} 

ввода пробы: 123456789

Пример вывода: 5

для объяснения см answer из tepples

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