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 |
|||||||
если число состоит более чем из одной цифры:
или через string:
1 |
повар1 784 / 591 / 317 Регистрация: 24.02.2017 Сообщений: 2,088 |
||||
22.12.2018, 20:55 |
3 |
|||
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
tonymoretonymore
3292 серебряных знака16 бронзовых знаков
6
string str = 1337.ToString();
Console.WriteLine(str[1]);
нумерация в строках такая же как и в массивах, но доступ по индексу к элементу доступен только для чтения
ответ дан 20 ноя 2017 в 4:55
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Андрей NOP
28.3k4 золотых знака39 серебряных знаков77 бронзовых знаков
Делим без остатка на 100, затем берём остаток от деления на 10. Не понимаю, зачем вам отправили конвертацию в строку и даже отдельную функцию с циклом.
ответ дан 23 дек 2020 в 20:43
ПавелПавел
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
1
За последние 24 часа нас посетили 12904 программиста и 975 роботов. Сейчас ищет 641 программист …
-
- С нами с:
- 19 дек 2019
- Сообщения:
- 2
- Симпатии:
- 0
Добрый день! Помогите, пожалуйста с лабораторной
С клавиатуры надо ввести число (проверить то, чтобы оно содержало более 2-х цифр) и найти его вторую с начала цифру -
Artur_hopf
Активный пользователь- С нами с:
- 7 май 2018
- Сообщения:
- 2.266
- Симпатии:
- 405
-
var input = document.querySelector(‘input’),
-
span = document.querySelector(‘span’);
-
input.onkeyup = function() {
-
span.innerHTML = ‘ второй символ: ‘ + val[1];
-
Команда форума
Модератор- С нами с:
- 11 июн 2010
- Сообщения:
- 10.915
- Симпатии:
- 1.197
- Адрес:
- там-сям
Не знаю почему @Artur_hopf решил сделать это на JS, в PHP ты можешь работать со строкой как с массивом.
$str[1] // это второй элемент строки, т.к. нумерация с 0
Надо только быть уверенным, что тип значения это не число, а строка. В данном случае, всё, что приходит через POST-параметры является строкой.Особые случаи: отрицательные числа, числа с десятичной точкой. Надо отбросить всё, что не является цифрами. Для этого идеально подходит регулярное выражение.
-
<label>Введите число:</label>
-
<input name=”number” type=”text”>
-
<input type=”submit” value=”Проверить”>
-
if ( !isset($_POST[‘number’]) ) {
-
$value = $_POST[‘number’]; // тип значения строковый, а не числовой!
-
$digits = preg_replace(‘/[^0-9]/’, ”, $value); // выбрасываем из строки всё, что не цифры
-
// echo “<p>Только цифры: {$digits}</p>”;
-
die(‘Число содержит менее двух цифр’);
-
echo “Вторая цифра это {$digits[1]}“;
— Добавлено —
Какое хорошее задание для новичков! Тут масса нюансов. Надеюсь, @Elizaveta, ты извлечешь из этого новые знания, а не просто скопируешь.
— Добавлено —
P.S. Вариант для командной строки, а не для Web:-
$handle = fopen (“php://stdin”,“r”);
-
$value = fgets($handle);// тип значения строковый, а не числовой!
-
$digits = preg_replace(‘/[^0-9]/’, ”, $value); // выбрасываем из строки всё, что не цифры
-
// echo “Только цифры: {$digits}n”;
-
die(‘Число содержит менее двух цифр’);
-
echo “Вторая цифра это {$digits[1]}“;
-
Так это вроде депрекейтид? //но это не точно)))
-
Команда форума
Модератор- С нами с:
- 11 июн 2010
- Сообщения:
- 10.915
- Симпатии:
- 1.197
- Адрес:
- там-сям
Нет. Последние нововведения: запрещено использовать фигурные скобки: $str{1}
— Добавлено —
Deprecated: Array and string offset access
syntax with curly braces is deprecatedПричем это уже второй такой запрет. Был в 5.1, но потом был отменён
— Добавлено —
С квадратными скобками, а также с подстановкой “расширенный синтаксис строки” всё в порядке. -
Ага, мерси. А то у меня отложилось что-то такое в памяти…