
- •Основы программирования язык “с” Минск – 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онтрольные вопросы
- •Какие операции определены со строками?
3.3 Указатели
Указатель – это особый вид переменной, который хранит адрес элемента памяти, где может быть записано значение другой переменной.
Определение указателя:
тип_данных *имя_указателя;
тип_данных – это тип на который будет указывать указатель;
* - определяет тип указатель;
имя_указателя – это имя переменной, которая хранит адрес переменной, на которую будет указывать указатель;
*имя_указателя – это содержание адреса, на который указывает указатель.
Указатель можно представить в виде стрелки.
Что распечатает данная программа?
#include<stdio.h>
Void main()
{
int x=67,*p;//х - это переменная целого типа, а p указатель на целый тип
p=&x;// присвоение адреса переменной х переменной p
printf("\n%d\n",*p);
*p=*p+3;
printf("%d\n",x);
}
Операция & является адрес переменной в памяти и может использоваться практически со всеми типами данных, кроме констант и битовых полей. Указатель часто используется для обмена данных с функциями. В то время, как в функцию можно передавать столько аргументов сколько требуется, а с помощью оператора return возвращается только одно значение. Когда возникает необходимость вернуть более, чем одного значения с помощью одной функции используются указатели.
Пример:
Функция, которая получает 2 целых числа и возвращает сумму, произведение, разность и деление данных чисел.
#include<stdio.h>
Void fff(int,int,int*,int*,int*,double*);
Void main()
{
int x,y,sum,pr,raz;
double del;
printf("Введите 2 целых числа: ");
scanf("%d%d",&x,&y);
fff(x,y,&sum,&pr,&raz,&del);
printf("%d+%d=%d\n",x,y,sum);
printf("%d-%d=%d\n",x,y,raz);
printf("%d*%d=%d\n",x,y,pr);
printf("%d/%d=%.2lf\n",x,y,del);
}
Void fff(int a,int b,int*p1,int*p2,int*p3,double*p4)
{
*p1=a+b;
*p2=a*b;
*p3=a-b;
*p4=(double)a/b;
}
Задачи:
В main() объявляем 2 переменный, потом вызываем функцию, где вызываем функцию scanf() и записывает в эти переменные числа, которые распечатываются в main().
Функция которая получает только 3 значения из main() и возвращает в первую переменную выражение a+b+c –(a*a); во вторую a*a +b*b-c*c, а в третью a*b*c, т.е если начальные значения a=3, b=2,c=1, то теперь в a храниться -3, b храниться 14, а в c 6.
Функция получает два числа и меняет местами значения переменны.
Генерация случайных чисел.
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
Void main()
{
int n;
for(int i=1;i<=120;i++)
{
n=rand();
printf("n%d=%d\n",i,n);
}
}
Функция rand() генерирует числа в диапазоне от 0 до 32767, т.е. до положительного максимального двухбайтного целого значения и прототип функции rand и функции srand находится в <stdlib.h>. Чтобы регулировать ширину диапазона используется операция вычисления остатка %, n = a + rand()%(b-a+1), т.е. [a,b],
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
Void main()
{
int n;
for(int i=1;i<=20;i++)
{
n=1+rand()%10;
printf("n%d=%d\n",i,n);
}
}
для того чтобы при новом вызове программы числа были разные необходимо включить функцию srand (unsingned int), которая получает в качестве аргумента число в пределах от 0 до 65535, если unsingned int в 2-х байтах и от 0 до 4294967295 если в 4-х байтах, и для того чтобы каждый раз не задавать различные числа передаем функцию time(NULL); прототип, которой находится в <time.h>
3.5 Некоторые функции из <time.h>
time_t time(time_t*timer); Функция time определяет текущее календарное время. Функция time возвращает наилучшее приближение текущего календарного времени, обеспечиваемое реализацией. Если календарное время не доступно, то возвращаемое значение (time_t, которое является арифметическим типом, используемый для предоставления времени) -1. Если timer не является нулевым указателем, то возвращаемое значение помещается в объект, на который ссылается указатель.
#include<stdio.h>
#include<time.h>
#include<stdlib.h>