寒假第一题:数组首位元素交换
思路:1 定义左右数组的下标 left 和right
2 首尾元素依次交换
3 交换后 左下标+1 右下标-1
直至 左下标 < = 右边的下标
接下来看代码
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
cout << "[";
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
int left = 0;
int right = len-1;
while(left <= right)
{//交换首尾元素
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
cout << "[";
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
return 0;
}
第二题 冒泡排序
思路
*
* 1 n个数字有n-1个相邻的 比价相邻的
* 2 如果第一个比第二个大,那么就交换
* 3 重复上述操作 每次比的次数-1
*
*
*外层循环 排序的总轮数 = 元素的个数-1
* 内层循环 每轮对比的次数 = 元素的个数-排序轮数-1
*/
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
//n个数字比较n-1次
for(int i = 0 ; i< len -1 ; i++ )
{
for( int j = 0; j< len-1- i ; j++)
{
if(arr[j]>arr[j+1])
{
arr[j] ^= arr[ j+1];
arr[j+1] ^= arr [ j];
arr[ j] ^= arr[j+1] ;
}
}
}
for(int n = 0 ;n <len; n++)
cout<<arr[n]<<" ";
return 0;
}
第三题 选择排序
思路:
1 选择一个最小值和后面的值进行比较 如果比后面值大 进行交换
2 循环迭代完后 最小值更新 直至循环结束
选择排序和冒泡排序的对比
选择排序是从数组中选取一个数和其他作比较 如果该数较小就放在数组的首元素
而冒泡排序是从数组的首元素和后面的依次对比 外层比较n-1 次 内层比较n-1-i次
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
for(int i = 0 ; i< len ; i++ )
{
int tmp =arr[i];//选取第一个数字
for( int j = i+1 ; j< len;j++)
{
//选择的数和后面的一个数作比较
if(tmp>arr[j])
{
int n = tmp;
tmp = arr[j];
arr[ j] = n;
}
}
arr[i] = tmp;//比较完之后最小的更新
}
for(int i = 0; i<len ;i++)
{
cout<<arr[i]<<" ";
}
return 0;
}
第四题:某公司按照季度和每个季度对应3个月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
请使用二维数组保存这些数据,并计算公司年销售总额。
思路:直接使用二维数组的性质存储这些数据即可
#include <iostream>
using namespace std;
int main() {
int arr[4][3] = {
// write your code here......
{22,66,44},{77,33,88},{25,45,65},{11,66,99}
};
int sum = 0;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 3; j++) {
sum += arr[i][j];
}
}
cout << sum << endl;
return 0;
}
第五题
描述
键盘输入两个字符串,将这两个字符串进行拼接后输出。
输入描述:
键盘输入两个字符串
输出描述:
输出两个字符串拼接后的结果
思路: 可以直接使用+符号将两个字符串拼接在一起
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1, s2;
getline(cin, s1);
getline(cin, s2);
// write your code here......
cout<<s1+s2<<endl;
return 0;
}
第六题 关于结构体的简单使用
计一个学生结构体,该结构体具有三个成员,分别是:姓名name、年龄age、身高height。
键盘依次输入姓名、年龄和身高数据,将数据保存到学生结构体变量上,并输出学生信息。
输入描述:
键盘依次输入学生的姓名name、年龄age、身高height
输出描述:
输出学生的信息,例如:
张三 20 182.5
#include <iostream>
#include <string>
using namespace std;
struct student {
// write your code here......
string name;
int age;
float height;
};
int main() {
// write your code here......
struct student s1;
cin>>s1.name;
cin>>s1.age;
cin>>s1.height;
cout<<s1.name<<" "<<s1.age<<" "<<s1.height;
return 0;
}
第7题
描述
键盘随机输入 6 个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印。
输入描述:
键盘随机输入 6 个整数
输出描述:
输出数组中的所有元素,每个元素中间使用空格隔开
例如:10 20 30 40 50 60
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 };
int* ptr = arr;
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
// write your code here......
for(int i = 0;i<len;i++)
{
cout<<*ptr<<" ";
ptr++;
}
return 0;
}
第八题
描述
键盘输入一个字符串,编写代码获取字符串的长度并输出,要求使用字符指针实现。
输入描述:
键盘输入一个字符串
输出描述:
输出字符串的长度
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char str[100] = { 0 };
cin.getline(str, sizeof(str));
cout<<strlen(str);
return 0;
}