第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,存储八名顾客的积...