Compare commits

..

3 Commits

11 changed files with 350 additions and 0 deletions

54
day9/case1.cpp Normal file
View File

@ -0,0 +1,54 @@
// 接收一个数值数组,实现数组中元素值从小到大排序
// 例如:输入 3 2 1 5 4
// 输出 1 2 3 4 5
#include <iostream>
using namespace std;
void show(int arr[], int size)
{
int i = 0;
while (i < size)
{
cout << arr[i] << "\t";
i++;
}
cout << endl;
}
void sort(int arr[], int size)
{
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
}
int main()
{
// 从键盘输入 5 个数值
int arr[5];
for (int i = 0; i < 5; i++)
{
cout << "请输入第" << i + 1 << "个数:";
cin >> arr[i];
}
cout << endl;
cout << "排序前:" << endl;
show(arr, 5);
sort(arr, 5);
cout << "排序后:" << endl;
show(arr, 5);
return 0;
}

28
day9/case2.cpp Normal file
View File

@ -0,0 +1,28 @@
// 接收一个数值数组,对数组中的数值求最大值并输出。
#include <iostream>
using namespace std;
int maxNum(int arr[], int size)
{
int max = arr[0];
while (--size)
{
if (arr[size] > max)
{
max = arr[size];
}
}
return max;
}
int main()
{
int arr[] = {18, 2, 3, 9, 5, 7}; // 完全初始化
int max = maxNum(arr, sizeof(arr) / sizeof(arr[0]));
cout << "最大值是: " << max << endl;
return 0;
}

28
day9/case3.cpp Normal file
View File

@ -0,0 +1,28 @@
// 定义函数, 实现字符串的反转并输出
// 例如: abcdefg -> gfedcba
#include <iostream>
using namespace std;
void reverse(char str[], int len)
{
int i = 0; // 为什么要从 0 开始? 因为字符串的第一个字符是 str[0]
int j = len - 1 - 1; // 为什么要再减 1? 因为字符串最后一个字符是 '\0'
for (; i < j; i++, j--)
{
str[i] = str[i] ^ str[j];
str[j] = str[i] ^ str[j];
str[i] = str[i] ^ str[j];
}
}
int main()
{
char str[] = "abcdefg";
int len = sizeof(str) / sizeof(str[0]);
cout << "原字符串: " << str << endl;
reverse(str, len);
cout << "反转后: " << str << endl;
return 0;
}

32
day9/case4.cpp Normal file
View File

@ -0,0 +1,32 @@
// 定义函数, 实现字符串中指定位置字符删除
#include <iostream>
using namespace std;
void delChar(char str[], int index)
{
int i = index;
while (str[i] != '\0')
{
str[i] = str[i + 1];
i++;
}
}
int main()
{
char str[] = "abcdefg";
int index;
cout << "原字符串: " << str << endl;
cout << "请输入要删除的位置: ";
cin >> index;
if (index < 0 || index > sizeof(str) / sizeof(str[0]))
{
cout << "位置不合法" << endl;
return 0;
}
delChar(str, index);
cout << "删除后: " << str << endl;
return 0;
}

29
day9/case5.cpp Normal file
View File

@ -0,0 +1,29 @@
// 定义函数, 实现字符串中某个字符的查找, 并返回字符的下标或 -1
#include <iostream>
using namespace std;
int findCharAt(char str[], int size, char ch)
{
for (int i = 0; i < size; i++)
{
if (str[i] == ch)
return i;
else if (str[i] == '\0' && str[i] != ch)
return -1;
}
}
int main()
{
// char str[] = "abcdefg";
char str[128];
cout << "请输入字符串: ";
cin >> str;
char ch;
cout << "请输入要查找的字符: ";
cin >> ch;
int size = sizeof(str) / sizeof(str[0]);
int index = findCharAt(str, size, ch);
cout << "下标为: " << index << endl;
return 0;
}

25
day9/d1.cpp Normal file
View File

