Как найти вторую цифру числа сначала

0 / 0 / 0

Регистрация: 22.12.2018

Сообщений: 3

1

Найти вторую (с начала) цифру данного натурального числа

22.12.2018, 19:24. Показов 7617. Ответов 2


Студворк — интернет-сервис помощи студентам

Допусти есть число 1299, должно вывести 2.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

22.12.2018, 19:24

2

Yetty

7427 / 5021 / 2891

Регистрация: 18.12.2017

Сообщений: 15,694

22.12.2018, 19:43

2

если число состоит более чем из одной цифры:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int n;
    cout <<"n="; cin >>n;
 
    while (n > 100) { 
        n /= 10;
    }
    
    cout <<n%10<<"n";
    
system("pause");
return 0;
}

или через string:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    string s;
    cout <<"Enter number: "; cin >>s;
    
    cout <<s[1]<<"n";
    
system("pause");
return 0;
}



1



повар1

784 / 591 / 317

Регистрация: 24.02.2017

Сообщений: 2,088

22.12.2018, 20:55

3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <sstream>
using namespace std;
 
int main()
{
  int n;
  stringstream s;
 
  cin>>n;
  s<<n;
  n=s.str()[1]-'0';
  cout<<n;
  system("pause");
  return 0;
}



0



#include <stdio.h>
#include <math.h>
 
#define digits(n) ( (int)log10(n) + 1 )
 
int main(void) {
    unsigned n, a, b, c;
    
    printf("Number: ");
    scanf("%u", &n);
    printf("A = ");
    scanf("%u", &a);
    printf("B = ");
    scanf("%u", &b);
    printf("C = ");
    scanf("%u", &c);
    
    if ( n < 10 )
        printf("Number %u contain only one digit.n", n);
    else
        printf("The second digit is %un", n / (int)pow(10, digits(n) - 2) % 10);
    
    printf("%sevided into %u evenlyn", ( n % a ) ? "Don't d" : "D", a);
    printf("%sevided into %u evenlyn", ( n % b ) ? "Don't d" : "D", b);
    printf("%sevided into %u evenlyn", ( n % c ) ? "Don't d" : "D", c);
    
    return 0;
}

При помощи операции нахождения остатка и целочисленного деления можно достаточно несложно вычислить любую цифру числа.

Рассмотрим программу получения цифр двузначного числа:

num = 17
a = num % 10
b = num // 10
print(a)
print(b)

Результатом выполнения программы будут два числа:

7
1

То есть сначала мы вывели последнюю цифру числа, а затем первую цифру.

