diff --git a/2207/数组练习题.md b/2207/数组练习题.md new file mode 100644 index 0000000..2344aa9 --- /dev/null +++ b/2207/数组练习题.md @@ -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的滑动窗口的最大值,并输出结果。 \ No newline at end of file diff --git a/2208/C语言/字符串处理.md b/2208/C语言/字符串处理.md index fd3c48a..9ab4873 100644 --- a/2208/C语言/字符串处理.md +++ b/2208/C语言/字符串处理.md @@ -33,29 +33,38 @@ int main(){ ```c #include +#include #include -int main(){ - char str[100]; - char temp; - int i, j; - - gets(str); - - for(i=0;i *(str+j+1)){ - temp = *(str+j); - *(str+j) = *(str+j+1); - *(str+j+1) = temp; - } - } - } - - puts(str); - return 0; +// 比较函数,用于 qsort +int compare_strings(const void *a, const void *b) { + return strcmp(*(const char **)a, *(const char **)b); } +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. 字符串插入 diff --git a/2208/C语言/源码/字符串-2.c b/2208/C语言/源码/字符串-2.c index 1f41134..b328fc5 100644 --- a/2208/C语言/源码/字符串-2.c +++ b/2208/C语言/源码/字符串-2.c @@ -1,24 +1,33 @@ #include +#include #include -int main(){ - char str[100]; - char temp; - int i, j; - - gets(str); - - for(i=0;i *(str+j+1)){ - temp = *(str+j); - *(str+j) = *(str+j+1); - *(str+j+1) = temp; - } - } - } - - puts(str); - return 0; +// 比较函数,用于 qsort +int compare_strings(const void *a, const void *b) { + return strcmp(*(const char **)a, *(const char **)b); } +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; +} \ No newline at end of file