浙师大 C语言 实验7一维数组+答案

2018-11-23 20:40

上机实验七 一维数组

学号:

姓名:

一.目的要求

1. 2. 3.

掌握一维数组的基本概念,定义和初始化方法;

掌握一维数组的基本操作,如输入、输出、引用数组元素; 掌握与数组有关的基本算法,如寻找最大/最小值、排序等。

二.实验内容

【实验题1】程序改错:源程序用数组求Fibonacci数列前20项,但在带标记的代码行存在错误。源程序如下:

#include void main() { int i, fib[20]; fib[1]= fib[2]= 1; //错误1 for(i=3; i<=20; i++) //错误2 fib[i]= fib[i-1] +fib[i-2]; for(i=1; i<=20; i++){ //错误3 printf(\ if( (i+1)%5==0 ) printf(\ } }

未改正错误之前,程序运行结果是(注意,最后一项 ——20,错误 ):

数组的下标应该从几开始?标出的三个错误语句行,应分别改为? 从0开始,

fib[1]= fib[2]= 1; //错误1 ? fib[0]= fib[1]= 1; for(i=3; i<=20; i++) //错误2 ? for( i=2; i<20; i++) for(i=1; i<=20; i++){ //错误3 ? for( i=0; i<20; i++)

改正后,程序运行结果是

【实验题2】程序填空:给定平面上10个点,求其中离原点最近的点。源程序用一维数组x存放这10个点的x坐标,用一维数组y存放相应的y坐标,即第i个点的坐标为(x[i], y[i])。用变量index记录最近点的下标。程序中使用距离的平方做比较:x*x+y*y。

#include void main() { int i, index; //index是离原点最近的点的下标 double d, min; //min是到原点的最近距离的平方 double x[]={1.1, 3.2, -2.5, 5.67, 3.42, -4.5, 2.54, 5.6, 0.97, 4.65}; // 赋初值 double y[]={-6, 4.3, 4.5, 3.67, 2.42, 2.54, 5.6, -0.97, 4.65, -3.33}; // :赋初值 index= 0 ; min= x[0]*x[0]+y[0]*y[0]; //设第0个点为最近点 for(i=1; i<10; i++){ d= x[i]*x[i]+y[i]*y[i]; if(d

程序运行结果为:

数组x和y的长度应该各是多少? x=10,y=10 如果将程序功能改为求10个点中离原点最远的点,语句行Line 11又应如何填写?if( d>min ){ //Line 11

【实验题3】程序填空:输入5个整数, 将这5个数按逆时针顺序转动一次后再输出,如输入1 2 3 4 5,逆时针转动一次后,输出2 3 4 5 1。要求用数组实现。

提示:设存放整数的数组为a。要实现数组逆时针转动,只要先将首元素a[0]“搬”至一个变量t中; 然后从第1个元素到最后1个元素,依次向前移一位, 即a[i-1]= a[i] ( i= 1, … , 4);最后将存放在t中的首元素放入最后的元素。

#include void main()

{ int i, t, a[5];

(2) printf(\

for(i=0; i<5; i++) scanf(\&a[i]); t= a[0]; //Line 6 for(i=1; i<5; i++) //Line 7 a[i-1]=a[i]; //Line 8 a[4]= t; //Line 9 printf(\

for(i=0;i<5;i++) printf(\ a[i]);

a[0] a[1] (1) t a[2] a[3] (3) a[4] printf(\ }

运行程序,输入1 2 3 4 5, 结果为:

如果将Line 8 改为“ a[i]= a[i+1]; ”,则Line 7应改为: for(i=0; i<4; i++)

如果要求程序实现数组元素的顺时针转动,那么Line 6、Line 7、Line 8、Line 9应该如何修改?

方法1:

t= a[4]; //Line 6: 将最后一个元素搬至t for(i=4; i>0; i--) //Line 7: 前4个元素依次后移一位 a[i]=a[i-1]; //Line 8:后移一位 a[0]= t; //Line 9:将t中存放的最后一个元素放入首元素的位置

方法2:

t= a[4]; //Line 6: 将最后一个元素搬至t for(i=0; i<4; i++) //Line 7: 前4个元素依次后移一位 a[4-i]=a[3-i]; //Line 8:后移一位 a[0]= t; //Line 9:将t中存放的最后一个元素放入首元素的位置

(2)

a[0] a[1] (3) a[2] a[3] (1) a[4] t

【实验题4】程序填空:输入整数x, 要求在给定的数组a中查找x, 若在a中找到了x,删除之;如果x在数组a中不出现,输出提示信息“Not Found”.

提示:要删除数组元素a[k],将a[k+1]…a[n-1]各向前移动一位:a[i]= a[i+1] (i= k, …, n-2) 源程序:

#include void main() { int x, i, k=-1, a[5]={1,3,5,7,9}; //k--记录x在数组a中的下标,初值为-1,表示尚未找到 printf(\ scanf(\ for(i=0; i<5; i++) //在a中寻找x if( a[i]==x ) { k= i ; break; } if( i==5 ) //未找到,显示提示信息 printf(\ else //找到x,则删除之 { for(i= k ; i<4; i++) a[i]=a[i+1] ; for(i=0;i< 4; i++) printf(\ \//输出剩余的数组元素 } }

运行程序,输入2,结果是_Not Found!_.

输入3,结果是______1 5 7 9_____.


浙师大 C语言 实验7一维数组+答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:尼康镜头大集合

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: