本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
本文为笔者大一《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;
}
}
- 结果
看到这图博主本人也小了,这英文完全不按常理哈哈,让我看看你笑了没[旺柴]