課外練習6 1答案

2021-10-10 16:19:08 字數 2089 閱讀 2846

第一題:先讀入n(n < 100), 再讀入n個整數,計算其最大的一段的和,輸出該段的和以及起始下標和終止下標(下標從0開始)。

例如輸入:8

-4 5 7 -6 9 -5 -5 9

輸出:15:1, 4

正解(暴力列舉):

思想:列舉出陣列的所有子陣列的和即可。

輔助函式:計算一段陣列的值的函式:

例如:int arr = 。計算arr陣列中下標1到下標3的數之和。使用sum(arr, 1, 3)即可。

#include

using

namespace std;

intsum

(int arr,

int startnum,

int endnum)

return sum;

}int

main()

, maxvalue =

0, maxstart =

0, maxend =0;

cin >> n;

//給陣列賦值

for(

int i =

0; i < n; i++

)int j =

0, k =-1

;while

(j <= n && k <= n)

//尋找終止下標

int k = j;

while

(arr[k]

>=

0) k++

;//注意:終止下標是k - 1

k = k -1;

if(maxvalue <

sum(arr, j, k)

) j = k +1;

} cout << maxvalue <<

":"<< maxstart <<

","<< maxend <<

" ";

system

("pause");

return0;

}

第二題:先讀入n(n < 100),再讀入n個點的座標,計算距離最短的兩個點的距離,輸出該距離值。

思想:還是暴力列舉

輔助函式:計算陣列中兩點之間距離的最大值的函式。

例如:計算3個點——(0, 0) (1, 1) (2, 2)中最大距離的兩個點。只需呼叫函式calcdistance(arr, int 3)。其中arr是二維陣列。

#include

#include

using

namespace std;

double

calcdistance

(double arr[

2],int n)

}return maxd;

}int

main()

cout <<

"最短距離為:"

<<

sqrt

(calcdistance

(arr, n)

)<< endl;

system

("pause");

return0;

}

第三題:豎式計算(待修改)

#include

using

namespace std;

intmain()

, b[

200]=;

cout <<

"請輸入a的值:"

;int num1;

cin >> num1;

int pa =0;

while

(num1 >0)

for(

int i =

0; i < pa; i++)}

//進製

for(

int i =

0; i <

2* pa; i++)}

for(

int k =

2* pa -

2; k >=

0; k--

)system

("pause");

return0;

}

課外練習4 2

第一題 任意輸入乙個int整數,顯示為32位二進位制值 我的 include using namespace std intmain return0 輸入樣例 3輸出樣例 5我的 include using namespace std intmain if flag return0 第三題 程式設計...

oracle課外練習3

create table sporter sporterid number,name varchar2 20 varchar2 5 department varchar2 20 insert into sporter values 1001,李盼 女 計算機系 insert into sporter...

課外練習 迴圈之後 D Gakki的疑問

眾所周知,新垣結衣 gakki 很愛她的老公姚師姐,6月11日是gakki的生日,姚師姐想送她生日禮物,於是跑去問 老婆,你最近缺些什麼嗎?可愛的gakki很傲嬌,她拿起筆在紙上寫了寫,然後羞澀地塞給師姐,說 這道題,你能在1s裡解出來,就給我買鑽石項鍊,解不出來,就買輛蘭博基尼吧!只見紙上寫著 如...