您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页实验四 一维数值数组

实验四 一维数值数组

来源:尚车旅游网


专业: 学号 姓名

实验四 一维数值数组

一、实验目的

(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 main() {

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 main()

{ 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 void main() { int a[10]; int i,j,t;

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务