第4章数组上机作业

发布 2022-09-05 03:08:28 阅读 3319

第4章构造数据类型。

第一部分数组。

通过本节实验作业应达目标。

1.学习并掌握一维数组与二维数组的定义、使用及初始化方法。

2.熟练掌握字符数组和字符串的使用方法。

3.掌握数组的一种排序算法。

4.学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。

本章必须上交作业。

第一部分数组作业要求:

程序4_上传至源程序可以。cpp命名。

第二部分结构体作业要求。

程序4_上传至源程序可以。cpp命名。

实验一一维数组的定义和简单应用。

实验目的】学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。

实验内容】从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。以4_命名本程序。

程序运行界面。

实验提示】求最大(小)值通常用“打擂台”的方法。首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。

求平均值还要设置一个变量sum,用来累加各元素的值。

实验二一维数组的排序。

实验目的】熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。

实验内容】从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。分别以4_2_和4_2_命名三个程序。

实验提示】所谓排序是指把一组杂乱无章的数据按照大小顺序排列。

将被排序的n个数据存放在一个数组中, 假如按升序排列。我们将数组定义为a[n],数据存放在a[0] 到 a[n-1] 中。

1.比较排序法。

将a[0]与a[1]比较,若a[1]2.选择排序法。

选择排序法就是对比较法的改进。它的算法思想是:仍然是a[i]与其后的a[j]进行比较,但是当比较出a[j]小于a[i]时,先不急于交换(因为a[j]并不一定是这一轮中最小的,可能还有更小的),用一个变量p记下j的下标(即第几个数),继续比较下去,将最小数的下标j存放在p中,一轮比较完毕,a[p]便是最小的,这样只要a[i]与a[j]交换即可。

一轮只交换一次,大大提高了程序的效率。 其中,一维数组既是数据的存放位置,也是交换的场所,这样可以很好的利用数据的内存空间。

3.冒泡排序法。

将要排序的数放在某一个数组中,如a[0]~a[n-1],然后比较数组相邻两元素的值,即a[0]与a[1]比较,假如按升序排列,且a[0]>a[1],则二者交换,否则不变,a[1]再与a[2]比较,前者大就交换,…,依次两两比较至到a[n-2]与a[n-1]比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。第二轮比较数组的前n-1个,即a[0]~a[n-2] 。重复此过程,直到所有的元素比较完毕。

实验三一维数组元素的调换。

实验目的】进一步加强对数组的应用。

实验内容】找出数组中的最小数和次小数,并把最小数和a[0]中的数对调、次小数和a[1]中的数对调,其余数据位置不变。

例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。以4_命名本程序并上交,部分程序如下。

#define n 10

void main(),若从键盘上读入数x为9,则在屏幕上输出“the number’s position is 7”,若读入数为8,则屏幕上输出“not found!”。

1. 顺序查找法编写的程序如下,请完善程序,并以4_4_命名本程序。

# include<>

#define n 10

void main( )

int a[n]=;

int i,x;

scanf("%d", x);

for(i=0;i if

printf("the number's position is %d",i+1);

if(i==n)

printf("not found!");

2. 折半查找法编写的程序如下,请完善程序,并以4_4_命名本程序并上交。

#include<>

#define n 10

void main( )

int a[n]=;

int low, high, mid, i, x;

scanf("%d", x );

for(low=0,high=n-1;;

{midif(a[mid]==x)

printf("the number's position is %d",mid+1);

break;

ifprintf("not found

if (a[mid]< x ) low=mid+1;

if (a[mid]> x

讨论与思考】

比较一下两种两种查找方法的优缺点。

实验五二维数组使用。

实验目的】掌握二维数组的使用方法。

实验内容】一个小组五位同学,选修了相同的4门功课。请输入每位同学的成绩,计算每位同学的总分,找出总分最高的同学是第几号同学,最后按总分对二维数组排序,并输出排序后的每位学生信息。以4_或4_命名本程序并上交。

每位同学的信息如下表:

示例的输入输出窗口如下:

实验提示】定义的二维数组需要保存学号与总分信息。学号可以初始化的方式记录在第0列中。本题涉及到求最大值与排序操作。注意,排序交换数据时需要一整行都交换。

实验六统计指定字符个数。

实验目的】熟悉字符串的存取和结束标记。

实验内容】编写程序从键盘上输入一个字符串和一个字符,统计所指定字符的个数。

例如:从键盘输入字符串为"abaaaabcaaaca",指定字符为'a',则在屏幕上输出结果是7。以4_命名本程序。

下面给出程序的部分**。

#include <>

void main( )

char a[200], b;

int num;

puts("please input a string:")

gets(a);

puts("please enter a character:")

b=getchar( )

编写程序,实现功能 */

pirntf(“the result is %d”, num);

实验七从字符串中删字符。

实验目的】熟悉字符串的存取和结束标记。并掌握从一维数组中删除元素的方法。

第06章作业 数组

上机练习 1 从键盘接收5个数,用数组存储,找出最大值和最小值。2 从键盘接收5个数,先顺序输出,然后将该数组倒置,再次输出。a 提示 定义一个中间变量。b 例如原数组为 3 5 9 8 4 倒置后输出为 4 8 9 5 3 3 定义一个二维数组,输出九九乘法表,输出格式如下 4 将一个二维数组的行...

C语言第05章 数组 作业

c程序设计第05章 数组 作业答题纸。学号 119064257 姓名葛冉浩班级电112 一 选择题 1 5 dcabb 6 8 dcc 二 写出下列程序的输出结果或填空题 11 a k k a 20 13 a m k 12 16 a 0 3 a 1 2 a 2 3 a 3 3 a 4 3 a 5 2...

第7章数组课后作业

1 依次输入五句话,然后将它逆序输出。运行结果如图所示。提示 创建一个字符串数组,每句话作为字符串数組的一个元素,然后从该数组的末尾开。始循环输出。2 某百货商场当日消费积分最高的八名顾客。他们的积分是 编写程序找出最低的积分及它在数组中的原始位置 下标 提示 创建数组points,存储八名顾客的积...