вы понимаете слово знак? а символ? ну может быть знак это типо !"№;%: а символы это могут быть знаки со смыслом. если же я не правильно понял то тогда они отличаются только названиями.
/*Дано трехзначное число. Найти сумму и произведение его цифр. Вывести число, полученное при прочтении исходного числа справа налево. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число. Вывести число, полученное при перестановке цифр сотен и десятков исходного числа (например, 123 перейдет в 213). Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).*/ #include <stdio.h> #include <clocale> void sp (int); //функция нахождения суммы и произведения цифр void sprnl (int); //функция прочтения числа справа налево void pervsl (int); //функция 3 :D void pervsp (int); //функция 4 :P void sotdes (int); //функция перестановки сотен и десятков void desedin (int); //функция перестановки десятков и единиц int main() { setlocale (2, ".1251"); int num; do { printf ("Введите число: "); while (!(scanf("%d", &num)) || num < 100 || num > 999) { fflush(stdin); printf ("\nОшибка. Введите заново: "); } sp (num); sprnl (num); pervsl (num); pervsp (num); sotdes (num); desedin (num); printf ("\n\n"); } while (1); return 0; } void sp (int a) { int sum=0, mult=1; while (a) { sum+=a%10; mult*=a%10; a=a/10; } printf ("\n\nСумма цифр равна: %d", sum); printf ("\nПроизведение цифр: %d", mult); } void sprnl (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПеревернутое число: %d", 100*a+10*b+c); } void pervsl (int num) { int a, b; a=num%100; b=num/100; printf ("\nЗачеркнули первую слева цифру и приписали ее справа: %d", a*10 + b); } void pervsp (int num) { int a, b; a=num%10; b=num/10; printf ("\nЗачеркнули первую справа цифру и приписали ее слева: %d", a*100 + b); } void sotdes (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПерестановка сотен и десятков: %d", b*100 + c*10 + a); } void desedin (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПерестановка десятков и единиц: %d", c*100 + a*10 + b);
Прикладываю исходник и скрин в приложении к ответу.
Несколько замечаний:
1. Большое количество комментариев внесено в код исключительно в учебных целях. В реальную программу переносить не рекомендуется - признак нехорошего тона.
2. У вас допущены синтаксические ошибки в двух последних циклах, а точнее - в операторах If, в которых стоит три условия (объединённых and), но нет ключевого слова "then" и последующих инструкций. Исправил.
3. Так же, автор вашей программы построил на мой взгляд нелогичную структуру алгоритма. Переменные min, min2 и min3, как я догадался, должны хранить три минимальных значения массива. А вот что происходит в вашей конструкции: первый цикл безошибочно находит наименьший элемент и записывает его в min, а последующие два цикла записывают в min2 и min3 первые попавшиеся(начиная с первого) элементы, если они больше min. Таким образом, нет никакой закономерности в том, что попадёт в эти переменные и сложно представить, для какой задачи потребовались бы такие случайности.
Одним из вариантов решения предлагаю изначально записывать в эти три переменные не значение первого элемента массива, а какое-то большое число, которое в массиве нам не встретится (например 100). Тогда цикл будет искать значения меньше 100 и перезаписывать им соответствующую переменную, пока не найдёт самое маленькое значение. В таком случае не очень стабильная переменная j нам так же не нужна, я её вычеркнул.
Вам отсылаю уже с учётом поправок, однако если вам требовалась именно первоначальная версия несмотря на её минусы, просто поправьте синтаксис в последних циклах (41 и 34 строчка на скрине) и пользуйтесь ей.
нечем
Объяснение:
вы понимаете слово знак? а символ? ну может быть знак это типо !"№;%: а символы это могут быть знаки со смыслом. если же я не правильно понял то тогда они отличаются только названиями.