BigEdu.ru
» » » Программирование на языках высокого уровня
Вернуться назад

Программирование на языках высокого уровня

Задача 1
Составить программу на языке С/С++, содержащую:
- объявления и инициализацию указателей на различные типы объектов:
переменные, массивы, структуры;
- объявления и инициализацию указателей с различными модификаторами (const, near, far, huge);
- преобразования указателей различных типов, в том числе типа void.
#include
#include
#include
void main(void)
{
//переменные
const double Eu=8.1;
double *pEu=(double*)&Eu;
*pEu=4.6;
//изменения константы Eu с помощью указателя
cout<<Eu<<"\n";
//массивы
float Y[]={1,2,3,4,5,6}; //указатель на масив вещественного типа
float *pY=Y; //pY указывает на начало массива y[]
//структуры
struct komp
{
char proc [20];
int memory;
};
komp *Celeron=NULL; //инициализированный указатель на объект типа komp
komp MStar[]={"Celeron2000",512,"Pentium2500",512};
Celeron=&MStar[0];
cout<<"\n"<<Celeron<<"\t"<<Celeron->proc<<"\t"<<Celeron->memory;
//модификаторами (const, near, far, huge)
double St[]={8.1,3.3,1.4};
double *const pSt=&St[2]; //инициализированный константный указатель
//на элемент массива типа float
//преобразования указателей различных типов
unsigned long A=12345678;
char *char_=(char*)&A; //указатель на объект типа char
int *int_=(int*)&A; //указатель на объект целого типа
float *float_=(float*)&A; //указатель на объект вещественного типа
cout<<A<<"\t"<<(void*)char_<<"\t"<<int_<<"\t"<<float_<<"\n";
cout<<A<<"\t"<<*char_<<"\t"<<*int_<<"\t"<<*float_;
cerr<<" ";
void *vp;
int i=77;
float f=2.7;
vp=&i;
cout<<"*(int*)vp="<<*(int*)vp;
vp=&f;
cout<<"*(float*)vp="<<*(float*)vp;
cerr<<" ";
getch();
}
Задача 2
Составить программу на языке С/С++, содержащую:
- простейшие действия с одномерными массивами (как числовыми, так и символьными),
используя указатели, методы доступа к элементам массивов через указатели;
- простейшие действия с многомерными массивами (как числовыми, так и символьными),
используя указатели, методы доступа к элементам массивов через указатели;
- всевозможные операции с указателями.
*/
#include
#include
#include
void main(void)
{
//одномерные массивы
int x[]={4,5,6,7,2,4,6};
char ch[]="ABCD";
char ch1[]={'A','B','C','D'};
int *px=x;
char *pch=ch;
char *pch1=ch1;
for(int i=0;i=0;i--) cout<<*(pch1+i)<<"\t";
cout<<"\n";
for(i=0;i<4;i++) cout<<*(pch1++)<<"\t";
//многомерные массивы
int A[3][3]={1,2,3,4,5,6,7,8,9};
char B[3][3]={'A','B','C','D','E','F','G','H','\0'};
cout<<*(*(A+1))<<"\n";
int C[3][2][4]=
{ 0, 1, 2, 3,
10, 11, 12, 13,
100, 101, 102, 103,
110, 111, 112, 113,
200, 201, 202, 203,
210, 211, 212, 213
};
cout<<***C<<"\n";
cout<<*(*(*(C+1)+1)+3)<<"\n";
int sum=0;
for(int i=0;i<3;i++)
for (int j=0;j<2;j++)
{
cout<<"\n";
for(int k=0;k<4;k++)
{
sum+=*(*(*(C+i)+j)+k);
cout<<*(*(*(C+i)+j)+k)<<"\t";
}
}
cout<<"\n"<<sum;
cerr<<" ";
}
Задача 3
Составить программу на языке С/С++, содержащую:
- объявления указателей на функции и передачи аргументов с помощью указателей;
- доступ к содержимым по указателям.
*/
#include
#include
#include
void f1(int *x)
{
cout<<*x;
}
int** f2(int *x)
{
int **z= new int*[*x];
for (int i=0;i<*x;i++) z[i] = new int[*x];
for (i=0;i<(*x);i++)
for (int j=0;j<(*x);j++)
*(*(z+i)+j)=i+j;
return z;
}
void main(void)
{
int A=5;
void (*fun)(int*);
fun=f1;
int *pa=&A;
(*fun)(pa);
int **pf=NULL;
int (**(*fun1)(int*));
fun1=f2;
pf=(*f2)(pa);
cout<<"\n"<<**pf;
for (int i=0;i<(*pa);i++)
{
cout<<"\n";
for (int j=0;j<(*pa);j++)
cout<<*(*(pf+i)+j)<<"\t";
}
cerr<<" ";
}
Задача 4
Составить программу на языке С/С++, содержащую:
- динамическое размещение массивов;
- интерпретацию составных описателей.
11
Задача 1
а) Создать программу определения факториала числа n, использующую цикл (любой - for или while).
б) Составить описание рекурсия математическими терминами.
в) Разработать схему рекурсивных вызовов.
г) Составить программу определения факториала числа n, использующую рекурсию.
д) Проанализировать работу рекурсивной функции с помощью отладчика.
е) Сделать сравнительный анализ работы двух программ.
*/
а)
#include
void main()
{
int i;
cout << "Введите число:";
cin >> i;
// расчет факториала
int j, fact=1;
for (j=i; j>=1; j--) fact*=j;
cout << "Факториал равен:" << fact;
}
г)
#include
long fact(int f)
{
if (f<0) return (0);
if (f==0) return (1);
return (f*fact(f-1));
}
Задача 2
Написать программу рекурсивной функции Аккермана с использованием основной функции ackr и
вспомогательной функции smacc. Составить описание рекурсия математическими
терминами. Разработать схему рекурсивных вызовов. Проанализировать работу рекурсивной
функция с помощью отладчика.
*/
#include
#include
void main(void)
{
//clrscr();
int x,y,n;
long t;
int ackr(int,int,int);
printf("\nВведите 3 целых положительных числа:\n");
n=3,x=3,y=3;
//scanf("%d%d%d",&n,%x,&y);
t=ackr(n,x,y);
printf("Результат вычисления функции Акермана = %ld",t);
getch();
}
int smacc (int n, int x)
{
switch (n)
{
case 0: return (x+1);
case 1: return (x);
case 2: return (0);
case 3: return (1);
default: return (2);
}
}
int ackr(int n, int x, int y)
{
int z;
int smacc(int,int);
if(n==0||y==0)z=smacc(n,x);
else
{
z=ackr(n,x,y-1);
z=ackr(n-1,z,x);
}
return z;
}
Задача З
Подобрать собственный пример, иллюстрирующий работу рекурсивной функции.
Составить программу, выполнить ее анализ.
*/
Рекурсивный ввод и печать списка.
#include
#include
struct cell
{
char sign[10];
int weight;
struct cell *pc;
};
struct cell* input(void)
{
struct cell *p;
p=(struct cell *)malloc(sizeof(struct cell));
printf("Sign=");
scanf("%s",& p->sign);
printf("Weight=");
scanf("%d",& p->weight);
if(p->weight==0)
{
free(p);
return NULL;
}
p->pc=input();
return p;
}
void output(struct cell *p)
{
if (p==NULL)
{
printf("\nEND");
return;
}
printf("\nsign=%s\tweight=%d",p->sign,p->weight);
output(p->pc);
}
void main(void)
{
struct cell *beg=NULL;
beg=input();
printf("\nBegin");
output(beg);
}
12
Задача 1
Создать несвязанный числовой список в виде массива. Распечатать его.
Выполнить следующие операции с несвязанным списком:
а) найти максимальный по модулю элемент;
б) вставить за ним новый элемент, равный по величине, но противоположный по знаку;
в) Новый список распечатать.
*/
#include
#include
#include
int abc (int x) {return x>0?x:-x;}
void main(void)
{
int d[100]={1,2,300,-4,-50,6,7},L=7;
int max = 0;
//максимальный по модулю элемент
for (int i=0;iabc(d[max])) max=i;
printf("MAX element= |%d|",d[max]);
//добавление нового элемента за МАХ элеме
for (int j=L-1; j>max; j--)
d[j+1]=d[j];
d[max+1]=-d[max]; L++;
//исключить первый элемент списка
for (j=0; j<L; j++)
d[j]=d[j+1];
L--;
//новый список
cout<<"\n";
for (i=0;i<L;i++) cout<<d[i]<<"\t";
cerr<<" ";
}

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Задача 1 Составить программу на языке С/С++, содержащую: - объявления и инициализацию указателей на различные типы объектов: переменные, массивы,
Оценок: 489 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru