計算機二級c語言上機題目整理

2022-11-19 20:54:05 字數 3681 閱讀 3100

一./ %相關

核心思想:

利用 」 / 」 運算可以捨棄低位.例如:

1234/1000 捨棄後3位,得到1

1234/100 捨棄後2位,得到12

1234/10 捨棄最後1位,得到123

利用 」% 」 運算可以捨棄高位.例如:

1234%1000 捨棄最高的1位,得到234

1234%100 捨棄最高的2位,得到34

1234%10 捨棄最高的3位,得到 4

65: 第65題請編寫函式fun,其功能是:將兩位數的正整數a、b合併成乙個整數放在c中。

合併的方式是:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的十位和千位上。

思路:做這型別的題目,首先我們根據題目意思分別求出a的十位a1和個位a2, b的十位b1和個位b2,然後按照題目的要求進行返回到c所指定的記憶體單元.

注意:這裡的c是乙個指標,我們知道所謂指標就是位址.那麼我們在對將合併後的數放在c中時就不能寫成c=a2*100+a1+b1*10+b2*1000; 因為是不能給乙個位址型的變數賦數值的.

這個問題不清楚的學員請參考書本第八章有關指標的定義以及賦值.

此外,這個函式的返回值是void 型別,表示無返回值,所以沒有return語句.

#include <>

#include <>

void fun (int a, int b, long *c )

main ()

這個型別的題目還有以下幾個題目:

48: 第48題請編寫函式fun,其功能是:將兩個兩位數的正整數a,b合併成乙個整數放在c中。

合併的方式是:將a數的十位和個位依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的百位和個位上。

71: 第71題請編寫函式fun,其功能時:將兩個兩位數的正整數a、b合併形成乙個整數放在c中,合併的方式是:

將a數的十位和個位數依次放在c數的十位和千位上,b的十位和個位整數依次放在c數的百位和個位上。

77: 第77題請編寫乙個函式fun,其功能是:將兩個兩位數的正整數ab合併形成乙個整數放在c中。

合併方式是:將a數的十位和個位數依次放在c數的個位和百位上,b數的十位和個位數依次放在c數的十位和千位上。

81: 第81題請編寫函式fun,其功能使:將兩個兩位正整數a b合併形成乙個整數放在c中。

合併的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。

84: 第84題請編寫函式fun,其功能是:將兩個兩位數的正整數a b合併形成乙個整數放在c中,合併的方式是:

將a數的十位和個位數依次放在c的個位和百位上,b數的十位和個位數依次放在c數的千位和十位上。

87: 第87題請編寫函式fun,其功能是:將兩個兩位數的正整數a b合併形成乙個整數放在c 中。

合併的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的個位和百位上。

91: 第91題請編寫函式fun,其功能是:將兩個兩位數的正整數a b合併形成乙個整數放在c中。

合併的方式是:將a數的十位和個位數依次放在c的十位和千位上,b數的十位和個位數依次放在c數的個位和百位上。

15: 第15題請編寫乙個函式unsigned fun(unsigned w),w乙個大於10的無符號整數,若w使n(n≥2)位的整數,則函式求出w後n-1位的數作為函式值返回。

思路:如果w=123 那麼按照題目意思返回的應該是23.如果w=1234 返回的是234.

也就是說這個題目要求我們捨棄w的最高位.而根據上面第65的例題我們知道,如果w是乙個4位數,要捨棄w的最高位,我們用 w%1000 得到, 如果w是乙個3位數,要捨棄w的最高位,我們用 w%100 .這樣我們的問題就變成了:

求數w是乙個幾位數.或者說,得到究竟應該是%10,還是%100,還是%1000,還是%10000.

利用w每次除以10以後位數就少了一位.通過迴圈,來得到w的位數.或者得到t

#include <>

#include <>

unsigned fun ( unsigned w )

main( )

如果這個題目改變一下,變成求w中各個位上的數之和,如果w=123, (1+2+3)則函式返回6.

求w中偶數字上的數之和若w=1234, (1+3)則函式返回4. .

