Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курс ПЯВУ 2 сем / Практические / Пр №16.Макрокоманды

.odt
Скачиваний:
12
Добавлен:
17.04.2015
Размер:
17.26 Кб
Скачать

Разработка макрокоманд

    1. Примеры препроцессорных констант.

    2. Макрокоманда SUM

    3. Макрокоманда RAS

    4. Макрокоманда PROD

    5. Макрокоманда DIV

    6. Макрокоманда МАХ

    7. Макрокоманда MIN

    8. Макрокоманда QVADR

    9. Макрокоманда KUBE

    10. Макрокоманда SDVIG

//Примеры использование препроцессорных констант.

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#define TWO 2

#define FOUR TWO*TWO

#define PX printf("X равно %d.\n", x)

#define FMT "X равно %d.\n"

#define SQUARE(X) X*X

int main()

{

int x = TWO;

PX;

x = FOUR;

printf(FMT, x);

x = SQUARE(3);

PX;

system("pause");

return 0;

}

//X равно 2.

//X равно 4.

//X равно 9.

//Макрокоманда SUM Cуммирование двух чисел.

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#define SUM(a,b) ((a)+(b))

int main()

{

int i,j,ma;

i=5;

j=5;

ma=SUM(i,j);

printf("i= %i j= %i ma= %i \n",i,j,ma);

system("pause");

return 0;

}

// 5 5 10

//Макрокоманда RAS

//#define RAS(x, ó) ((õ) - (ó))

#include<stdio.h>

#define RAS(x,y) ((x)-(y))

#include <stdlib.h>

int main()

{

int s,x=3,y=5;

s=RAS(x,y);

printf("Сложение 3 - 5 = %d\n", s) ;

printf("Сложение 3.4 - 3.1 = %f\n", RAS(3.4, 3.1));

printf("Сложение -100 - 1000 = %d\n", RAS(-100, 1000));

system("pause");

return 0;

}

//3-5=-2

//3.4-3.1=0.3

//

//МакрокомандаPROD произведение двух чисел

//#define PROD(x, у) ((х) * (у))

#include<stdio.h>

#define PROD(x,y) ((x)*(y))

#include <stdlib.h>

int main()

{

int s,x=3,y=5;

s=PROD(x,y);

printf("Сложение 3 - 5 = %d\n", s) ;

printf("Сложение 3.4 - 3.1 = %f\n", PROD(3.4, 3.1));

printf("Сложение -100 - 1000 = %d\n", PROD(-100, 1000));

system("pause");

return 0;

}

//3*5= 15

//3.4*3.1=10.94

//

//Макрокоманда деление

//#define DIVV(x, у) ((х) / (у))

#include<stdio.h>

#define DIVV(x,y) ((x)/(y))

#include <stdlib.h>

int main()

{

int s,x=3,y=5;

s=DIVV(x,y);

printf("Сложение 3 / 5 = %d\n", s) ;

printf("Сложение 3.4 /3.1 = %f\n", DIVV(3.4, 3.1));

printf("Сложение -100 * 1000 = %d\n", DIVV(-100, 1000));

system("pause");

return 0;

}

//3/5= 0

//3.1/3.1=1.54

//

// Макрокоманда МАХ

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#define max(a,b) ((a>b)? (a):(b))

int main()

{

int i,j,ma;

i=1;

j=7;

ma=max(i,j);

printf(" max= %i i= %i j= %i \n",ma,i,j);

system("pause");

return 0;

}

//7 1 7

//Макрокоманда МАХ

//#define ÌIN(x,y) (((x)<(y)) ? (x):(y))

#include<stdio.h>

#define MIN(x,y) (((x)<(y)) ? (x):(y))

#include <stdlib.h>

int main()

{

int s,x=3,y=5;

s=MIN(x,y);

printf("Максимум 3 5 = %d\n", s) ;

system("pause");

return 0;

}

//3 5= 3

//Макрокоманда QWADR

#include<stdio.h>

#include <stdlib.h>

#define QWADR(x) x*x

int main()

{

int s,x=3,y=5;

s=QWADR(x);

printf( «Квадрат 3*3= %d\n", s) ;

system("pause");

return 0;

}

//3 *3= 9

//Макрокоманда KUBE

#include<stdio.h>

#include <stdlib.h>

#define KUBE(x) x*x*x

int main()

{

int s,x=3,y=5;

s=KUBE(x);

printf("Куб 3*3= %d\n", s) ;

system("pause");

return 0;

}

//3 *3= 27

//Макрокоманда SDVIG

#include<stdio.h>

#include <stdlib.h>

#define SDVIG(vall,n) ((n>0)?(vall<<n):(vall>>-n))

int main()

{

int s,x=3,n=1;

s=SDVIG(x,n);

printf("Сдвиг 3<< 1= %d\n", s) ;

s=SDVIG(x,-n);

printf("Сдвиг 3>> 1= %d\n", s) ;

system("pause");

return 0;

}

//3 <<1 = 6

//3>>1 =1

// Ротация на 1 бит влево

#include <stdio.h>

#include <stdlib.h>

#define ROTAZL(a) ((a&200)>>7)|(a<<1);

int main(void)

{

unsigned char a=0300;

c=RORTZL(a);

printf("a= %o \n ",c);

system ("pause");

return 0;

}

//a=300 b=0 x=200

//a=201 b=1 x=200

Домашнее задание.

Разработать алгоритм и написать программу ротации вправо на n бит.