程序设计实验5.docx
需积分: 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;
}
```
本实验旨在掌握数组的概念和使用方法、选择排序算法、查找算法等。通过完成实验,我们可以更好地理解数组的使用方法和算法的实现。
xiaozhuiyao
- 粉丝: 0
- 资源: 1
最新资源
- Matlab_Matlab线性算子工具箱.zip
- Matlab_Matlab文件用于各种类型的波束形成.zip
- Matlab_Matlab循环统计工具箱.zip
- Matlab_Matlab中的BP神经网络.zip
- Matlab_Matlab研究工具,读取、写入和处理地震数据.zip
- Matlab_Matlab中的曝光融合.zip
- Matlab_Matlab中的图像视频隐写.zip
- Matlab_Matlab中的图形信号处理.zip
- Matlab_MCMC工具箱的Matlab.zip
- Matlab_Matlab中的遗传算法.zip
- Matlab_MIDI工具箱11 2016是一个分析MIDI文件的Matlab函数集合.zip
- Matlab_MPC的简短例子,特别是随机MPC的SMPC与机会约束的Matlab.zip
- Matlab_NCTOOLBOX一个Matlab工具箱,用于处理常见的数据模型数据集.zip
- Matlab_MTEX是一个免费的Matlab定量纹理分析工具箱主页.zip
- Matlab_PILCO策略搜索框架Matlab版.zip
- Matlab_NIPS 2015论文的Matlab代码和补充材料用于序列建模的深度时序s型信念网络.zip