21道C 迴圈程式設計題目

2021-06-16 02:54:09 字數 4822 閱讀 7046

1

.鍵盤輸入正整數

n,求出

n與其反序數之和並輸出。例如,輸入

2038

,輸出應為

2038+8302=10340。2.

利用迭代公式:

計算實數

x的立方根

,當|yn+1

-yn|≤ε時,yn+

1為的近似值。

3.輸入正整數i和

n,由程式負責從

i開始找起,連續找出

n個素數並顯示在螢幕上。如輸入10和

8後,輸出的

8個素數應為:11,

13,17,

19,23,

29,31,

37。4.求下述三個序列的累加和(每一串行各累加

n項,正整數n通過

cin從鍵盤輸入)。

s1 = 1/5 + 1/4 + 3/11 + 2/7 + 5/17 + 3/10 + 7/23 + …

s2 = 2/1 + 3/2 + 5/3+ 8/5+ 13/8 + 21/13 + 34/21 + …

s3 = 1/1 - 3/(1+4) + 5/(1+4+7) - 7/(1+4+7+10) + 9/(1+4+7+10+13) - …

5.對於

n=2,5,

8,11,…,20,

23,分別求出

e(n) = 1/1! + 1/2! +

…+ 1/n!

之值並輸出它們。要求按如下三種方式來進行求解,並對它們的執行速度及優劣性進行比較。(1

)使用如下輪廓的三重迴圈來實現:

for(int n=2; n<=23; n+=3)//

求出多個不同的e

for (int i=1; i<=n; i++)//

共累加n

個項for (int j=1; j<=i; j++)//

每個項中用到

j的階乘…

(2)去掉最內層用來求階乘的迴圈,而改為使用二重迴圈的實現方法:

for(int n=2; n<=23; n+=3)//

求出多個不同的e

for (int i=1; i<=n; i++)//

共累加n個項…

(3)改寫成使用一重迴圈的實現方法:除了去掉用來求階乘的最內層迴圈外,還要在求

e(5)

時接著使用(而不再重新計算)已算出的

e(2)

值,求e(8)

時接著使用已算出的

e(5)

值,如此等等。

for(int n=1; n<=23; n++)

//從第

1項開始,一共(最多)累加23項

…//當累加到2,

5,8,…,20,

23項時,輸出當時的累加結果e值

6.求滿足下述兩個條件的最小自然數n:

(1)n

的個位數字為8;

(2)將n

的個位數字

8移到其它各位數字之前(如

205128

移過後為

820512

),所得的新數恰為n的

4倍。點評:若將

n的個位數字改為

6時(如

153846

移過後為

615384

),求解方法完全類似。

思考:可否任意指定個位數(的數值),以求解相同性質的更具有一般性的問題?

7.任意輸入

10個正整數,求出其中互不相同的數的個數

num,以及此

num個數中哪乙個數的出現次數最多,共出現了幾次。

8.程式設計序,輸入字串

s,而後統計出

s中各數字字元的出現次數並輸出結果。

9 程式設計序,輸入任意乙個字串

s1,而後由

s1形成另兩個字串s2和

s3並顯示在螢幕上。其中s2是

s1甩掉其尾部的所有非字母字元後得到的字串,而

s3則由

s2甩掉其前導的所有非字母字元後形成的字串。例如,程式執行後的螢幕顯示結果可為:

input s1:36 262/x+y*z-a d007 end! %%% 60++=--!

s2=36 262/x+y*z-a d007 end

s3=x+y*z-a d007 end

10.將輸入的

2進製數(乙個非「0」

即「1」的字串)化為

10進製數。

a盛放所輸入的二進位制數;而後從後往前逐一計算每一位的「位權」

w (2的0

次方、2的1

次方、...)

,再計算「位權」乘以「位值」並累加到乙個初值為

0的變數

value

上,最後輸出該

value

。思考:如何把

8進製數或

16進製制數化為

10進製數。更進一步,如何把某乙個

k進製的數化為

10進製數呢?

11.將輸入的羅馬資料化為

10進製數。假設羅馬資料中只使用如下

7個「基值」字母:m、

d、c、

l、x、

v、i,分別用來表示

1000

、500

、100、50

、10、5

、1。如,羅馬資料

l***vii

表示10

進製的87

。12.

將輸入的

10進製正整數化為

2進製數。

