计算机程序设计C++(第8周基础练习)

计算机程序设计C++ MOOC

测试与作业C++基础练习100题

##第八周基本练习

本周为数组与指针的应用

  1. 使用指针输出数组元素
    在这里插入图片描述
#include "iostream"

using namespace std;

int main()
{
	int a[20], *pa,temp,n=0;
	for (pa = a; pa < a + 20; pa++)
	{
		cin >> temp;
		if (temp == 9999)break;
		*pa = temp;
		n++;
	}
	for (pa = a; pa < a + n-1;pa++)
	{
		cout << *pa << " ";
	}
	cout << *pa;
	return 0;
}
  1. 通过指针输入输出数组元素的函数
    在这里插入图片描述
#include "iostream"

using namespace std;

int input(int *p)
{
	int temp, n = 0;
	cin >> temp;
	while (temp != 9999)
	{
		*p = temp;
		p++;
		n++;
		cin >> temp;
	}
	return n;
}

void print(int *p, int n)
{
	cout << *p;
	p++;
	n--;
	while(n)
	{
		cout << " " << *p;
		p++;
		n--;
	}
}

int main()
{
	int a[100],n;
	n = input(a);
	print(a, n);
	return 0;
}
  1. 指针实现字符串复制函数
    在这里插入图片描述
#include "iostream"

using namespace std;

char *mystrcp(char *s1, char *s2)
{
	int n = 0;
	while (*s2 != '\0')
	{
		*s1 = *s2;
		s1++;
		s2++;
		n++;
	}
	*s1 = *s2;
	return s1-n;
}

int main()
{
	char s1[100], s2[100];
	cin >> s2;
	cout << mystrcp(s1, s2) << endl;
	return 0;
}
  1. 指针实现字符串比较
    在这里插入图片描述
#include "iostream"

using namespace std;

char trans(char s)
{
	if (s >= 'A'&&s <= 'Z') return s - ('A' - 'a');
	else return s;
}

int mystrcmp(char *s1, char *s2)
{
	while (1)
	{
		if (*s1 == '\0'&& *s2 == '\0')	return 0;
		else if (trans(*s1) > trans(*s2))	return 1;
		else if (trans(*s1) < trans(*s2))	return -1;
		else
		{
			s1++;s2++;
		}
	}
}

int main()
{
	char s1[200], s2[200];
	cin >> s1 >> s2;
	cout << mystrcmp(s1, s2) << endl;
	return 0;
}
  1. 通过指针访问结构体变量
    在这里插入图片描述
#include "iostream"

using namespace std;

struct PERSON
{
	char name[40], gender[10];
	int age;
};

int main()
{
	PERSON a, *pa;
	pa = &a;
	cin >> pa->name;
	cin >> pa->gender;
	cin >> pa->age;
	cout << pa->name << " ";
	cout << pa->gender << " ";
	cout << pa->age;
	return 0;
}
  1. 通过指针访问结构体数组
    在这里插入图片描述
#include "iostream"

using namespace std;

struct PERSON
{
	char name[40], gender[10];
	int age;
};


int main()
{
	PERSON class_A[50], *pa;
	pa = class_A;
	cin >> pa->name;
	cin >> pa->gender;
	cin >> pa->age;
	while (pa->name!= "0" && pa->gender!= "0" && pa->age!=0)
	{
		pa++;
		cin >> pa->name;
		cin >> pa->gender;
		cin >> pa->age;
	}
	pa = pa - 1;
	while(pa >= class_A)
	{
		cout << pa->name << " ";
		cout << pa->gender << " ";
		cout << pa->age << endl;
		pa--;
	}
	return 0;
}
  1. 动态申请变量
    在这里插入图片描述
#include "iostream"

using namespace std;

int main()
{
	int *a = new int;
	int *b = new int;
	int *c = new int;
	cin >> *a >> *b >> *c;
	cout << *a + *b + *c << endl;
	delete a, b, c;
	return 0;

}
  1. 动态申请数组
    在这里插入图片描述
#include "iostream"

using namespace std;

int main()
{
	int n;
	cin >> n;
	double *a = new double[n];
	double *p = a;
	cin >> *p;
	while (*p!=9999)
	{
		p++;
		cin >> *p;
	}
	p--;
	while (p > a)
	{
		cout << *p << " ";
		p--;
	}
	cout << *p;
	delete[]a;
	return 0;
}
  1. 动态申请结构体数组
    在这里插入图片描述
#include "iostream"

using namespace std;

struct PERSON
{
	char name[40], gender[10];
	int age;
};

int main()
{
	int n;
	cin >> n;
	PERSON *class_A=new PERSON[n];
	PERSON *pa;
	pa = class_A;
	cin >> pa->name;
	cin >> pa->gender;
	cin >> pa->age;
	while (pa->name != "0" && pa->gender != "0" && pa->age != 0)
	{
		pa++;
		cin >> pa->name;
		cin >> pa->gender;
		cin >> pa->age;
	}
	pa = pa - 1;
	while (pa >= class_A)
	{
		cout << pa->name << " ";
		cout << pa->gender << " ";
		cout << pa->age << endl;
		pa--;
	}
	delete[]class_A;
	return 0;
}
  1. 动态申请结构体数组空间和结构体数组复制
    在这里插入图片描述
#include "iostream"

using namespace std;

struct PERSON
{
	char name[40], gender[10];
	int age;
};

int main()
{
	int n,real=0;
	cin >> n;
	PERSON *class_A=new PERSON[n];
	PERSON *pa,*pb;
	pa = class_A;
	cin >> pa->name;
	cin >> pa->gender;
	cin >> pa->age;
	real++;
	while (pa->name != "0" && pa->gender != "0" && pa->age != 0)
	{
		pa++;
		real++;
		cin >> pa->name;
		cin >> pa->gender;
		cin >> pa->age;
	}
	pa = pa - 1;
	real = real - 1;
	PERSON *class_B = new PERSON[real];
	pb = class_B;
	while (pa >= class_A)
	{
		*pb = *pa;
		pa--;
		pb++;
	}
	for (pb = class_B; pb < (class_B + real); pb++)
	{
		cout << pb->name << " " << pb->gender << " " << pb->age << endl;
	}
	delete[]class_A,class_B;
	return 0;
}

以上为第八周的基础练习。

猜你喜欢

转载自blog.csdn.net/qq_35779286/article/details/84187273