C語言幾個精典的測試題

2021-04-09 10:11:47 字數 2537 閱讀 7507

最近學習c語言,發現有幾個測試題是最容易錯的,不知道學習c語言的朋友也會犯這樣的錯誤呢?

1.大家看以下**會輸出什麼( ).

void

main()

...

a)    a             b)   100          c)              c             d)            d

我們知道宣告了乙個字元型變數,同時給它初始化為ch='a'+3;那麼這裡就應該輸出'd'.我們知道字元型變數在記憶體中是以整型儲存的,通過ascii碼知道'a'對應的整數是97.那麼97+3就是100對應的字元'd'.所以選d).

2.分析下面的c程式:

#include 

<

stdio.h

>

#include 

<

string

.h>

void

main()

...

輸出結果是( ).(選擇一項)

a)    9      b)        12            c)       13            d)           8

在我們學習c語言的過程中,我們知道對字串的操作是通過字元陣列來表示字串的,如char ch[ ] = "abcdefgh";

這裡我們知道字串是以'/0'來表示字串的結束,那麼使用strlen(str)這個函式計算字串的長度並不計算字串的結束符'/0'.

首先我們宣告了乙個指標變數char *p;讓它指向str1的首位址,然後"+3"那麼指向的是陣列的第四個元素'd'.那麼這裡我們又通過strcat(str1,str2)函式,它表示將源字串的str2連線到str1字串的後面.那麼p的值就是"defgh",同時相應的字串長度就是5+4等於9.

3.分析下面的c語言**:

inta=1

,b=10;

do...

while

(b--<0);

則執行迴圈語句後b的值為( )。(選擇一項)

a)             9              b)                -2                  c)                -1                      d)                   8

我們來回顧一下do--while語句的用法:它是先執行後判斷,無論條件為真或為假,迴圈體裡的語句至少執行一次;而while迴圈是:先判斷後執行,如果條件不成立那麼就退出迴圈。那麼我們再來看一下for迴圈,它的語法為:for(表示式1;表示式2;表示式3){}它首先給表示式1賦初值,然後再判斷表示式2的值是否為真,如果為真的話就執行迴圈體中的語句,執行完後再計算表示式3的值來更新變數的值而改變迴圈條件,至到迴圈結束;如果表示式2為假的話就退出迴圈。

我們來看這一題,首先b -= a,這個表示式考察了我們學習c語言中的復合賦值運算子,可表示為:b = b - a; b = 9;執行完後就判斷迴圈條件: b -- < 0;條件為假,迴圈退出。我們知道b-- ,它是先賦值,之後自身減 1(如:b=9,c = b-- .執行過程為:c=9, b = b - 1 ;)那麼所得結果就是:8 所以答案為:d.

4.執行下面的c程式段後,輸出結果是()。(選擇一項)

inta =5

;while

( a 

--);

printf("%d

",a);

a)          54321        b)         4321                c)                  0                    d)            -1

我們來分析一下這一道題,看似簡單,但是做起來容易出錯。我們知道c語言中無論是迴圈條件或者是邏輯表示式,它所計算所得的結果為:真或假。c語言中真的值就是 !  ,假的值為: 0 。那麼我們來看while(a--);當條件a--的值為假時,迴圈退出,即:a -- = 0時,那麼a 的值也就為: - 1;我們這裡要知道這個迴圈總共迴圈執行了 5 次。答案就選擇:d。

5.研究下面的c程式段:

inti,j;

for(i =5

; i; i --)

for(j =0

; j 

<

4; j++)

...

迴圈體的總執行次數是()。(選擇一項)

a)               20                b)           25                      c)             24                  d)                      30

我們看到題之後首先應該想到的是,它是乙個巢狀的for迴圈,相當於乙個二維陣列。如:a[5][4],我們知道它是有5行4列組成,共有5x4=20個元素。為它動態賦值的話可表示為:

inta[5][

4], i,  j;

for(i=0

;i<5;i

++)

for(j =0

; j 

<

4; j++)

...

C語言 幾個測試題

預處理器 preprocessor 1.用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 1.define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 2....

C語言測試題

1 c程式的入口 a switch b if c main d getchar 2.c語言中,整數型別中的浮點型別,常用的關鍵字是 a int b char c short d float 3.輸出整數型別的格式符是 a d b c c x d o 4.輸出浮點型別的格式符是 a c b o c d...

C語言測試題07

結構體 自定義複雜 復合型別 由其他基本型別構成 普通型別的缺點 int char 變數之間是沒有關係 結構體描述了一種構成關係 所屬關係 定義乙個結構體型別 描述了學生結構體的構成 型別名是 struct student struct student 給結構體起別名 struct student ...