程序设计实验5.docx

preview
需积分: 0 0 下载量 34 浏览量 更新于2023-12-04 收藏 17KB DOCX 举报
数组实验设计 一维数组的定义、赋值和输入输出方法是编程的基础。掌握数组的遍历方法和与数组有关的算法是编程的关键。在本实验中,我们将学习数组的概念和使用方法、选择排序算法、查找算法等。 数组的概念和使用方法 数组是一种数据结构,用于存储同类型的多个元素。数组的定义需要指定数组的名称、数据类型和元素个数。例如,定义一个整型数组n[10],表示该数组名为n,数据类型为整型,元素个数为10。 数组的使用方法包括数组的赋值、输入输出和遍历。数组的赋值可以使用赋值语句,例如n[0]=1; n[1]=2;等。数组的输入输出可以使用scanf和printf函数,例如scanf("%d", &n[0]); printf("%d", n[0]);等。数组的遍历可以使用for循环,例如for(i=0; i<10; i++) printf("%d", n[i]); 选择排序算法 选择排序算法是一种简单的排序算法。其基本思想是:在数组中选择最小的元素,并与数组的第一个元素交换位置;然后,在剩余的元素中选择最小的元素,并与数组的第二个元素交换位置;依此类推,直到所有元素都排序完毕。 例如,使用选择排序算法对数组n[10]进行升序排序,步骤如下: 1. 选择数组n[10]中的最小元素,并与n[0]交换位置。 2. 在剩余的元素中选择最小的元素,并与n[1]交换位置。 3. 依此类推,直到所有元素都排序完毕。 查找算法 查找算法是一种查找数组中指定元素的方法。常见的查找算法有顺序查找和二分查找。顺序查找是从数组的第一个元素开始,逐个比较直到找到指定元素为止。二分查找是将数组分为两部分,然后比较中间元素,如果中间元素是要查找的元素,则查找成功;否则,继续比较左半部分或右半部分,直到找到指定元素为止。 实验内容 实验内容包括四个部分: 1. 定义数组n[10],对其使用交换排序算法进行升序排序,并输出排序结果。 代码示例: ```c #include <stdio.h> int main() { int n[10] = {4, 2, 7, 1, 3, 9, 6, 5, 8, 0}; int i, j, temp; for (i = 0; i < 10; i++) { for (j = i + 1; j < 10; j++) { if (n[i] > n[j]) { temp = n[i]; n[i] = n[j]; n[j] = temp; } } } for (i = 0; i < 10; i++) { printf("%d ", n[i]); } return 0; } ``` 2. 从键盘上输入5个数,输出其中数值最大、最小的数组元素以及它们的下标。 代码示例: ```c #include <stdio.h> int main() { int n[5]; int i, max, min, max_index, min_index; printf("请输入5个数:\n"); for (i = 0; i < 5; i++) { scanf("%d", &n[i]); } max = n[0]; min = n[0]; max_index = 0; min_index = 0; for (i = 1; i < 5; i++) { if (n[i] > max) { max = n[i]; max_index = i; } if (n[i] < min) { min = n[i]; min_index = i; } } printf("最大值:%d,下标:%d\n", max, max_index); printf("最小值:%d,下标:%d\n", min, min_index); return 0; } ``` 3. 从键盘输入一个字符串,统计其中非数字字符的个数且输出。 代码示例: ```c #include <stdio.h> #include <string.h> int main() { char str[100]; int i, count = 0; printf("请输入一个字符串:\n"); scanf("%s", str); for (i = 0; i < strlen(str); i++) { if (!(str[i] >= '0' && str[i] <= '9')) { count++; } } printf("非数字字符的个数:%d\n", count); return 0; } ``` 4. 从键盘上输入一个正整数,判断其是否为回文数。 代码示例: ```c #include <stdio.h> int main() { int n, digit[10], i, k, flag = 1; printf("请输入一个正整数:\n"); scanf("%d", &n); i = 0; while (n > 0) { digit[i++] = n % 10; n /= 10; } k = i - 1; for (i = 0; i < k; i++) { if (digit[i] != digit[k--]) { flag = 0; break; } } if (flag) { printf("是回文数。\n"); } else { printf("不是回文数。\n"); } return 0; } ``` 本实验旨在掌握数组的概念和使用方法、选择排序算法、查找算法等。通过完成实验,我们可以更好地理解数组的使用方法和算法的实现。