經典C語言試題練習

2021-08-15 01:59:42 字數 3912 閱讀 4350

0、計算100以內的奇數和。

1、列印所有「水仙花數」,所謂「水仙花數」是指乙個三位數,其各位數字立方和等於該數本身。例如,153是乙個水仙花數,因為153=1的立方  + 5的立方+ 3的立方。

2、有一整數序列

1,1,2,3, 5, 8, 13,21......

求出這個數列的前20項之和。

3、有一分數序列

2/1, 3/2, 5/3, 8/5, 13/8, 21/13,......

求出這個數列的前20項之和

4、寫乙個程式,將輸入的字串按反序輸出,例如給定輸入為abcde,輸出結果為edcba。

命令列輸入  s.exe  abcde                  

結果 edcba

5、寫乙個程式,對10個任意數字進行由大到小的排序。

6、輸入一行字串,找出其中大寫字母、小寫字母、數字以及其他字元的個數。

7、接上題,將找出的結果按照大寫字母、小寫字母、數字以及其他字元的次序排列成乙個新的字串。

ah0,bcg34.

abchg034,.

8、寫乙個函式實現將任意位數(<=10)數字字串(0-9)轉化為相應的數字,如:將  「123」轉化成  123。不能使用atoi函式

int str2num(char *s);

9、寫乙個函式實現將任意乙個正整數(long)轉化為乙個相應的字串,如:將  123轉化成  「123」。

char *num2str(int num,char *str);

10、寫乙個求字串的長度的函式。(不准使用庫函式strlen),在main函式中輸入字串,並輸出其長度。

int mystrlen(char *s);

11、寫乙個函式,實現兩個字串拼接的功能。(不准使用庫函式strcat),在main函式中輸入2個字串。  hello  world    ====   helloworld

char *mycat(char *s1,char *s2);

12、寫乙個函式實現strcpy/strncpy的功能。

12-1、寫乙個函式實現strcmp/strncmp的功能。

13、寫乙個函式實現將任意字串按照asc值從小到大順序排列。

函式原型為:

char *sort(char *s);

14、寫乙個函式將任意給定的兩個字串取交集

函式原型為:

char *jiaoji(char *s,char *s1,char *s2);

若s1:  abcddebcdf  ==》去重後的s1  abcdef  

s2:  bcdfgb

則返回的是 s: bcdf

15、寫乙個函式將任意給定的兩個字串取並集

函式原型為:

char *bingji(char *s,char *s1,char *s2);

若s1:  abcdde

s2:  bcdfg

則返回的是  abcdefg

16、定義學生資訊如下: 

struct stu

; 1)、手工輸入增加5條資訊,顯示出來;

2)、列出分數大於80的學生資訊

3)、按照分數高低排序並顯示

17、將13題第3步的結果寫入檔案

18、寫乙個程式,找出乙個檔案中數字字元的個數。(檔案自己給定)

19、int main(int argc,char **argv);  

./m  111 254  求和   argv[2]

20、寫乙個程式,求乙個任意給定檔案的行數。   '\n'

21、給定乙個含有n個字元的檔案,在這n個字元的中間處插入乙個給定的字串。  如: 原始檔裡面的內容是  12345,插入abc,結果:123abc45;

如: 原始檔裡面的內容是  123456,插入abc,結果:123abc456;

1,雞兔同籠

已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出「no answer」(不要引號)。

2,判斷正負

輸入乙個整數,請你不用任何關係運算子來判斷出該數字是正數還是負數。

3,求差值

輸入乙個整數陣列,將它們連線起來排成乙個數,找出能排出的所有數字中最大,最小的兩個數,

輸出這兩個數的差值。例如輸入陣列,則輸出9。

eg:輸入: 1 2 3

==>   321 - 123

輸出: 198

4,尋找最大數

請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,

比如當n=92081346718538,m=10時,則新的最大數是9888

5,輸入乙個正整數n,列印出楊輝三角的前n行111

1211331

1464 1

。。。6,輸入一段字串,把該字串中的數字字元,以整數的形式提取出來。

eg:輸入: 123sdf+546fgs%32f&76bfh/*

輸出:  123  546  32  76

7,回文字串

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。

當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。

現在要求你,給你乙個字串,可在任意位置新增字元,請求出最少再新增幾個字元,可以使這個字串成為回文字串。

輸入: 乙個字串

輸出:所需新增的最少字元數

eg:輸入:ab3bd

==>  dab3bad

輸出:2

8,佔連坐

輸入三個正整數 m n k,分別表示有m行n列的座位,k表示要佔的連坐是幾連坐

然後把座位的被佔狀態賦值;1表示被佔,0表示沒有被佔,

請輸出能佔到連坐的方式有多少種。

eg:m:3   n:5    k:3

1 1 0 0 0

0 0 0 0 1

1 0 1 1 1

輸出:能佔到連坐的方式有 3 種

9,分解連續數

輸入乙個數字,求出該數字能分解成連續數的方式有多少中

eg:輸入:   15

==>  15 = 1+2+3+4+5

15 = 4+5+6

15 = 7+8

輸出:    3

10,點數

在乙個二維的座標系內有三個點,這三個點的x,y座標都是整數,把這三個點構成乙個三角形,

請你求出這個三角形內部和邊界上的x,y座標都為整數的點一共有多少個。

11,蛇形填數

在n*n方陳裡填入1,2,...,n*n,要求填成蛇形。例如n=4時方陳為:

10 11 12  1

9  16 13  2

8  15 14  3

7  6  5   4

輸入:直接輸入方陳的維數,即n的值。(n<=100)

輸出:輸出結果是蛇形方陣。

eg:輸入:  3

輸出:7 8 1

6 9 2

5 4 3

12,整數解

小明是一名初中生,她現在很苦惱,因為老師布置了乙個讓她苦惱的作業,你能不能幫助她呢?題目資訊如下。

已知二元一次方程 a*x+b*y=n, 判斷這個二元一次方程有沒有整數解 (x,y為未知數)

其中a,b,n都為整數且不等於零,同時滿足0

輸入a,b,n的值

輸出:yes / no

13,擊鼓傳花

輸入三個正整數 m n k

m:總人數       n:間隔數     k:接花的目標的編號

把m個人圍成一圈從1開始編號(1,2,3...),花從編號為1的人開始傳遞,花一傳出去,該傳花者就淘汰掉,

並擊一次鼓,花要傳遞到下乙個間隔數滿足n的人手中(淘汰的人不算間隔數)。若該者的編號不為k,則該者再把花傳遞出去,

同時該傳花者被淘汰掉,擊鼓一次。重複此動作。直到花傳遞到編號為k的人手中。

輸出擊鼓的次數(注:若 k=1,則擊鼓0次)

C語言經典面試試題

c語言經典面試試題 1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義...

C語言經典筆試題(二)

21 關鍵字volatile有什麼含意?並給出三個不同的例 子。參 乙個定義為volatile的變數是說這變數可 能會被意想不到地改變,這樣,編譯器就不會去假設 這個變數的值了。精確地說就是,優化器在用到這個 變數時必須每次都小心地重新讀取這個變數的值,而 不是使用儲存在暫存器裡的備份。下面是vol...

經典C語言面試題

1.gets 函式 問 請找出下面 裡的問題 include intmain void 答 上面 裡的問題在於函式gets 的使用,這個函式從stdin接收乙個字串而不檢查它所複製的快取的容積,這可能會導致快取溢位。這裡推薦使用標準函式fgets 代替。2.strcpy 函式 問 下面是乙個簡單的密...