专业: 学号 姓名
实验四 一维数值数组
一、实验目的
(1)熟悉C语言关于一维数值数组的语法规则。
(2)掌握C语言程序中关于一维数值数组的应用技巧。
(3)掌握一维数组定义、赋值和输入输出的方法;数组元素的存储形式和引用方法; (4)掌握与数组有关的排序(选择法、冒泡法)、查找(顺序查找、折半查找)、有序数列的插入和删除操作等算法。
二、实验准备
1.C语言实现数组的方法
①数组的定义:
int a[6]; //数组a包含了6个元素,从a[0]到a[5]
②数组的赋初值:定义数组的同时给元素赋值,可以部分赋值或整体赋值
int a[6]={1,2,3,4,5,6}; //全部元素赋初值,a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6 int a[10]={1,2,3,4,5}; //部分元素赋初值时,未赋得初值的元素有默认值0 int c[]={1,3,5,7}; //完全赋值时可以省略下标,c数组的长度为初值个数 ③数组元素的引用:数组名[下标] // 数组元素只能单个应用,如a[3] ③数组元素的遍历:
一般用for循环,用循环变量控制访问元素下标。注意全部元素的下标范围是0 ~ 长度-1。 3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。
①程序一,程序文件名为ex4-1.c 。(掌握一维数组的输入输出)
# include int a[6],i; printf(\"请输入6个整数:\"); for(i=0;i<6;i++) //每循环一次等待从键盘输入6个数赋给a[i] scanf(\"%d\ printf(\"\\n输出数组元素:\"); for(i=0;i<6;i++) //循环一次输出当前的a[i] printf(\"%6d\} ② 程序二,程序文件名为 ex4-2.c 。(用数组处理fibonacci数列前40项) # include { long int f[40]={1,1}; int i; for(i=2;i<40;i++) //求fibonacci前3项到40项 f[i]=f[i-1]+f[i-2]; printf(\"fibonacci数列前40项是:\\n\"); for(i=0;i<40;i++) { if(i%5==0) printf(\"\\n\"); //输出5个数换行 printf(\"%15ld\ //%ld--输出常整型数,15表示宽度 } } ③ 程序三,程序文件名为ex4-3.c 。(掌握冒泡法) # include printf(\"请输入10个整数:\"); for(i=0;i<10;i++) scanf(\"%d\ for(i=0;i<9;i++) //冒泡法排序算法 for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf(\"\\n排序后的数:\"); for(i=0;i<10;i++) printf(\"%6d\} 三、实验内容( 按要求设计以下程序,并调试分析运行结果 ,此部分完成在实验报告上) (1) 设计程序sy4-1.c,输入10个整数存入一个数组a,输入x,使数组a中各元素值都乘以x后输出。 (2) 设计程序sy4-2.c,对输入的10个整数按倒序存放后输出结果。 (3) 设计程序sy4-3.c,输入10个整数,找出其中的最大数及其所在的下标。 (4) 设计程序sy4-4.c,在一个5个整数的升序排列的序列中,任意输入一个数插入其中,要求保持原来的排列顺序。输出结果。 (5) 设计程序sy4-5.c,用选择法对10个整数实现递增排序。 (6) 设计程序sy4-6.c,计算 scroe 数组中 10个人的平均成绩 aver,将低于 aver的成绩放在 below 数组中。输出aver和below数组中的数据。 (7) 请完善程序sy4-7.c,N 个有序整数数列已放在一维数组中,利用折半查找算法查找整数 m 在数组中的位置。若找到,则返回其下标值;反之,则返回\"Not be found!\"。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low 和 high(low< high),然后把 m 与中间位置(mid)中元素的值进行比较。如果 m 的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到 low >high,查找结束。 #include < stdio.h > #define N 10 void main( ) { int i,a[N]={-3,4,7,9,13,24,67,,100,180},k,m,low,high,mid; printf(\"a 数组中的数据如下:\"); for(i=0;i< N;i++) printf(\"%d\ printf(\"Enter m: \"); scanf(\"%d\ //请完善该部分代码 if (low<=high) printf(\"m=%d,index=%d\\n\ else printf(\"Not be found!\\n\"); } 四、实验要求: 在课堂上至少选做“实验内容”中的5道题,其余的请在下次上课前利用课外时间完成。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务