数组上机作业

上传人:今*** 文档编号:108354284 上传时间:2019-10-23 格式:DOC 页数:14 大小:149.50KB
返回 下载 相关 举报
数组上机作业_第1页
第1页 / 共14页
数组上机作业_第2页
第2页 / 共14页
数组上机作业_第3页
第3页 / 共14页
数组上机作业_第4页
第4页 / 共14页
数组上机作业_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《数组上机作业》由会员分享,可在线阅读,更多相关《数组上机作业(14页珍藏版)》请在金锄头文库上搜索。

1、第4章 构造数据类型第一部分 数组通过本节实验作业应达目标1学习并掌握一维数组与二维数组的定义、使用及初始化方法。2熟练掌握字符数组和字符串的使用方法。3掌握数组的一种排序算法。4学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。本章必须上交作业第一部分 数组作业要求:程序4_3.c、4_4_2.c、4_5.c、4_7.c、4_8.c上传至http:/121.251.227.27:8080/c。源程序可以.cpp命名。第二部分  结构体作业要求程序4_11.c、4_12.c上传至http:/121.251.227.27:8080/c。源程序可以.cpp命名。实验一一维数组

2、的定义和简单应用【实验目的】学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。【实验内容】从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。以4_1.c命名本程序。程序运行界面【实验提示】求最大(小)值通常用“打擂台”的方法。首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最

3、大值和最小值。求平均值还要设置一个变量sum,用来累加各元素的值。实验二一维数组的排序【实验目的】熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。【实验内容】从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。分别以4_2_1.c、4_2_2.c和4_2_3.c命名三个程序。【实验提示】所谓排序是指把一组杂乱无章的数据按照大小顺序排列。将被排序的n个数据存放在一个数组中, 假如按升序排列。我们将数组定义为an,数据存放在a0  到 an-1  中。1比较排序法将a0与a1比较,若a1a1,则二者交

4、换,否则不变,a1再与a2比较,前者大就交换,依次两两比较至到an-2与an-1比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。第二轮比较数组的前n-1个,即a0an-2 。重复此过程,直到所有的元素比较完毕。实验三一维数组元素的调换【实验目的】进一步加强对数组的应用。【实验内容】找出数组中的最小数和次小数,并把最小数和a0中的数对调、次小数和a1中的数对调,其余数据位置不变。例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。以4_3.c命名本程序并上交,部分程序如下。#define N 10 &n

5、bsp;void main()  int aN,i;for(i=0;i<N;i+)scanf("%d",_ );                        /* 编写程序,实现功能 */for(i=0;iamid时,则要查找的x在数组的前半部分,这样数组的后半部分就不用去查找了,查找范围缩小为一半。然后在前半部分再找一个中点,与x比较,如此一半一半缩小,如果x在数组当中,终能找到x=amid。由于每次缩小近一半的范围,所以数组的上、下界

6、是要变化的,不妨用变量low、high、mid分别表示数组当前的上界、下界和中点。问题:如果x不在数组当中,最终怎样知道?【实验内容】在一个已经排好序的数组(升序)中,从键盘上输入某数x,查找x是否在数组内,若在,则在屏幕上输出其下标值。若不存在,则在屏幕上显示“Not  found!”。假设数组a10 的每个元素分别为1,2,3,4,6,7,9,10,11,15,若从键盘上读入数x为9,则在屏幕上输出“the numbers position is  7”,若读入数为8,则屏幕上输出“Not  found!”。  1. 顺序查找法编写的程序如下,请完善

7、程序,并以4_4_1.c命名本程序。# include#define N 10void main( )int aN=1,2,3,4,6,7,9,10,11,15; int i,x; scanf("%d", &x); for(i=0;i<N;i+)  if ( _ )printf("the number's position is %dn",i+1);       _ ; if(i=N)     printf("Not found!n");2. 折半查找法

8、编写的程序如下,请完善程序,并以4_4_2.c命名本程序并上交。#include#define N 10void  main( )int aN=1,2,3,4,6,7,9,10,11,15; int low, high, mid, i, x; scanf("%d", &x ); for(low=0,high=N-1; )   mid =_ ;    if(amid=x) printf("the number's position is %dn",mid+1);  break;  

9、  if( _ ) printf("Not foundn"); _ ;    if (amid< x )  low=mid+1;    if (amid> x )  _ ;【讨论与思考】比较一下两种两种查找方法的优缺点。实验五二维数组使用【实验目的】掌握二维数组的使用方法。【实验内容】一个小组五位同学,选修了相同的4门功课。请输入每位同学的成绩,计算每位同学的总分,找出总分最高的同学是第几号同学,最后按总分对二维数组排序,并输出排序后的每位学生信息。以4_5.cpp或4_5.c命名本程序并上交

10、。每位同学的信息如下表:学号S1S2S3S4total100145687891100265788488100392866878100466747381100590706567示例的输入输出窗口如下:【实验提示】定义的二维数组需要保存学号与总分信息。学号可以初始化的方式记录在第0列中。本题涉及到求最大值与排序操作。注意,排序交换数据时需要一整行都交换。实验六统计指定字符个数【实验目的】熟悉字符串的存取和结束标记。【实验内容】编写程序从键盘上输入一个字符串和一个字符,统计所指定字符的个数。例如:从键盘输入字符串为"abaaAAbcaaaca",指定字符为'a',

11、则在屏幕上输出结果是7。以4_6.c命名本程序。下面给出程序的部分代码。#includevoid main( )char a200, b; int num; puts("Please input a string:"); gets(a); puts("Please enter a character:"); b=getchar( );                    /* 编写程序,实现功能 */ pirntf(“The result is %dn”

12、, num);实验七从字符串中删字符【实验目的】熟悉字符串的存取和结束标记。并掌握从一维数组中删除元素的方法。【实验内容】编写程序从键盘上输入一个字符串和一个字符,实现从字符串中删除该字符。例如:从键盘输入字符串为"abaaAAbcaaaca",要删除的字符为'a',则在屏幕上输出"bAAbcc"。下面给出程序的部分代码。请完善程序,并以4_7.c命名本程序并上交。void  main( )char s20, ch;int i,j; printf("Please input a string:n"); get

13、s(s); printf("Please input a character:n"); ch=getchar(); for( i=0; _; i+ )                      /* 编写程序,实现功能 */         puts(s);【实验提示】要考虑被删除的字符在字符串出现多次,而且连续排列的情况。实验八数据加密【实验目的】学习通过字符数据的ASCII值进行加密的方法。【实验内容】某个单位要传递机密数据,数据是一组的整数数字(从键盘输入,长

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号