@ -0,0 +1,25 @@
// 实现2个整数之和并返回的功能
#include <iostream>
using namespace std;
// 1. 定义函数
// a, b是形参
// addNums是函数名
int addNums(int a, int b)
{
return a + b;
}
int main()
{
int x, y;
cout << "请输入两个整数:";
cin >> x >> y;
// 2. 调用函数
// [变量 = ] 函数名(实参列表);
int ret = addNums(x, y); // x, y 是实际变量的数据, 称之为实参
cout << "两个整数之和为:" << ret << endl;
return 0;
}

25
day9/d2.cpp Normal file
View File

@ -0,0 +1,25 @@
// 函数的声明
#include <iostream>
using namespace std;
// 函数的声明
int addNums(int a, int b);
int main()
{
int x, y;
cout << "请输入两个整数:";
cin >> x >> y;
// 2. 调用函数
int ret = addNums(x, y); // x, y 是实际变量的数据, 称之为实参
cout << "两个整数之和为:" << ret << endl;
return 0;
}
// 函数的定义
int addNums(int a, int b)
{
return a + b;
}

30
day9/d3.cpp Normal file
View File

@ -0,0 +1,30 @@
// 有效循环n次则addNums调用n次每一次调用都会入栈创建栈帧
#include <iostream>
using namespace std;
int addNums(int a, int b); // 函数的声明
int main()
{
int x, y;
while (1)
{
cout << "请输入两个整数:";
cin >> x;
if (x == 0)
break;
cin >> y;
// 调用函数
int ret = addNums(x, y);
cout << "计算结果为:" << ret << endl;
}
return 0;
}
// 函数的定义
int addNums(int a, int b)
{
return a + b;
}

24
day9/d4.cpp Normal file
View File

@ -0,0 +1,24 @@
// 判断给定的整数是否为偶数
#include <iostream>
using namespace std;
int isEven(int n)
{
if (n % 2 == 0)
return 1;
return 0;
}
int main()
{
int n;
cout << "请输入一个整数:";
cin >> n;
if (isEven(n))
cout << "是偶数" << endl;
else
cout << "不是偶数" << endl;
return 0;
}

24
day9/d4_2.cpp Normal file
View File

@ -0,0 +1,24 @@
// 判断给定的整数是否为偶数
#include <iostream>
using namespace std;
int isEven(int *n)
{
if (*n % 2 == 0)
return 1;
return 0;
}
int main()
{
int n;
cout << "请输入一个整数:";
cin >> n;
if (isEven(&n))
cout << "是偶数" << endl;
else
cout << "不是偶数" << endl;
return 0;
}

51
day9/d5.cpp Normal file
View File

@ -0,0 +1,51 @@
// 定义函数,接收一个数组和一个整数,从数组中查找到第一个比给定的整数大的数的位置且返回。
#include <iostream>
using namespace std;
void show(int arr[], int size)
{
int i = 0;
while (i < size)
{
cout << arr[i] << " ";
i++
}
cout << endl;
}
// arr[] 是 int 类型的一维数组, 此形参准备从外部接收一个 int[] 类型的数组的首地址
int find(int arr[], int n, int size)
{
for (int i = 0; i < size; i++)
{
if (arr[i] > n)
return i; // 结束循环、结束函数并返回 i
}
return -1;
}
int main()
{
int arr[] = {1, 2, 3, 0, 5, 7}; // 完全初始化
// [注意] 计算数组的长度, 在定义数组的区域可以计算, 如果作为参数传递, 就无法计算了
// 这是因为数组作为参数传递时, 会退化为指针, 无法计算长度;
// 如果改为指针, 就可以计算长度了, 但是指针无法初始化, 所以必须在定义时初始化
int len = sizeof(arr) / sizeof(arr[0]);
cout << "--- main() ---" << endl;
show(arr, len);
int n = 0;
cout << "查找的数:";
cin >> n;
int index = find(arr, n, len);
if (index == -1)
cout << "没有找到" << endl;
else
cout << "找到了,位置是:" << index << ", 第一个比" << n << "大的数是:" << arr[index] << endl;
return 0;
}