Запомни: последняя цифра числа определяется всегда как остаток от деления числа на 10 (% 10). Чтобы отщепить последнюю цифру от числа, необходимо разделить его нацело на 10 (// 10).

Рассмотрим программу получения цифр трёхзначного числа:

num = 754
a = num % 10
b = (num % 100) // 10
c = num // 100
print(a)
print(b)
print(c)

Результатом выполнения программы будут три числа:

4
5
7

То есть сначала мы вывели последнюю цифру числа, затем среднюю цифру, а затем первую цифру.

Алгоритм получения цифр n-значного числа

Несложно понять, по какому алгоритму можно найти каждую цифру n-значного числа num:

  • Последняя цифра: (num % 101) // 100;
  • Предпоследняя цифра: (num % 102) // 101;
  • Предпредпоследняя цифра: (num % 103) // 102;
  • …..
  • Вторая цифра: (num % 10n-1) // 10n-2;
  • Первая цифра: (num % 10n) // 10n-1.

Решение задач

Задача 1. Напишите программу, определяющую число десятков и единиц в двузначном числе.

Решение. Число единиц – это последняя цифра числа, число десятков – первая цифра. Чтобы получить последнюю цифру любого числа, нужно найти остаток от деления числа на 10. Чтобы найти первую цифру двузначного числа, нужно поделить число нацело на 10. Программа, решающая поставленную задачу, может иметь следующий вид:

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Число десятков =', first_digit)
print('Число единиц =', last_digit)

Задача 2. Напишите программу, в которой рассчитывается сумма цифр двузначного числа.

Решение. Программа, решающая поставленную задачу, может иметь следующий вид:

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Сумма цифр =', last_digit + first_digit)

Задача 3. Напишите программу, которая печатает число, образованное при перестановке цифр двузначного числа.

Решение. Программа, решающая поставленную задачу, может иметь следующий вид:

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Искомое число =', last_digit * 10 + first_digit)

Задача 4. Напишите программу, в которую вводится трёхзначное число и которая выводит на экран его цифры (через запятую).

Решение. Программа, решающая поставленную задачу, может иметь следующий вид:

num = int(input())
digit3 = num % 10
digit2 = (num // 10) % 10
digit1 = num // 100
print(digit1, digit2, digit3, sep=',')

Как определить цифру из данного числа?
Например, число 1337 состоит из 4 цифр. Как узнать вторую цифру ?

задан 20 ноя 2017 в 4:46

tonymore's user avatar

tonymoretonymore

3292 серебряных знака16 бронзовых знаков

6

string str = 1337.ToString();
Console.WriteLine(str[1]);

нумерация в строках такая же как и в массивах, но доступ по индексу к элементу доступен только для чтения

ответ дан 20 ноя 2017 в 4:55

Alexandr's user avatar

AlexandrAlexandr

4542 серебряных знака15 бронзовых знаков

Способ без превращения числа в строку (будет работать быстрее):

static void Main(string[] args)
{
    int n = 534534623;
    int d = GetSecondDigit(n);
    Console.WriteLine(d);
    Console.ReadKey();
}

static int GetSecondDigit(int k)
{
    while (k >= 100) k /= 10;
    int d = k % 10;
    return d;
}

Хотя, конечно, если у вас на входе строка, то проще получить второй символ по индексу (как в соседнем ответе).

ответ дан 20 ноя 2017 в 6:08

Андрей NOP's user avatar

Андрей NOPАндрей NOP

28.3k4 золотых знака39 серебряных знаков77 бронзовых знаков

Делим без остатка на 100, затем берём остаток от деления на 10. Не понимаю, зачем вам отправили конвертацию в строку и даже отдельную функцию с циклом.

ответ дан 23 дек 2020 в 20:43

Павел's user avatar

ПавелПавел

543 бронзовых знака

1


        Console.WriteLine("Введите трехзначное число");
        int.TryParse(Console.ReadLine()!, out int k);
    
        if (k>999 || k<100)
        {
        Console.WriteLine("Не трехзначное число!!!");
        return;
        }
        int GetSecond(int k)
        {
        while (k >= 100) k /= 10;
        int d = k % 10;
        return d;
        }
        Console.WriteLine(GetSecond(k));

мэйби как то так?

ответ дан 16 мар в 11:07

KatrinBlade's user avatar

1

За последние 24 часа нас посетили 12904 программиста и 975 роботов. Сейчас ищет 641 программист …


  1. Elizaveta

    С нами с:
    19 дек 2019
    Сообщения:
    2
    Симпатии:
    0

    Добрый день! Помогите, пожалуйста с лабораторной
    С клавиатуры надо ввести число (проверить то, чтобы оно содержало более 2-х цифр) и найти его вторую с начала цифру


  2. Artur_hopf

    Artur_hopf
    Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405

    1. var input = document.querySelector(‘input’),
    2.     span = document.querySelector(‘span’);
    3. input.onkeyup  = function() {
    4.         span.innerHTML = ‘ второй символ: ‘ + val[1];


  3. artoodetoo

    Команда форума
    Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.915
    Симпатии:
    1.197
    Адрес:
    там-сям

    Не знаю почему @Artur_hopf решил сделать это на JS, в PHP ты можешь работать со строкой как с массивом.
    $str[1] // это второй элемент строки, т.к. нумерация с 0
    Надо только быть уверенным, что тип значения это не число, а строка. В данном случае, всё, что приходит через POST-параметры является строкой.

    Особые случаи: отрицательные числа, числа с десятичной точкой. Надо отбросить всё, что не является цифрами. Для этого идеально подходит регулярное выражение.

    1.   <label>Введите число:</label>
    2.   <input name=”number” type=”text”>
    3.   <input type=”submit” value=”Проверить”>
    4. if ( !isset($_POST[‘number’]) ) {
    5. $value = $_POST[‘number’]; // тип значения строковый, а не числовой!
    6. $digits = preg_replace(‘/[^0-9]/’, , $value); // выбрасываем из строки всё, что не цифры
    7. // echo “<p>Только цифры: {$digits}</p>”;
    8.   die(‘Число содержит менее двух цифр’);
    9. echo “Вторая цифра это {$digits[1]};

    — Добавлено —
    Какое хорошее задание для новичков! Тут масса нюансов. Надеюсь, @Elizaveta, ты извлечешь из этого новые знания, а не просто скопируешь.
    — Добавлено —
    P.S. Вариант для командной строки, а не для Web:

    1. $handle = fopen (“php://stdin”,“r”);
    2. $value = fgets($handle);// тип значения строковый, а не числовой!
    3. $digits = preg_replace(‘/[^0-9]/’, , $value); // выбрасываем из строки всё, что не цифры
    4. // echo “Только цифры: {$digits}n”;
    5.   die(‘Число содержит менее двух цифр’);
    6. echo “Вторая цифра это {$digits[1]};

  4. Так это вроде депрекейтид? //но это не точно)))


  5. artoodetoo

    Команда форума
    Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.915
    Симпатии:
    1.197
    Адрес:
    там-сям

    Нет. Последние нововведения: запрещено использовать фигурные скобки: $str{1}
    — Добавлено —
    Deprecated: Array and string offset access
    syntax with curly braces is deprecated

    Причем это уже второй такой запрет. Был в 5.1, но потом был отменён :)
    — Добавлено —
    С квадратными скобками, а также с подстановкой “расширенный синтаксис строки” всё в порядке.

  6. Ага, мерси. А то у меня отложилось что-то такое в памяти…

Добавить комментарий