Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все вопросы..docx
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
158.31 Кб
Скачать

5.Ввод, вывод символов. Копирование файла.

1. Ввод-вывод символов осуществляется при помощи стандартных функций.

char c=getchar();//завели переменную с типа чар, и считали в нее символ

putchar (С) ;//вывели этот символ

2.Копирование файла

# include <stdio.h>

void main(void)

{

int c=getchar(); //ввели символ

while (c!=EOF)

{

putchar(c);//вывели с

c=getchar();//считали с вновь. Таким образом, копирование закончится, когда будет достигнут конец файла

}

}

6.Подсчет числа символов в файле

# include <stdio.h>

void main(void)

{

long nc;//завели переменную nc типа long

nc=0;//инициализируем эту переменную

while (getchar()!=EOF)//пока нами не достигнут конец файлов, мы наращиваем префиксно(т.е. увеличение nc произойдет до конца текущего шага цикла)

++nc;

printf("len of string=%d\n", nc);//выводим результат

}

7.Подсчет числа строк в файле.

предполагаем, что строка заканчивается символом новой строки, т.е. нам нужно посчитать число таких символов*/

# include <stdio.h>

void main(void)

{

long nc;//завели переменную nc типа long

nc=0;//инициализируем эту переменную

while (char c=getchar()!=EOF)// пока нами не достигнут конец файла, мы выполняем проверку ниже

if (c=='\n')//там же мы инициализировали переменную с, она живет только в теле while

++nc;//так же префиксно увеличиваем число nc

printf("quantity of string's=%d\n", nc);//выводим результат

}

8.Подсчет числа символов, строк и слов в файле.

/*пусть слова у нас разделяются произвольным количеством пробелов, табуляций или символов новой строки, тогда*/

# include <stdio.h>

void main(void)

{

long nc;//завели переменную nc типа long, хранит количество строк

nc=0;//инициализируем эту переменную

long wc;//завели переменную nc типа long, хранит количество слов

wc=0;

long len;//завели переменную nc типа long, хранит количество символов

len=0;

bool swich;//переключатель, который имеет два значения - 0 или 1. Если один - мы в слове, если 0 -вне его. соответственно, нам нужно считать количество передергиваний

while (char c=getchar()!=EOF)//пока нами не достигнут конец файлов, мы выполняем проверку ниже

{

len++;

if (c=='\n')//там же мы инициализировали переменную с, она живет только в теле while

++nc;//так же префиксно увеличиваем число nc

if (c!=' '&&c!='\t'&&c!='\n')

swich=1;//это значит, что мы в слове

else

{

if (swich==1)//если у нас переключатель включен, значит, мы были в слове, и мы его выключаем. Если же будет второй пробел или другой символ,

//ничего описаннного ниже просто не произойдет

{

swich=0;

wc++;

}

}

}

printf("quantity of string's=%d\n", nc);//выводим результат

printf("quantity of word's=%d\n", wc);

printf("quantity of symbols=%d\n", len);

}

9.Подсчет числа каждой цифры, символов пустых промежутков и всех остальных символов.

# include <stdio.h>

void main(void)

{

char c;//вводимый символ

int nblanks;//счетчик пустых промежутков

int another;//счетчик остальных символов

int digits[10];//массив счетчиков цифр

int i;//переменная цикла

nblanks=another=0;

for (i=0; i<10; i++)

digits[i]=0;

while((c=getchar())!=EOF)//пока считываемый символ не является концом файла

{

if (c==' '||c=='\t'||c=='\n')//если символ - один из символов пустых промежутов, нарастили счетчик

nblanks++;

if (c>='0'&&c<='9')//если у нас одна из цифр, наращиваем соответствующий счетчик цифр. Не стоит забывать, что мы работаем с кодами,

digits[c-'0']++;//поэтому приходится отнимать от кода числа код 0, чтобы перейти к самому числу

else //т.е. это не пустой, не число, значит, какой-то левый, его-то мы и увеличим

another++;

}

printf("nblanks=%d\n",nblanks);//тут у нас просто вывод результата

printf("another=%d\n",another);

for (i=0; i<10; i++)

printf("%6d",digits[i]);//%6d значит, что на вывод числа у нас 6 позиций, выравнивание по правому краю

printf("\n");//перевод на новую строку

}