Вывести первую цифру числа
Дано неотрицательное целое число. Найдите и выведите первую цифру числа. Формат входных данных: На вход дается натуральное число, не превосходящее 10000. Формат выходных данных: Выведите одно целое число — первую цифру заданного числа. Sample Input:
1234
Sample Output:
Вот мой код:
package main import "fmt" func main() < var a int fmt.Print("Введите число: ") fmt.Scan(&a) if a < 10000 < a = a / 100 / 10 fmt.Println(a) >else < fmt.Println("Вы превысили число, не должно превышать 10000") >>
Отслеживать
задан 26 авг 2019 в 18:16
63 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
А как вы решили бы эту задачку?
26 авг 2019 в 18:25
Я так решил ну сказали то что не правильно, любое натуральное число должно приходить например Sample Input: 234 Sample Output: 2
26 авг 2019 в 18:32
А вы свой код проверяли? Проверьте на числах разной длины, сразу станет видна ошибка.
26 авг 2019 в 19:22
да, проверял но он только работает с 4-х значным числом, а мне нужно чтобы работал 3-х значным и 2-х значным и всегда выводил первую цифру. Голову уже поломал какие только идеи не были и весь прикол в том что нужно сделать строго через условный оператор. Как бы условия задачи входит тоже
26 авг 2019 в 19:34
Исходное число вводится как строковый тип. Вот нафига его конвертировать в числовой тип, чтобы потом на выходе опять конвертировать в строковый? Опять же задание не предусматривает входного контроля и обработки неправильного ввода. И вообще задание противоречивое — согласно заданию, исходное число неотрицательное целое (в т.ч. возможен и ноль), но в описании входного формата оно натуральное.
Найти первую цифру числа
Добрый день,вроде бы задание не сложное ,но у меня возникает проблема,даже алгоритм есть ( не уверен в его правильности) нуждаюсь в помощи: Дано целое число,нужно определить его первую цифру с помощью элементарных операций (* / + -)
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Определить сколько цифр в числе, найти первую цифру числа,найти предпоследнюю цифра числа
Дано натуральное число n (n<10000). Определить сколько цифр в числе, найти первую цифру числа,найти.
Найти первую цифру числа
Дано натуральное число n. Найти первую цифру числа n
Переставить первую и последнюю цифру числа
Дано натуральное число n. Нужно переставить первую и последнюю цифру числа , например ввести.
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
Сообщение от Vtulhu
Только на самом деле надо вот так:
Ваше занудство начинает вызывать у меня даже нечто похожее на уважение
Добавлено через 3 минуты
Сообщение от ValeryS
какое первое число выдаст
Ну, ошибся человек. Не будем строго судить. Вечер на дворе. И всетки так:
while(n>9) n /=10;
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,527
Сообщение от Байт
ну это же тоже самое что и (n >= 10)
и скорее всего, правда не уверен, ассемблерный листинг будет идентичен
разумеется речь идет об целочисленных
при плавающих второй вариант предпочтительнее
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
Что-то я запутался в знаках. Наверное, я имел в виду > 9, но это то же самое, что >= 10.
Не знаю, что я имел в виду. Всё, пошёл спать.
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
Сообщение от Vtulhu
Всё, пошёл спать.
Спокойной ночи! Приятных снов! И пусть вам будет примером Менделеев!
12461 / 7485 / 1754
Регистрация: 25.07.2009
Сообщений: 13,764
До чего же у нас на форуме хеловорлды популярны. Третяя страница уже
1 2 3
unsigned first_digit(unsigned n) { return ( n 10 ) ? n : first_digit(n / 10); }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывести рекурсию числа и сравнить первую и последнюю цифру
рекурсию числа сделал, но когда пытаюсь сравнить нужные цифры введенного числа, при вводе.
Целой переменной D присвоить первую цифру из дробной части вещественного положительного числа
целой переменно D присвоить первую цифру из дробной части вещественного положительного числа .
Найдите все двузначные числа, сумма квадратов цифр которых делится на первую цифру без остатка
Найдите все двузначные числа, сумма квадратов цифр которых делится на первую цифру без остатка. на.
Или воспользуйтесь поиском по форуму:
Первая цифра числа
Найти первую цифру целого числа. Отсчёт начинать с наивысшего разряда.
Входные данные
Одно целое 64-х разрядное число, содержащее не менее одной цифры. Число может быть отрицательным.
Выходные данные
Выведите первую цифру заданного числа.
Алгоритм решения задачи
- Удаляем из числа последнюю цифру пока оно больше или равно 10;
Решение
using System; class Program < static void Main(string[] args) < var n = Math.Abs(Convert.ToInt64(Console.ReadLine())); while (n >= 10) < n /= 10; > Console.WriteLine(n); > >
Найти первую цифру числа
Добрый день,вроде бы задание не сложное ,но у меня возникает проблема,даже алгоритм есть ( не уверен в его правильности) нуждаюсь в помощи: Дано целое число,нужно определить его первую цифру с помощью элементарных операций (* / + -)
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Определить сколько цифр в числе, найти первую цифру числа,найти предпоследнюю цифра числа
Дано натуральное число n (n<10000). Определить сколько цифр в числе, найти первую цифру числа,найти.
Найти первую цифру числа
Дано натуральное число n. Найти первую цифру числа n
Переставить первую и последнюю цифру числа
Дано натуральное число n. Нужно переставить первую и последнюю цифру числа , например ввести.
12461 / 7485 / 1754
Регистрация: 25.07.2009
Сообщений: 13,764
Сообщение от HON3Y
целое число,нужно определить его первую цифру
Пока частное от деления на 10 больше нуля, делить на 10. Последнее отличное от нуля частное — первая цифра.
Ну или сделать вид, что не заметили
Сообщение от HON3Y
с помощью элементарных операций (* / + -)
1 2 3 4 5 6 7 8 9 10 11
#include #include int main(void) { unsigned n; while ( printf("Number: ") && scanf("%u", &n) == 1 && n ) printf("First digit: %u\n", n / (unsigned)pow(10.0, floor(log10(n)))); return 0; }
Регистрация: 28.07.2013
Сообщений: 13
А у меня вот так вот получилось. Используется только деление и возведение в степень. Можно вводить любое число.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include #include main() { int n=0; // Счетчик int a; //Это и будет первая цифра int integer; //Введенная цифра printf("Enter integer: "); scanf("%d", &integer); while(n>=0){ a = integer / pow(10,n); if (a0){ a = integer / pow(10,n-1); break;} n++; } printf("First digit is: %d", a); return 0; }
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
Вообще-то никто не запрещает отрицательному числу тоже состоять из цифр.
1 2 3 4 5 6 7 8 9 10
int first_digit(int n) { if( n 0 ) n = -n; int digit = 0; while( n ) { digit = n % 10; n /= 10; } return digit; }
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
Сообщение от Vtulhu
Вообще-то никто не запрещает отрицательному числу тоже состоять из цифр.
Но тогда первая цифра будет «-»
Ну и мои 2 копейки.
if (n0) n = -n; while (n >= 10) n /= 10;
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
Сообщение от Байт
Но тогда первая цифра будет «-»
Сообщение от Байт
while (n >= 10) n /= 10;
Мой способ интуитивно понятнее, что косвенно подтверждается тем, что Вы допустили элементарную ошибку. Хотя сам принцип мне очень нравится. А вот за оформление — неуд. Нельзя писать циклы в одну строку. Я раньше единственное исключение делал для for с тривиальным телом, но потом перестал. Даже пустые надо писать так:
while( *str++ ) ;
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
Сообщение от Vtulhu
А вот за оформление — неуд. Нельзя писать циклы в одну строку.
Сообщение от Vtulhu
Даже пустые надо писать так:
Пожалуйста пруф в виде ссылки на гайдлайн от гугла или ID Software.
12461 / 7485 / 1754
Регистрация: 25.07.2009
Сообщений: 13,764
Vtulhu, Байт, это самое отрицательное число запросто может INT_MIN равняться. Вы уж и эту ситуацию обрабатывайте как-нибудь, а то не комильфо как-то.
Сообщение от Vtulhu
Нельзя писать циклы в одну строку.
Разве-что по морально нравственным соображениям. Язык позволяет хоть всю программу в одну строку записать.
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
Сообщение от HighPredator
Пожалуйста пруф в виде ссылки на гайдлайн от гугла или ID Software.
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
Сообщение от Vtulhu
Да хоть от них обеих:
Сие для плюсов. Незачет.
Vtulhu, странные у Вас фантазии. Вы для них в сети более подходящее место поищите. На форуме программистов как-то не приветствуется.
Меню пользователя @ easybudda |
Посетить домашнюю страницу easybudda |
Регистрация: 12.01.2014
Сообщений: 48
Вот у меня алгоритм,но он весьма странный- a=c/10 b=c-a*10
но как привести это все в норм вид..
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
Сообщение от HON3Y
Вот у меня алгоритм,но он весьма странный- a=c/10 b=c-a*10
И впрямь есть некоторые странности, тк. это дает последнюю цифру числа c.
Сообщение от HON3Y
как привести это все в норм вид..
Что имеется в виду? Если запись на языке Си, то что-то вроде
1 2 3 4 5
int a, b, c; // Ввести с a = c/10; b = c - a*10; printf ("Last cifer=%d\n", b);
Добавлено через 2 часа 9 минут
Сообщение от easybudda
Байт, это самое отрицательное число запросто может INT_MIN равняться. Вы уж и эту ситуацию обрабатывайте как-нибудь, а то не комильфо как-то.
Вы абсолютно правы, и возражение может быть только одно. Что наши компьютеры? — Конечные автоматы, сколько тера-гига-байтов не набивай им в башку. И с простым натуральным рядом им не справиться. Кишка тонка у конечного автомата.
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,527
Сообщение от HON3Y
Вот у меня алгоритм,но он весьма странный- a=c/10 b=c-a*10
это все равносильно
b=c%10;
Регистрация: 12.01.2014
Сообщений: 48
нельзя использовать проценты,вот именно по этому я и создал тему
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
Сообщение от HON3Y
нельзя использовать проценты,вот именно по этому
Добавлено через 1 минуту
В посте #5 вы не одного процента не найдете
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,527
Сообщение от HON3Y
нельзя использовать проценты,
ну дак не используй
я тебе показал, что то что ты привел этои есть остаток от деления(как ты называешь проценты)
и чем тебе решение
Сообщение от Байт
while (n >= 10) n /= 10;
не угодило.
никаких «процентов»
после цикла в n первая цифра числа
Регистрация: 12.01.2014
Сообщений: 48
спасибо,вы мне очень помогли
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
Только на самом деле надо вот так:
1 2 3
while( n >= 9 ) { n /= 10; }
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,527
Сообщение от Vtulhu
Только на самом деле надо вот так:
какое первое число выдаст
если n =9 99 90 ну и так далее
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывести рекурсию числа и сравнить первую и последнюю цифру
рекурсию числа сделал, но когда пытаюсь сравнить нужные цифры введенного числа, при вводе.
Целой переменной D присвоить первую цифру из дробной части вещественного положительного числа
целой переменно D присвоить первую цифру из дробной части вещественного положительного числа .
Найдите все двузначные числа, сумма квадратов цифр которых делится на первую цифру без остатка
Найдите все двузначные числа, сумма квадратов цифр которых делится на первую цифру без остатка. на.
Или воспользуйтесь поиском по форуму: