Доброго времени суток. Сегодня мы разберём несколько примеров, а точнее четыре, на работу с файлами в Си. Сразу скажу, если вы читали предыдущие статьи этой рубрики, то вам не составит труда разобраться в коде. Итак, не будем тянуть резину.
Вывести в файл каждое пятое число из диапазона [-45; 67]. Числа расположить в строках по восемь чисел в каждой. Вывести на экран в столбик все числа из этого диапазона с последней цифрой равной единице. Выполнить программу с использованием оператора цикла for().
Код:
#include <stdio.h> #include <stdlib.h> int main(void) { FILE*open; open = fopen("open.txt","w"); int n = 67, i = -45, e = 1; for (i = -45; i <= n ;i += 5, e++){ if (e < 8) { fprintf(open,"%d,", i); } else { e = 0; fprintf(open,"%d,\n", i); } } for (i = -45; i <= n; i ++ ){ if (i % 10 == 1 || i % 10 == -1) { fprintf(open,"\n%d", i); } } fclose(open); return EXIT_SUCCESS; }
Вывод в файле:
Даже не знаю какой комментарий тут оставить, все команды были разобраны, и алгоритм незамысловатый. =)
Давайте, тогда второй:
Вывести в файл десять случайных чисел кратных семи из диапазона [-578; 832]. Числа выводить в строчку, используя поле для вывода в 5 клеток. Выполнить программу с использованием оператора цикла for().
Код:
#include <stdio.h> #include <stdlib.h> int main(void) { FILE*open; open = fopen("open.txt", "w"); int n = 0, e = 0; for (e = 1 ; e <= 10 ; ){ n = -578 + rand() % (832 + 578 + 1); if (n % 7== 0){ e++; fprintf(open,"%5d", n); } } fclose(open); return EXIT_SUCCESS; }
Вывод в файле:
Суть этого примера в том, что мы увеличиваем переменную e только в том случаем, если «рандомное» число кратно 7.
К сожалению, больше ничего интересного в этом примере нет.
Ввести с клавиатуры дробное число. Если это число окажется положительным, то циклически отнимать от него 5 до тех пор, пока оно не станет отрицательным. Если оно отрицательное или ноль, то циклически прибавлять к нему случайные дробные числа до тех пор, пока оно не превысит 35. Вывести на экран в столбик промежуточные значения числа в формате «число + случайное_число = результат». Выполнить программу с использованием оператора цикла while или do- while.
Код:
#include <windows.h> #include <stdio.h> #include <stdlib.h> int main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); double n = 0,t = 0, r = 0; scanf("%lf", &n); if (n > 0) { do { n -= 5; }while (n >= 0); printf("Число отрицательное, уменьшается до %+.3lf", n); } else { while (n<= 35) { t = rand() % 100 / 10.0; r += n+t; printf("%.3lf + %.3lf = %.3lf\n", n, t, r); n += t; } } return EXIT_SUCCESS; }
Напомню, что команды SetConsoleCP(1251), SetConsoleOutputCP(1251) из библиотеки windows.h отвечают за корректный вывод кириллицы в консоль. В алгоритме ничего сложного нет. Но, если всё-таки не понятно — пишите в комментариях.
И последний на сегодня:
Ввести с клавиатуры целое число. Вывести на экран произведение четных и нечетных цифр в этом числе. Повторить процедуру для еще десяти таких чисел. Выполнить программу с использованием оператора цикла while для подсчета произведения цифр.
Код:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <windows.h> int main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); int n = 0, chet = 1, nechet = 1, i=0; for (i=1; i <= 10; i++) { chet = 1; nechet = 1; scanf("%d", &n); while (n>0){ if (n % 10 % 2 == 0) { chet *= n % 10; n /= 10; } else { nechet *= n % 10; n /= 10; } } printf("Перемножение чётных = %d, перемножение нечётных = %d\n", chet, nechet); } return EXIT_SUCCESS; }
Суть алгоритма в отрезании по одной цифре справа числа, с помощью команды % ( деление без остатка ). Определяем чётная цифра или нет, и перемножаем с соответствующей группой. Замечу, что 0 относится к чётным в нашей программе.
Вот и всё. Пишите вопросы, комментируйте, всем ответим.
Все исходники без файлов txt.
Скачать исходники задачи — 1
Скачать исходники задачи — 2
Скачать исходники задачи — 3
Скачать исходники задачи — 4
Будьте первым, кто оставит комментарий