天天看點

c語言實驗一維數值數組答案,浙師大 C語言 實驗7一維數組+答案.doc

上機實驗七 一維數組

學号: 姓名:

一.目的要求

掌握一維數組的基本概念,定義和初始化方法;

掌握一維數組的基本操作,如輸入、輸出、引用數組元素;

掌握與數組有關的基本算法,如尋找最大/最小值、排序等。

二.實驗内容

【實驗題1】程式改錯:源程式用數組求Fibonacci數列前20項,但在帶标記的代碼行存在錯誤。源程式如下:

未改正錯誤之前,程式運作結果是(注意,最後一項 ——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。

程式運作結果為:

數組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];

printf("Input 5 integers:\n");

for(i=0; i<5; i++) scanf("%d", &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("After rotation:\n");

for(i=0;i<5;i++)printf("%5d", a[i]);

printf("\n");

}

運作程式,輸入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中存放的最後一個元素放入首元素的位置

【實驗題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)

源程式:

運作程式,輸入2,結果是_Not Found!_.

輸入3,結果是______1 5 7 9_____.

courage and wit to answer: "I'm not the Shina, I am little trading on yan Zhen, man." Japan or not, bound to Yan Z