Auto commit
This commit is contained in:
parent
bf3450efd7
commit
08685dda81
70
2207/数组练习题.md
Normal file
70
2207/数组练习题.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
1. **数组求和**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,计算并输出数组中所有元素的和。
|
||||||
|
2. **数组最大值和最小值**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,找到并输出数组中的最大值和最小值。
|
||||||
|
3. **数组逆序**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,将数组中的元素逆序存放并输出。
|
||||||
|
4. **查找元素**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,输入一个整数,查找该整数是否在数组中。如果存在,输出其位置;否则输出“未找到”。
|
||||||
|
5. **数组平均值**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,计算并输出数组中所有元素的平均值。
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
### **中级练习题**
|
||||||
|
|
||||||
|
6. **数组排序**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,使用冒泡排序或选择排序对数组进行升序排序,并输出排序后的数组。
|
||||||
|
7. **数组去重**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,去除数组中的重复元素,并输出去重后的数组。
|
||||||
|
8. **数组合并**
|
||||||
|
- 编写一个程序,定义两个包含5个整数的数组,将这两个数组合并为一个包含10个整数的数组,并输出合并后的数组。
|
||||||
|
9. **数组查找第二大值**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,找到并输出数组中的第二大值。
|
||||||
|
10. **数组元素统计**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,统计数组中正数、负数和零的个数,并输出结果。
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
### **高级练习题**
|
||||||
|
|
||||||
|
11. **二维数组转置**
|
||||||
|
- 编写一个程序,定义一个3x3的二维数组,将其转置(行列互换)并输出转置后的数组。
|
||||||
|
12. **矩阵乘法**
|
||||||
|
- 编写一个程序,定义两个3x3的二维数组,计算它们的乘积并输出结果矩阵。
|
||||||
|
13. **数组二分查找**
|
||||||
|
- 编写一个程序,定义一个已排序的包含10个整数的数组,输入一个整数,使用二分查找算法查找该整数是否在数组中。如果存在,输出其位置;否则输出“未找到”。
|
||||||
|
14. **数组元素移动**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,将数组中的所有元素向左移动一位(第一个元素移动到末尾),并输出移动后的数组。
|
||||||
|
15. **数组子数组和**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,找到数组中连续子数组的最大和,并输出该和。
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
### **综合练习题**
|
||||||
|
|
||||||
|
16. **数组元素频率统计**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,统计每个元素在数组中出现的次数,并输出结果。
|
||||||
|
17. **数组元素交换**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,将数组中的奇数和偶数分开,奇数在前,偶数在后,并输出结果。
|
||||||
|
18. **数组元素回文判断**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,判断该数组是否是一个回文数组(即正序和逆序相同),并输出结果。
|
||||||
|
19. **数组元素模式匹配**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,输入一个子数组(长度为3),判断该子数组是否在原数组中出现,并输出结果。
|
||||||
|
20. **数组元素旋转**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,输入一个整数k,将数组中的元素向右旋转k位,并输出旋转后的数组。
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
### **附加挑战题**
|
||||||
|
|
||||||
|
21. **数组元素最大差值**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,找到数组中两个元素的最大差值(要求较大元素在较小元素之后),并输出结果。
|
||||||
|
22. **数组元素最长连续序列**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,找到数组中最长的连续整数序列的长度,并输出结果。
|
||||||
|
23. **数组元素螺旋遍历**
|
||||||
|
- 编写一个程序,定义一个3x3的二维数组,按照螺旋顺序遍历数组并输出结果。
|
||||||
|
24. **数组元素缺失值查找**
|
||||||
|
- 编写一个程序,定义一个包含n-1个整数的数组,数组中的元素是1到n之间的整数,且没有重复值,找到缺失的那个整数,并输出结果。
|
||||||
|
25. **数组元素滑动窗口最大值**
|
||||||
|
- 编写一个程序,定义一个包含10个整数的数组,输入一个整数k(k < 10),找到数组中每个大小为k的滑动窗口的最大值,并输出结果。
|
@ -33,29 +33,38 @@ int main(){
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
int main(){
|
// 比较函数,用于 qsort
|
||||||
char str[100];
|
int compare_strings(const void *a, const void *b) {
|
||||||
char temp;
|
return strcmp(*(const char **)a, *(const char **)b);
|
||||||
int i, j;
|
|
||||||
|
|
||||||
gets(str);
|
|
||||||
|
|
||||||
for(i=0;i<strlen(str)-1;i++){
|
|
||||||
for(j=0;j<strlen(str)-1-i;j++){
|
|
||||||
if(*(str+j) > *(str+j+1)){
|
|
||||||
temp = *(str+j);
|
|
||||||
*(str+j) = *(str+j+1);
|
|
||||||
*(str+j+1) = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
puts(str);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// 测试用例:字符串数组
|
||||||
|
const char *strings[] = {
|
||||||
|
"banana",
|
||||||
|
"apple",
|
||||||
|
"cherry",
|
||||||
|
"date",
|
||||||
|
"blueberry"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算数组的长度
|
||||||
|
int length = sizeof(strings) / sizeof(strings[0]);
|
||||||
|
|
||||||
|
// 使用 qsort 对字符串数组进行排序
|
||||||
|
qsort(strings, length, sizeof(const char *), compare_strings);
|
||||||
|
|
||||||
|
// 输出排序后的字符串数组
|
||||||
|
printf("Sorted strings:\n");
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
printf("%s\n", strings[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 字符串插入
|
### 3. 字符串插入
|
||||||
|
@ -1,24 +1,33 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
int main(){
|
// 比较函数,用于 qsort
|
||||||
char str[100];
|
int compare_strings(const void *a, const void *b) {
|
||||||
char temp;
|
return strcmp(*(const char **)a, *(const char **)b);
|
||||||
int i, j;
|
|
||||||
|
|
||||||
gets(str);
|
|
||||||
|
|
||||||
for(i=0;i<strlen(str)-1;i++){
|
|
||||||
for(j=0;j<strlen(str)-1-i;j++){
|
|
||||||
if(*(str+j) > *(str+j+1)){
|
|
||||||
temp = *(str+j);
|
|
||||||
*(str+j) = *(str+j+1);
|
|
||||||
*(str+j+1) = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
puts(str);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// 测试用例:字符串数组
|
||||||
|
const char *strings[] = {
|
||||||
|
"banana",
|
||||||
|
"apple",
|
||||||
|
"cherry",
|
||||||
|
"date",
|
||||||
|
"blueberry"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算数组的长度
|
||||||
|
int length = sizeof(strings) / sizeof(strings[0]);
|
||||||
|
|
||||||
|
// 使用 qsort 对字符串数组进行排序
|
||||||
|
qsort(strings, length, sizeof(const char *), compare_strings);
|
||||||
|
|
||||||
|
// 输出排序后的字符串数组
|
||||||
|
printf("Sorted strings:\n");
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
printf("%s\n", strings[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user