Пример:
Дан текст. Слова в тексте разделяются пробелами. Найти все слова в которых доля букв ‘a’ и ‘b’ –максимальна. В словах оканчивающихся на “ing” заменить на “ed”.
Доля a: количество а в слове делим на количество букв в слове.
#include<stdio.h>
#include<string.h>
#include<alloc.h>
#define max 2000 //максимальная длина текста
#define max_l 20 //максимальная длина слова
#define max_k 30 //максимальное количество слов
void main(void)
{
char *text;
int leng;// длинна введенного текста
char mas_sl[max_k][max_l];
float kol[max_k];//доля букв а и b в каждом слове
char *str1="ing";
char *str2="ed";
int i,j=0,k=0;
float maxim;
text=(char*)malloc(max*sizeof(char));
clrscr();
gets(text);
leng=strlen(text);
for(i=0;i<leng;i++)//выделение слов текста
{if(text[i]!=' ')
mas_sl[k][j++]=text[i];
else{mas_sl[k][j]='\0';
k++;j=0;}
}
mas_sl[k][j]='\0';//для последнего слова
k++;
for(i=0;i<k;i++)
{j=0;kol[i]=0;
while(mas_sl[i][j]!='\0')
{if(mas_sl[i][j]=='a'||mas_sl[i][j]=='b')
kol[i]+=1;
j++;}
kol[i]/=j;
}
maxim=kol[0];
for(i=0;i<k;i++)
if(kol[i]>maxim)maxim=kol[i];
for(i=0;i<k;i++)
if(kol[i]==maxim)puts(mas_sl[i]);
for(i=0;i<k;i++)
{if(strcmp(str1,mas_sl[i]+(strlen(mas_sl[i])-3))==0)
{strcpy(mas_sl[i]+(strlen(mas_sl[i])-3),str2);
puts(mas_sl[i]);}
}
}
п.12.Функции.
В отличии от языка Паскаль, в языке Си все подпрограммы оформляются как функции.
Функция – это набор объявлений и операторов, реализующая логически завершенную часть алгоритма. Количество функций в программе не ограничивается. Все функции в языке Си являются глобальными, поэтому запрещается определять одну функцию внутри другой.
п.12.1.Объявление функции.(прототип функции)
Объявление функции задает тип возвращаемого значения, имя и список параметров функции, определенный где-то в другом месте программы. При вызове функции до ее определения выдается определение.
Синтаксис объявления:
[<тип возвращаемого значения>]<имя функции>([<список параметров>]);
Если тип возвращаемого значения опущен - предполагается тип int. Если функция значений не возвращает, следует объявлять ее типом void.Функция может возвращать значения любых типов, кроме массивов и функций, но указатели на эти объекты она возвращать может.
char * f (); // функция возвращает указатель на char.
Список параметров может отсутствовать, но круглые скобки обязательны. Если функция значений не принимает, в списке параметров следует указывать void.
<Список параметров> - это последовательность конструкций следующего вида : <тип><имя аргумента>, разделенных запятой.
Пример: float function (float a, float b, int c)
Имена формальных параметров в определении функции не обязательно должны совпадать с именами параметров, указанных в ее объявлении. Основное назначение этих имен – это повышение наглядности программ.
Замечание: Все функции языка Си (Си++) являются глобальными, т.е. запрещено объявлять одну функцию внутри другой.
п.12.2.Определение функции (описание).
Определение функции задает ее имя, тип возвращаемого значения, список формальных параметров и тело функции.
Синтаксис: [<тип возвращаемого значения>] <имя функции> ([<список формальных параметров>])
<тело функции>
Область действия идентификаторов, указанных в списке формальных параметров – тело функции.
Тело функции – это составной оператор или блок.
Нельзя объявлять локальные данные функции, совпадающие с именами формальных параметров, но возможно локальное переобъявление во вложенных блоках функции.
Формальные параметры.
Объявление формальных параметров имеет тот же синтаксис, что и объявление обычных переменных. Формальные параметры могут иметь базовый тип, быть структурой, объединением, массивом или указателем. Указание первой или единственной размерности для массива необязательно, т.к. при передачи массива в качестве параметра передается адрес первого элемента массива, а сами элементы не копируются. Поэтому для параметра массива следующие объявления будут эквивалентны:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.