【精选资料】上机实验六 答案请自行校对 下载本文

上机实验六 一维数组

学号:

姓名:

一.目的要求

1. 掌握一维数组的基本概念,如何定义一维数组,如何初始化一维数组。

2. 掌握数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输

出等。

3. 掌握与数组有关的算法,如排序、找最大最小值(或位置)等。

二.实验内容

第1题、 输入n(n不超过10),然后输入n个数组元素,要求将数组元素在同一个数组中按

逆序重新存放并输出。

如输入5 1 2 3 4 5 应输出 5 4 3 2 1

#include void main(){ int a[10], i, n ; printf(\请输入小于10的数n:\\n\ scanf(\ printf(\请输入%d个整数:\\n\ for (i=0; i=0; i--) printf(\ printf(\ }

第2题、 输入一个数组的所有元素,再输入一个整数m,把该数组的后m个数字移到数组的

前头。

比如数组元素为:1 2 3 4 5 6 7 8 9 10,m=4,应输出:7 8 9 10 1 2 3 4 5 6

#include

void main(){ int a[10], i, m, t, j ; printf(\请输入10个整数:\\n\ for (i=0; i < 10; i++) scanf(\ printf(\请输入一个小于10的数m:\ scanf(\ // 下面循环重复m次, 每次将最后一个元素放到第一个位置 for (i=0; i0; j--) { a[j] = a[j-1]; } a[0] = t; //将最后那个元素放到第一个位置 } // 下面逐个打印数组元素 for (i=0; i<10; i++) printf(\ printf(\ }

第3题、 输入一个数组的所有元素值,将最大的元素与第一个元素交换,最小的元素与最后

一个元素交换,然后输出数组所有元素。

(注:这是选择排序的一个改进方案,每一轮循环可以找出最大和最小两个元素,可以使循环次数减少一半,请在此方法的基础之上进行改进,编出完整的排序程序来,降序)

#include void main(){ int a[10], i, m, n; printf(\请输入10个整数:\\n\

for (i=0; i < 10; i++) scanf(\ m = 0; // m保留数组中最大元素的的下标 // 查找最大的元素 for (i=1; i<10; i++) { if (a[m]0; i--) { if (a[m]>a[i]) m = i; } // 如果最小元素不是在第9个位置,那么就交换;否则,最小元素就在数组的第9个位置 if (m!=9) { n = a[9]; a[9] = a[m]; a[m] = n; } // 下面逐个打印数组元素 for (i=0; i<10; i++) printf(\ printf(\ } /*

下面这个程序,是利用这种思想实现排序算法, 注意每做一次,就交换了两个元素,即最大放前面,最小放后面, 因此这个过程重复n/2次即可实现整个数组的排序功能 */

#include void main(){ int a[10], i, j, m, n; printf(\请输入10个整数:\\n\