16.第16題請編寫乙個函式float fun(double h),函式的功能使對變數h中的值保留2位小樹,並對第三位進行四捨五入(規定h中的值位正數)。

思路:參考書上的例3.2 的7到11行.

注意:如果沒有**中紅色標記的(float),那麼這個程式會報兩個警告:

warning c4244: '=' : conversion from 'double ' to 'float ', possible loss of data

這是因為,浮點型常量在計算機內是做為double 型別的.所以需要進行強制型別轉化為float型別.

float fun ( float h) //若h=123.456

main( )

將滿足**條件的數放到指定的樹組中,或者求滿足**條件的數的和

核心思想:對於這型別的題目,其主要的結構必定是乙個迴圈語句加乙個if語句.

27: 第27題請編寫乙個函式fun,它的功能是:求1到m之內(含m)能被7或11整除的所有整數放在陣列a中,通過n返回這些數的個數。

思路: 這個題目首先是要求1到m之內(含m)滿足**要求的數.那麼很顯然的這裡要用到for迴圈來做. 所以最先寫下:

int t;

for(t=1;t<=m;t++)

然後,能被7或11整除那麼if(t%7==0 || t%11==0)

其次,把滿足這個條件的數保留到a陣列中, 那麼我們首先在程式開頭的位置定義乙個表示陣列下標的變數int i=0; 然後在if語句中將滿足條件的數放到相應下標的位置 a[i]=t; 下標向後挪一位. i++;

最後, 通過n返回這些數的個數. *n=i;

注意: 函式引數列表裡面的a,和n的含義是不一樣的, a,表示的是陣列,而n表示的是乙個整形的記憶體單元的位址.和前面將的第65題的c是乙個意思.

對這個問題不清楚的同學可以參考書第九章的9.2節,一維陣列和指標.

#include <>

#include <>

#define m 100

void fun ( int m, int *a, int *n )

}*n=i;

}main()

類似的題目還有:

3: 第3題請編寫函式void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶數的各整數,並按從小到大的順序放在pp所指的陣列中,這些除數的個數通過形參n返回。

98: 第98題請編寫函式fun,它的功能是:計算並輸出n(包括n)以內能被5或9整除的所有自然數的倒數之和。

63: 第63題請編寫乙個函式fun,它的功能是:計算並輸出給定整數n的所有因子(不包括1與自身)之和。規定n的值不大於1000。

20: 第20題編寫函式int fun(int lim,int aa[max]),該函式的功能是求出小於或等於lim的所有素數並放在aa陣列中,該函式返回所求的素數的個數。

思路: 上一題是求能被7或11整除的數,而這個題是求素數.除了這一點不一樣以外,這一題與上面一題是一模一樣的,所以在**上只是新增了紅色部分顯示的判斷素數的**.

可以參考課本例7.4的第13到第16行.

國家計算機二級c語言上機真題

1.填空題 請補充main函式,該函式的功能是 從鍵盤輸入乙個字串並儲存在字元str1中,把字串str1中下標為偶數的字元儲存在字串str2中並輸出。例如,當str1 cdefghij 則str2 cegi 注意 部分源程式給出如下。請勿改動主函式main和其他函式中的任何內容,僅在函式fun 的橫...

計算機二級C語言複習

第一部分 c語言知識複習資料 第一章 c語言基本知識 考點1 c程式 用c語言編寫的程式稱為c語言源程式,源程式檔案的字尾名為 c 源程式經編譯後生成字尾名為 obj 的目標檔案,再把目標檔案與各種庫函式連線起來,生成 exe 可執行檔案。c語言有三種基本結構 順序結構 選擇結構 迴圈結構。考點2 ...

計算機二級考試C語言全

第一章資料結構與演算法 1.1 演算法 1 是指解題方 而完整的描述。換句話說,演算法是對特定問題求解步驟的一種描述。演算法不等於程式,也不等於計算方法。程式的編制不可能優於演算法的設計。2 演算法的基本特徵 1 可行性。針對實際問題而設計的演算法,執行後能夠得到滿意的結果。2 確定性。每一條指令的...