
- •Основы программирования язык “с” Минск – 2005
- •§1 Введение в программирование
- •Void main()
- •Void main()
- •Void main()
- •2 Распечатать свою фамилию следующим образом
- •3. Распечатать прямоугольник следующим образом
- •1.1 Простые программы: печать стоки текста Понятие переменной.
- •Volatile while
- •1.2 Целый тип данных
- •1.3 Числа с плавающей точкой
- •Void main({
- •1.4 Символьный тип
- •Void main()
- •§2 Управляющий структуры
- •2.1 Структура выбора if (если) и if/else(если - иначе)
- •Void main()
- •Void main()
- •2.2 Структуры повторенийfor(цикл)
- •Void main()
- •Void main()
- •2.3 Структура повторения while (пока)
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •Void main()
- •2.4 Структура многомерного выбора switch
- •Void main()
- •Void main()
- •2.5 Операторы continue и break
- •Void main()
- •Void main()
- •2.6 Контрольные вопросы:
- •§3 Функция
- •Int printf(“const char * string”,…); %[флаг][ширина][точность][модификатор типа] тип_формата
- •Int scanf(const char * format, ……); возвращаемое значение – число считанных полей
- •3.1 Определение функции:
- •3.2 Классы памяти.
- •3.3 Указатели
- •Void main()
- •Void fff(int,int,int*,int*,int*,double*);
- •Void main()
- •Void fff(int a,int b,int*p1,int*p2,int*p3,double*p4)
- •Генерация случайных чисел.
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •3.6 Переменные перечисляемого типа
- •Int rollDice();
- •Void main()
- •Int sum,myPoint;
- •Int rollDice(){
- •Int die1,die2,workSum;
- •Void main()
- •§4 Массивы
- •4.1 Одномерные массивы
- •Int array[10];
- •4.2 Примеры использования массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •4.3 Сортировки массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Int arr1[maxsize],arr2[maxsize],buf;
- •Void main()
- •4.4 Передача массивов функции
- •4.5 Двумерные массивы
- •Void main()
- •Int I,j,temp;
- •Void main()
- •4.6 Контрольные вопросы:
- •§5 Символьная строка
- •5.1 Объявление символьной строки
- •Void main()
- •Void main()
- •Int srav(char *,char *);
- •Void main()
- •Int srav(char *X,char *y)
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •5.3 Массив строк
- •Void main()
- •Void main()
- •Void main()
- •§6 Динамическое распределение памяти
- •6.1 Функция malloc()
- •Void * malloc(unsigned size)
- •Void free(free *ptr)
- •Void main(){
- •Void main(){
- •Void vvod_mas(int*,int);
- •Void sort_vozr(int*,int);
- •Void main()
- •Vvod_mas(ptr1,n1);
- •Vvod_mas(ptr2,n2);
- •Void sort_vozr(int*X,int n)
- •Void vvod_mas(int*X,int n)
- •6.2 Функция сalloc()
- •Void * сalloc(unsigned num ,unsigned size)
- •6.3 Функция realloc()
- •Void * realloc(void *ptr ,unsigned size)
- •§7 Структура
- •7.1 Объявление структуры
- •Void main()
- •7.2 Объединения
- •§8 Файлы и потоки
- •8.1 Объявления файла
- •Int feof(file *);
- •8.2 Работа с текстовым файлом
- •Int fprintf(file *, const char format, …);
- •Void main()
- •Int account;
- •Int fputs(const char *, file *);
- •Int fscanf( file *, const char *format, …..);
- •Void main()
- •Void main()
- •Int account;
- •Void main()
- •Int fseek(file *,long ,int );
- •Void main()
- •Void main()
- •Void main()
- •Void show_file(file *k1)
- •Void dobav_file(file *k1)
- •Void fill_file(file *k1)
- •Создание файла произвольного доступа.
- •8.3 Работа с бинарным файлом
- •Void main()
- •Void main()
- •Void print_file(file *);
- •Void main(){
- •If(feof(k1)){
- •If(feof(k2)){
- •Void print_file(file *k){
- •8.4 Kонтрольные вопросы
- •Какие операции определены со строками?
Int srav(char *,char *);
Void main()
{
char x[100],y[100];
int l;
puts("Введите строку: ");
gets(x);
puts("Введите строку: ");
gets(y);
l=srav(x,y);
if(l==0)
printf("строки одинаковы==\n");
else
printf("строки не одинаковы!=%d\n",l);
}
Int srav(char *X,char *y)
{
for(int i=0;x[i] || y[i];i++)
{
if(x[i]>y[i])
return 1;
if(x[i]<y[i])
return -1;
}
return 0;}
5.2 Функции работы со строками из библиотеки <string.h>
char*strcpy(char*s1,const char*s2); копирует строку s2 в строку s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строку s2 и символ конец строки содержащий в копирующей строке. Возвращает значение строки s1.
char*strcnpy(char*s1,const char*s2, size_t n); копирует не более n символов строки s2 в строку s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строку s2 и символ конец строки содержащий в копирующей строке. Возвращает значение строки s1.
char*strcat(char*s1,const char*s2); добавляет строку s2 строке s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строки s1 и s2, а так же символ конец строки. Возвращает значение строки s1.
char*strncat(char*s1,const char*s2, size_t n); добавляет не более n символов строки s2 в строке s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строки s1 и s2, а так же символ конец строки. Возвращает значение строки s1.
int strcmp(const char*s1,const char*s2); сравнивает посимвольно строки s1 и s2, возвращает 0, если строки одинаковы, 1 если встречается хотя бы один символ в строке s1, код которого больше, чем код символа строки s2 и -1, если встречается хотя бы один символ в строке s1, код которого меньше, чем код символа строки s2.
int strcnmp(const char*s1,const char*s2,size_t n); сравнивает не более n символов строки s1 и s2, возвращает 0, если строки одинаковы, 1 если встречается хотя бы один символ в строке s1, код которого больше, чем код символа строки s2 и -1, если встречается хотя бы один символ в строке s1, код которого меньше, чем код символа строки s2.
size_t strlen(const char*s); определяет длину строки s и возвращает количество символов, предшествующих символу конец строки. sise_t – это целый без знака тип, который определен в <stddef.h>
char*strtok(char*s1,const char*s2); функция разбивает строку s1 на лексему (последовательность символов, отделенной символом разделителем, разделителем обычно служат пробелы или знаки пунктуации и задается как строка s2). Если последовательно вызывать strtok, можно разбить строку s1 на логические куски, разделенные символом, содержащим в строке s2. Первый вызов содержит в качестве первого аргумента строку s1, а последующие вызовы для обработки той же строки, содержит в качестве первого аргумента NULL. При каждом вызове возвращает указатель на текущую лексему.
#include<stdio.h>
#include<string.h>
Void main()
{
char x[]="afs,gaf, agshdfah, ash%%gdha, as%gda%";
char *ptr;
printf("разбитие строки на лексемы:\n");
ptr=strtok(x,",");
while(ptr!=NULL)
{
printf("%s\n",ptr);
ptr=strtok(NULL,",");
}
}
В результате работы данной программы получим:
разбитие строки на лексемы:
afs
gaf
agshdfah
ash%%gdha
as%gda%
Задачи:
Имеем 4 строки, например char x[20], y[20], z[20], t[80]; В первую строку вводим фамилию, во-вторую имя, а в третью отчество и используя функции из библиотеке <string.h> записываем в строку z сначала фамилию потом пробел, имя пробел и отчество пробел. Распечатываем только строку z.
Введите строку. Если длина строки а) больше 10, то удалить два последних символа; б) меньше 10, то удалить два первых символа; в) равно 10, то удалить символ по середине.
Ввести число и распечатать, те цифры данного числа, которые делятся на 2.
Ввести число и посчитать произведение цифр данного числа.
Ввести число и распечатать цифры данного числа через два пробела. Например, если ввели 123456, то печатает 1 2 3 4 5 6.
Ввести строку, которая содержит целые числа и преобразовать ее в число.
#include<stdio.h>