
- •Основы программирования язык “с” Минск – 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онтрольные вопросы
- •Какие операции определены со строками?
Void main()
{
const int n=6;
int x[n],i,buf,j,k;
for(i=0;i<n;i++){
printf("x[%d]=",i);
scanf("%d",&x[i]);
}
for( i=0;i<=n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(x[k]>x[j])
k=j;
}
buf=x[i];
x[i]=x[k];
x[k]=buf;
}
for(i=0;i<n;i++)
printf("x[%d]=%d\n",i,x[i]);
}
Сортировка массива по убыванию, выбором наибольшего элемента
Сортировка массива по методу Шелла, по возрастанию.
На начальном этапе сравниваются элементы отстоящих на n/2 друг от друга и если есть необходимость, происходит перемещение этих элементов. Причем сравнение элементов на расстоянии n/2 происходит до тех пор, пока не было ни одного обмена. Далее сравниваются элементы, отстоящие на n/4 и т.д. пока не будут сравниваться соседние элементы.
Данная сортировка считается высоко производительной.
#include<stdio.h>
Void main()
{
const int n=6;
int x[n],i,buf,j,k,k1;
for(i=0;i<n;i++){
printf("x[%d]=",i);
scanf("%d",&x[i]);
}
for( k=n/2;k>0;k/=2){
do{
k1=0;
for(i=0,j=k;j<n;i++,j++){
if(x[i]>x[j]){
buf=x[i];
x[i]=x[j];
x[j]=buf;
k1++;
}
}
}while(k1);
}
for(i=0;i<n;i++)
printf("x[%d]=%d\n",i,x[i]);
}
Сортировка массива по методу Шелла, по убыванию.
Введите два индекса, и поменять местами элементы.
Ввести 20 мерный массив и отсортировать от 0 до 9 пузырьковым методом по возрастанию, и от 10 до 19 нахождением минимального элемента.
Введите два массива целых чисел. Второй массив упорядочен по возрастанию своих значений. Определить, какие числа первого массива входят и во второй массив.
#include<stdio.h>
#define MAXSIZE 100
Void main(){
int i,sz1,sz2,k,k1,j;
Int arr1[maxsize],arr2[maxsize],buf;
do{
printf("\nВведите размеры массивов: ");
scanf("%d%d",&sz1,&sz2);
}while((sz1>MAXSIZE)||(sz2>MAXSIZE));
printf("\nВвод I-го массива:\n");
for(i=0;i<sz1;i++)
scanf("%d",&arr1[i]);
printf("\nВвод II-го массива:\n");
for(i=0;i<sz2;i++)
scanf("%d",&arr2[i]);
//Сортировка II-го массива
for(i=0;i<sz2-1;i++){
for(k=i,j=i+1;j<sz2;j++)
if(arr2[k]>arr2[j])
k=j;
buf=arr2[i];
arr2[i]=arr2[k];
arr2[k]=buf;
}
printf("Числа входящие в оба массива:\n");
for(i=0;i<sz1;i++){
if(arr1[i]==arr2[sz2/2]){
printf("%d ",arr1[i]);
continue;
}
if(arr1[i]>arr2[sz2/2]){
k=sz2/2+1;
k1=sz2;
}
else{
k=0;
k1=sz2/2;
}
for(j=k;j<k1;j++)
if(arr1[i]==arr2[j]){
printf("%d ",arr1[i]);
continue;
}
}
}
Введите два массива вещественных чисел. Второй массив упорядочен в порядке убывания. Определить, какие числа первого массива входят и во второй массив.
Даны координаты n точек. x1,y1,x2,y2,…….xn,yn. Найти координаты точек, которые находятся на максимальном расстоянии друг от друга.
#include<stdio.h>
Void main()
{
const int n=4;
int x[2*n]={-8,-5,
5,10,
10,8,
8,-2};
int max_ab,max1,max,i_a,i_b,i1,i2,i,j;
max_ab=max=0;
i_a=0;
i_b=0;
for(i=0;i<2*n-2;i+=2)
{
i1=i;
for(j=i+2,i2=j;j<2*n;j+=2)
{
max1=(x[i]-x[j])*(x[i]-x[j])+(x[i+1]-x[j+1])*(x[i+1]-x[j+1]);
if(max<max1)
{
max=max1;
i1=i;i2=j;
}
}
if(max>max_ab)
{
max_ab=max;
i_a=i1;
i_b=i2;
}
}
printf("max (%d,%d) i (%d,%d)\n",x[i_a],x[i_a+1],x[i_b],x[i_b+1]);
}