C++程序设计基础5:指针

461 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

本文为笔者大一《C++程序软件设计》课程章节实验报告,现将题目整理并分享,希望能够帮助正在学习C++的小伙伴!本文将学习到的编程技能包括:指针的概念、指针的应用、指针数组、字符串string类型数据...

知识提纲

指针:指针是数据在内存中的指引,记录数据存放在内存中的地址,程序通过这个地址可以获取到对应的数据内容 指针操作数组元素 获取指针指向的数据内容*p 获取变量的指针:int a=5; int *p=&a;

一、字符串排序(指针实现)

  • 题目:定义一个结构变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。
  • 代码
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;

void Integer();
void Char();

int main()
{
	int mode;
	cout << "请选择模式:(整数1 or 字符串2):";
	cin >> mode;
	if (mode == 1) Integer();
	if (mode == 2) Char();
}

void Integer()
{
	int a, b, c, d;
	cout << "input an four interge;" << endl;
	cin >> a >> b >> c >> d;
	int *p[4] = { &a,&b,&c,&d };
	int q;
	for (int i = 0; i < 4; ++i)
	{
		for (int t = i + 1; t < 4; ++t)
		{

			if (*p[i] > *p[t])
			{
				q = *p[i];
				*p[i] = *p[t];
				*p[t] = q;
			}
		}
	}
	cout << "排序后:" << '\t';
	for (int i = 0; i < 4; ++i)
	{
		cout << *p[i] << '\t';
	}
}

void Char()
{
	string a, b, c, d;
	string*p[4];
	*p = &a; *(p + 1) = &b; *(p + 2) = &c; *(p + 3) = &d;
	cout << "input four string: ";
	cin >> a>> b>> c>> d;
	int k=3;
	for (int i = 0; i < 3; ++i)
	{
		for (int t = 0; t < k; ++t)
		{
			if (**(p + t) > **(p + t + 1))
			{
				string *x = *(p + t);
				*(p + t) = *(p + t + 1);
				*(p + t + 1) = x;
			}
		}
	}
	cout << "排序后" << endl;
	for (int i = 0; i < 4; ++i)
	{
		cout << **(p + i)<<'\t';
	}
}

  • 结果 在这里插入图片描述 在这里插入图片描述

二、数字300分配给长度为12的数组(指针实现)

  • 题目:定义一个结构变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。
  • 代码
#include "pch.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
	srand((unsigned int)time(NULL));
	int n;
	n = 300;
	int b[12] = { 0 };
	for (int k = 0; k < n; ++k) ++(*(b + rand()%12));   /*循环300此,每次从数组对应元素的12个指针中随机选取一个,对内容+1,最终结果即将数字300拆成12个数字之和*/
	for (int k = 0; k < 12; ++k)
	{
		cout << k + 1 << "month:" << *(b + k) << endl;
	}
}

  • 结果

看到这图博主本人也小了,这英文完全不按常理哈哈,让我看看你笑了没[旺柴]

在这里插入图片描述