C++语言程序设计实验报告——实验三

实验三 数组、指针与字符串

一、实验目的及要求

1.学习用指针和引用传递参数,掌握冒泡排序法和选择排序法的原理。
2.学习string类的用法。

二、实验环境

1、硬件要求:计算机一台。
2、软件要求:Windows操作系统,Dev-C++或VC++ 6.0编译环境

三、实验内容

1.使用动态分配内存方法创建包含10个整数元素一维数组,手动输入元素(数值范围在1-100之间),编写冒泡排序子函数bubbleSort()将数组元素按照升序排序,编写选择排序子函数selectSort(),将数组元素按照降序排序,参数传递的方式采用引用方式,在主函数中分别调用两个函数,使得数组先按照升序排列输出一次,再按照降序排序输出一次。
2.编写一段程序读入两个字符串,比较其是否相等并输出结果。如果不相等,输出较大的那个字符串。改写上述程序,比较两个字符串是否等长,如果相等,则输出字符串的长度。如果不等长,则将两个字符串拼接,按照长的在前,短的在后,输出拼接后的字符串。

其实这两道题本来是分开的,但是博主为了方便,将两道题通过一个程序同时实现了🤭🤭🤭

话不多说,上代码:

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
void bubbleSort(int* a) {
	int temp;
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 9 - i; j++) {
			if (*(a + j) >= *(a + j + 1)) {
				temp = *(a + j);
				*(a + j) = *(a + j + 1);
				*(a + j + 1) = temp;
			}
		}
	}
	for (int i = 0; i < 10; i++) {
		cout << *(a + i) << " ";
	}
	cout << endl;
}
void selectSort(int* a) {
	int temp;
	int b[10];
	int i = 0;
	for (i = 0; i < 10; i++) {
		for (int j = 0; j < 10 - i; j++) {
			if (*(a + j) > * (a + j + 1)) {
				temp = *(a + j);
				*(a + j) = *(a + j + 1);
				*(a + j + 1) = temp;
			}
		}
		b[i] = temp;
	}
	for (int i = 0; i < 10; i++) {
		cout << b[i] << " ";
	}
	cout << endl;
}
void getCompare(string str1, string str2) {
	int len1, len2;
	len1 = str1.size();
	len2 = str2.size();
	if (len1 == len2) {
		cout << "两字符串长度相同,为:" << len1 << endl;
	}
	else {
		cout << "两字符串长度不相同"<<endl;
		if (len1 > len2) {
			cout << "两字符串拼接之后为:" << str1 + str2 << endl;
		}
		else
			cout << "两字符串拼接之后为:" << str2 + str1 << endl;
	}
}
int main() {
	int* ptr = new int[10];
	cout << "请输入十个数:" << endl;
	for (int i = 0; i < 10; i++) {
		cin >> *(ptr + i);
	}
	cout << "============================升序排列==============================" << endl;
	bubbleSort(ptr);
	cout << "============================降序排列==============================" << endl;
	selectSort(ptr);
	string s1;
	string s2;
	cout << endl << "请输入两个字符串" << endl;
	cin >> s1;
	cin >> s2;
	getCompare(s1, s2);
	delete ptr;	
	return 0;
}

实验结果

实验三运行结果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刚入坑的软件猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值