Решения (задачи 180-197)
Задача 180.
// Преобразует десятичное число в шестнадцатеричное #include <stdio.h> #include <conio.h> void main() int n; // Исходное число int r; // Остаток от деления числа на основание // системы счисления char st[5]; // Представление числа в заданной // системе, счисления int i; printf("\п Преобразование десятичного числа); printf("в шестнадцатеричное\п"); printf("Введите целое число › "); scanf("%d", &n); // делим исходное число на 16 до тех пор, // пока остаток от деления больше 16 printf("\п Десятичному числу %d", n); printf(" соотвествует шестнадцатеричное "); st[5] = '\0'; i = 4; do { r=n%16; // очередная цифра n = n / 16; // целая часть рез-та деления if (г < 10) / st[i- ] = г + 48; // (int)'0'=48, (int) Ч'=49 и т. д. else st[i- ] = г + 55; // (int) 'A'=65, (int) 'B'==66 // и т. д. } while (n > 0); // удалим начальные пробелы int j = 0; while(st[i]) st[j] = '\0'; printf("%s\n", st); printf("\п Для завершения нажмите Enter"); getch();
Задача 181.
// Вычисление значения арифметического выражения #include <stdio.h> (#include <conio.h> ftinclude "stdlib.h" void main() { char st[40]; // строка char buf[10]; // изображение очередного числа char op; // оператор int rez; // значение выражения int n; // очередное число int i,j; printf("Хп Введите арифметическое выражение,\п"); printf("например, 45+5-3-125+2 и нажмите <strong>Enter</strong>"); printf("(пробелы и другие знаки недопустимы)\п"); printf(" › "); scanf("%s", &st); rez = 0; // значение выражения op = '; i = j = 0; while(st[i]) // выделить число 0; while (st[i] >= '0' && st[i] <= '9') buf[j++] = st[i++]; buf[j] = '\0'; n = atoi(buf); // преобразовать строку в целое // выполнить действие switch (op) case '+': rez += n; break; case '-': rez – = n; break; case ' ': rez = n; break; // первое число примера // выделить знак операции op = st printf("Значение введенного выражения: %d", rez); printf("\п Для завершения нажмите Enter"); getch();