2,倒者排餘數」的方法實現。即是說,使用乙個

int型陣列

a盛放逐次得到的各餘數,最後將陣列

a中的各餘數倒著輸出來。

思考:如何把

10進製正整數化為

8進製數或

16進製制數。更進一步,如何把

10進製正整數化為某乙個

k進製的數呢?

13.將輸入的

10進製正整數轉換為羅馬資料。假設羅馬資料中只使用「基值」字母:m、

d、c、

l、x、

v、i,分別用來表示

1000

、500

、100、50

、10、5

、1。

14.由

20個正整數排成一圈,編乙個程式找出連續的四個數,其和是最大的(不小於圈上任何其它連續的四個數之和)。

int型陣列來存放那

20個正整數,而後通過迴圈,從累加出的

20個不同和數中找出其中的最大者。注意,由於將陣列看成是「圈狀」的,最後乙個數的「後繼」應是第乙個數,所以要用到取模的運算。

15.對於整型陣列a[

10]和b[

10],編制程式完成下列任務:(1

)由使用者從鍵盤為兩個陣列輸入值;(2

)求出兩個陣列的最大元和最小元;(3

)把陣列a和

b中的整數分別從小到大和從大到小排序;(4

)把兩個有序的陣列a和

b組成乙個長度為

20的有序陣列c[

20]。

16.用折半查詢方法,在元素呈公升序排列的具有

15個元素的陣列

a中查詢值為

key的那一元素的序號即下標號並輸出(其中的

key值通過鍵盤輸入)。若陣列中沒有值為

key的元素,則提示資訊「

no such element!

」。所謂的折半查詢方法如下:先用

key值與處於

15個元素之「中間」的那一元素進行比較,若恰好相等,則那一「中間」元素的序號即為所求;若

key值大於那一「中間」元素,則將查詢範圍縮小到陣列的後一半去繼續查詢,否則將查詢範圍縮小到前一半去繼續查詢。

17.設計乙個程式,它可以把最近的

20天的氣溫值以柱形圖的形式顯示出來,假設氣溫在22~

35度之間(取整),溫度的高低以由「

*」組成的「柱」的高低來表示。

18.設有4行

4列的陣列

b,其元素

b[i][j]=3*i+2*j-6(i

、j = 0,1

,2,3

)。程式設計序,實現:(1

)求第二行

4元素的累加和;(2

)求第四列

4元素之平均值;(3

)求主對角線

4元素中負數的個數。

19.設有二維字元陣列

dig[10][10]

,其元素值均為數字字元(

'0',

'1',

…,'9'

),程式設計序,首先通過使用

rand

函式來為陣列

dig設定初值,而後統計出其中

10個數字字元各自出現的次數。

rand()%10+48」

可生成乙個隨機數字字元值。

20.說明5

個行列數有關係的二維陣列用於表示矩陣a、

b、c、

d、e。首先給a、

b二矩陣賦初值,而後計算a、

b的和矩陣

c,乘積矩陣

d,以及

a的轉置矩陣

e,並顯示出各運算結果。

21.使用者從鍵盤輸入任意乙個正整數

n,程式負責將該正整數轉換為如下形式的「混英表示字串」並顯示出來:如輸入n為

302時,輸出:

three(100)-zero(10)-two(1)

;輸入n

為14895

時,相應的輸出應為:

one(10000)-four(1000)-eight(100)-nine(10)-five(1)

。eng

並在轉換過程中使用。

char eng[10][6]=;

C語言程式設計題目21至25

將1 100的資料以10x10矩陣輸出 include include intmain printf n system pause return0 八進位制與十進位制相互轉換 include include intconvertdecimaltooctal int decimalnumaber re...

一道有趣的迴圈題目

問題 輸入為 n,求乙個 n n的矩陣,規定沿 45度線遞增,形成乙個 zigzag 陣列 jepg 編碼裡取畫素資料的排列順序 用 c 實現。本人的實現思路 在 程式設計師面試寶典 中有另一種解法 問題的實質是把 0,n 1 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向...

一道有趣的迴圈題目

問題 輸入為 n,求乙個 n n的矩陣,規定沿 45度線遞增,形成乙個 zigzag 陣列 jepg 編碼裡取畫素資料的排列順序 用 c 實現。本人的實現思路 在 程式設計師面試寶典 中有另一種解法 問題的實質是把 0,n 1 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向...