當前位置:首頁 » 編程語言 » c語言二級知識點

c語言二級知識點

發布時間: 2024-10-17 10:33:38

① 計算機二級考試c語言知識點歸納

2017年計算機二級考試C語言知識點歸納

計算頌悄機二級考試是全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)四個等級中的一個等級,考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能。下面是2017年計算機二級考試C語言知識點歸納。歡迎閱讀。

總體上必須清楚的

1)程序結構是三種:順序結構 ,循環結構

(三個循環結構),選擇結構(if 和 switch)

2)讀程序都要從main()入口,然後從最上面順序

往下讀(碰到循環做循環,碰到選擇做選擇)。

3)計中含算機的數據在電腦中保存是以二進制的形式。

數據存放的位置就是他的地址。

4)bit是位 是指為0 或者1。 byte 是指位元組,

一個位元組 = 八個位。

5)一定要記住二進制如何劃成十進制。

概念常考到的:

1)、編譯預處理不是C語言的一部分,不再運行

時間。C語言編譯的程序稱為源程序,

它以ASCII數值存放在文本文件中。

2)、每個C語言程序中main函數是有且只有一個。

3)、在函數中不可以再定義函數。

4)、演算法是一定要有輸出的,他可以沒有輸入。

5)、break可用於循環結構和switch語句。

6)、逗號運算符的級別最低。

第一章

1)合法的用戶標識符考查:

合法的要求是由字母,數字,下劃線組成。

有其它元素就錯了。

並且第一個必須為字母或則是下劃線。

第一個為數字就錯了。

關鍵字不可以作為用戶標識符號。

main define scanf printf 都不是關鍵字。迷惑你的

地方If是可以做為用戶標識符。因為If中的

第一個字母大寫了,所以不是關鍵字。

2)實型數據的合法形式:

2.333e-1 就是合法的,且數據是2.333×10-1。

考試口訣:e前e後必有數,e後必為整數。.

3)字元數據的合法形式::

'1'是字元佔一個位元組,"1"是字元串占兩個

位元組(含有一個結束符號)。

'0' 的ASCII數值表示為48,'a' 的ASCII數值是97,

'A'的ASCII數值是65。

4) 整型一般是兩個位元組, 字元型是一個位元組,

雙精度一般是4個位元組:

考試時候一般會說,在16位編譯系統,或者

是32位系統。碰到這種情況,不要去管,一樣做題。

掌握整型一般是兩個位元組, 字元型是一個位元組,

雙精度一般是4個位元組就可以了。

5)轉義字元的考查:

在程序中 int a = 0x6d,是把一個十六進制的數給

變數a 注意這里的0x必須存在。

在程序中 int a = 06d, 是一個八進制的形式。

在轉義字元中,’x6d’才是合法的,0不能寫,

並且x是小寫。

‘141’是合法的。

‘108’是非法的,因為不可賣櫻笑以出現8。

轉義字元意義 ASCII碼值(十進制)

a 響鈴(BEL) 007

 退格(BS) 008

f 換頁(FF) 012

換行(LF) 010

回車(CR) 013

水平製表(HT) 009

v 垂直製表(VT) 011

\ 反斜杠 092

? 問號字元 063

' 單引號字元 039

" 雙引號字元 034

空字元(NULL) 000

ddd 任意字元三位八進制

xhh 任意字元二位十六進制

6)算術運算符號的優先順序別:

同級別的有的是從左到右,有的是從右到左。

7)強制類型轉換:

一定是(int)a 不是 int(a),注意類型上

一定有括弧的。

注意(int)(a+b)和(int)a+b 的區別。

前是把a+b轉型,後是把a轉型再加b。

8)表達式的考查:

是表達式就一定有數值。

賦值表達式:表達式數值是最左邊的數值,

a=b=5;該表達式為5,常量不可以賦值。

自加、自減表達式:假設a=5,++a(是為6),

a++(為5);

運行的機理:++a 是先把變數的數值加上1,

然後把得到的數值放到變數a中,然後再用這

個++a表達式的數值為6,而a++是先用該表達

式的數值為5,然後再把a的數值加上1為6,

再放到變數a中。 進行了++a和a++後在下面的

程序中再用到a的話都是變數a中的6了。

考試口訣:++在前先加後用,++在後先用後加。

逗號表達式:優先順序別最低 ;表達式的數值

逗號最右邊的那個表達式的數值。

(2,3,4)的表達式的數值就是4。

9)位運算的考查:

會有一到二題考試題目。

總的處理方法:幾乎所有的'位運算的題目

都要按這個流程來處理(先把十進制變成

二進制再變成十進制)。

例1:char a = 6, b;

b = a<<2; 這種題目的計算是先要把a的十進

制6化成二進制,再做位運算。

例2:一定要記住,

例3:在沒有捨去數據的時候,<<左移一位表示

乘以2;>>右移一位表示除以2。

10)018的數值是非法的,八進制是沒有8的,

逢8進1。

11)%符號兩邊要求是整數。不是整數就錯了。

12)兩種取整丟小數的情況:

1、int a =1.6;

2、(int)a;

第二章

1)printf函數的格式考查:

%d對應整型;%c對應字元;%f對應單精度等等。

寬度的,左對齊等修飾。

%ld對應 long int;%lf 對應double。

2)scanf函數的格式考察:

注意該函數的第二個部分是&a 這樣的地址,不是a;

Scanf(“%d%d%*d%d”,&a,&b,&c);跳過輸入的

第三個數據。

3)putchar ,getchar 函數的考查:

char a = getchar() 是沒有參數的,從鍵盤得到

你輸入的一個字元給變數a。

putchar(‘y’)把字元y輸出到屏幕中。

4)如何實現兩個變數x ,y中數值的互換

(要求背下來)

不可以把 x=y,y=x; 要用中間變數 t=x;x=y;y=t。

5)如何實現保留三位小數,第四位四捨五入

的程序,(要求背下來)

x=(int)(x*1000+0.5)/1000.0

這個有推廣的意義,注意 x = (int)x 這樣是

把小數部分去掉。

第三章

特別要注意:c語言中是用非0表示邏輯真的,

用0表示邏輯假的。

1)關系表達式:

表達式的數值只能為1(表示為真),

或0(表示假)

當關系的表達是為真的時候得到1。

如 9>8這個是真的,所以表達式的數值就是1;

2)邏輯表達式:

只能為1(表示為真),或0(表示假)

a) 共有&& || ! 三種邏輯運算符號。

b) !>&&>|| 優先的級別。

c) 注意短路現象。考試比較喜歡考到。

d) 要表示 x 是比0大,比10小的方法。0

不可以的(一定記住)。是先計算0

結果為1或則0;再用0,或1與10比較得到的

總是真(為1)。所以一定要用(0

示比0大比10小。

3)if 語句

else 是與最接近的if且沒有else的相組合的。

4)條件表達式:

表達式1 ?表達式2 :表達式3

注意是當非0時候是表達式2的數值,當為0是

就是表達式2的數值。

考試口訣:真前假後。

5)switch語句:

a)一定要注意有break 和沒有break的差別,

沒有break時候,只要有一個case匹配了,剩下

的都要執行,有break則是直接跳出了swich語句。

b)switch只可以和break一起用,不可以

和continue用。

第四章

1)三種循環結構:

a)for(); while(); do- while()三種。

b)for循環當中必須是兩個分號,千萬不要忘記。

c)寫程序的時候一定要注意,循環一定要有結束

的條件,否則成了死循環。

d) do-while()循環的最後一個while();的分號一定

不能夠丟。(當心上機改錯)

2) break 和 continue的差別

記憶方法:

break:是打破的意思,(破了整個循環)所以

看見break就退出真個一層循環。

continue:是繼續的意思,(繼續循環運算),

但是要結束本次循環,就是循環體內剩下的語句

不再執行,跳到循環開始,然後判斷循環條件,

進行新一輪的循環。

3)嵌套循環

就是有循環裡面還有循環,這種比較復雜,要一層

一層一步一步耐心的計算,一般記住兩層是處理

二維數組的。

4) while((c=getchar())!=’ ’)和

while(c=getchar() !=’ ’)的差別

先看a = 3 != 2 和(a=3)!=2 的區別:

(!=號的級別高於=號 所以第一個先計算 3!=2)

第一個a的數值是得到的1;第二個a的數值是3。

考試注意點: 括弧在這里的重要性。

第五章

函數:是具有一定功能的一個程序塊;

1) 函數的參數,返回數值(示意圖):

main()

{

int a = 5,b=6,c;

c = add(a,b);

printf(“%d”,c);

}

調用函數

a,b是實參

整個函數得到一個數值就是

Add函數的返回數值。

int add ( int x,int y)

{

int z;

z=x+y;

return z;

}

被調用函數

x,y是形式參數

函數返回數值是整型

z就是這個add函數計算後得到的結果,就是函數

返回給主程序的返回數值。

程序是在從上往下順序執行,當碰到了函數add後,

把a,b的數值穿給調用函數,程序暫時中斷等待返回數值。

當得到了返回數值後,再順序的往下執行

2)一定要注意參數之間的傳遞

實參和形參之間 傳數值,和傳地址的差別。(考試的重點)

傳數值的話,形參的變化不會改變實參的變化。

傳地址的話,形參的變化就會有可能改變實參的變化。

3)函數聲明的考查:

一定要有:函數名,函數的返回類型,函數的參數類型。

不一定要有:形參的名稱。

第六章

指針變數的本質是用來放地址,而一般的變數是放數值的。

int *p 中 *p和p的差別:

*p可以當做變數來用;*的作用是取後面地址p裡面的數值

p是當作地址來使用。

*p++ 和 (*p)++的之間的差別:改錯題目中很重要

*p++是 地址會變化。

(*p)++ 是數值會要變化。

三名主義:(考試的重點)

數組名:表示第一個元素的地址。數組名不可以自加,

他是地址常量名。(考了很多次)

函數名:表示該函數的入口地址。

字元串常量名:表示第一個字元的地址。

第七章

1一維數組的重要概念:

對a[10]這個數組的討論。

1、a表示數組名,是第一個元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出現a++,或者

是a=a+2賦值的都是錯誤的。

3、a是一維數組名,所以它是列指針,也就是

說a+1是跳一列。

對a[3][3]的討論。

1、a表示數組名,是第一個元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出現a++,或者

是a=a+2賦值的都是錯誤的。

3、a是二維數組名,所以它是行指針,也就

是說a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以對

它進行賦值操作,同時它們都是列指針,a[0]+1,

a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0] 、a[1]、a[2]是不同的,它們的

基類型是不同的。前者是一行元素,後三者是一列元素。

二維數組做題目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。

步驟一:把他們寫成:

第一列第二列第三列

a[0]à 1 2 3 ->第一行

a[1]à 4 5 6—>第二行

a[2]à 7 8 9->第三行

步驟二:這樣作題目間很簡單:

*(a[0]+1)我們就知道是第一行的第一個元素往後

面跳一列,那麼這里就是a[0][1]元素,所以是1。

*(a[1]+2)我們就知道是第二行的第一個元素往後面

跳二列。那麼這里就是a[1][2]元素,所以是6。

一定記住:只要是二維數組的題目,一定是寫成如

上的格式,再去做題目,這樣會比較簡單。

數組的初始化,一維和二維的,一維可以不寫,

二維第二個一定要寫

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。

但int a[4][]={2,3,4}非法。

二維數組中的行指針

int a[1][2];

其中a現在就是一個行指針,a+1跳一行數組元素。

搭配(*)p[2]指針

a[0],a[1]現在就是一個列指針。a[0]+1 跳一個數組

元素。搭配*p[2]指針數組使用

還有記住脫衣服法則:

a[2] 變成 *(a+2) a[2][3]變成 *(a+2)[3]再

可以變成 *(*(a+2)+3)

;

② 計算機國二c語言,考試內容是什麼有哪些知識點說詳細點!

您好,SA團隊給出的答案(直接給你試題看看吧,這樣比較詳細)2009年9月全國計算機等級考試筆試試卷
二級公共基礎知識和C語言程序設計
(考試時間90分鍾,滿分100分)
一、選擇題((1)~(10)、(21)~(40)每題2分,(11)~(20)每題1分,70分)
(1)下列數據結構中,屬於非線性結構的是( )。
A)循環隊列 B)帶鏈隊列
C)二叉樹 D)帶鏈棧
(2)下列數據結構中,能夠按照「先進後出」原則存取數據的是( )。
A)循環隊列 B)棧
C)隊列 D)二叉樹
(3)對於循環隊列,下列敘述中正確的是( )。
A)隊頭指針是固定不變的
B)隊頭指針一定大於隊尾指針
C)隊頭指針一定小於隊尾指針
D)隊頭指針可以大於隊尾指針,也可以小於隊尾指針
(4)演算法的空間復雜度是指( )。
A)演算法在執行過程中所需要的計算機存儲空間
B)演算法所處理的數據量
C)演算法程序中的語句或指令條數
D)演算法在執行過程中所需要的臨時工作單元數
(5)軟體設計中劃分模塊的一個准則是( )。
A)低內聚低耦合B)高內聚低耦合
C)低內聚高耦合D)高內聚高耦合
(6)下列選項中不屬於結構化程序設計原則的是( )。
A)可封裝 B)自頂向下 C)模塊化 D)逐步求精
(7)軟體詳細設計產生的圖如下:
begin
1
該圖是( )。
A)N-S圖 B)PAD圖
C)程序流程圖D)E-R圖
(8)資料庫管理系統是( )。
A)操作系統的一部分B)在操作系統支持下的系統軟體
C)一種編譯系統D)一種操作系統
(9)在E-R圖中,用來表示實體聯系的圖形是( )。
A)橢圓形 B)矩形 C)菱形 D)三角形
(10)有三個關系R,S和T如下:
2
R S T
A
B
C
A
B
C
A
B
C
a
1
2
d
3
2
a
1
2
b
2
1
b
2
1
c
3
1
c
3
1
d
3
2
其中關系T由關系R和S通過某種操作得到,該操作為( )。
A)選擇 B)投影 C)交 D)並
(11)以下敘述中正確的是( )。
A)程序設計的任務就是編寫程序代碼並上機調試
B)程序設計的任務就是確定所用數據結構
C)程序設計的任務就是確定所用演算法
D)以上三種說法都不完整
(12)以下選項中,能用作用戶標識符的是( )。
A)void B)8_8 C)_0_ D)unsigned
(13)閱讀以下程序
# include <stdio.h>
main()
{ int case; float printF;
printf ("請輸入2個數:");
scanf ("%d %f", &case, &printF);
printf ("%d %f\n", case, printF);
}
該程序在編譯時產生錯誤,其出錯原因是( )。
A)定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
B)定義語句出錯,printF不能用作用戶自定義標識符
C)定義語句無錯,scanf不能作為輸入函數使用
D)定義語句無錯,printf不能輸出case的值
(14)表達式:(int)((double)9/2)-(9)%2的值是( )。
A)0 B)3 C)4 D)5
(15)若有定義語句:int x=10;,則表達式x-=x+x的值為( )。
A)-20 B)-10 C)0 D)10
(16)有以下程序
# include <stdio.h>
main()
{ int a=l, b=0;
printf ("%d,", b=a+b);
printf ("%d\n", a=2*b);
}
程序運行後的輸出結果是( )。
A)0,0 B)1,0 C)3,2 D)1,2
(17)設有定義:int a=l, b=2, c=3;,以下語句中執行效果與其它三個不同的是( )。
A)if(a>b)c=a,a=b,b=c; B)if(a>b){c=a,a=b,b=c;}
C)if(a>b)c=a;a-b;b=c; D)if(a>b){c=a;a-b;b=c;}
(18)有以下程序
# include <stdio.h>
3
main()
{ int c=0, k,
for(k=1; k<3; k++)
switch (k)
{ default: c+=k;
case 2: c++; break;
case 4: c+=2; break;
}
printf("%d\n", c);
}
程序運行後的輸出結果是( )。
A)3 B)5 C)7 D)9
(19)以下程序段中,與語句:k=a>b?(b>c ? 1 : 0) : 0;功能相同的是( )。
A)if((a>b) && (b>c)) k=l; B)if((a>b)||(b>c))k=l;
else k=0; else k=0;
C)if(a<=b)k=0; D)if(a>b) k=l;
else if(b<=c)k=1; else if(b>c)k=1;
else k=0;
(20)有以下程序
# include <stdio.h>
main()
{ char s[]={"012xy"}; int i, n=0;
for (i=0; s[i]!=0; i++)
if(S[i]>='a' &&s[i]<='z') n++;
printf("%d\n",n);
}
程序運行後的輸出結果是( )。
A)0 B)2 C)3 D)5
(21)有以下程序
# include <stdio.h>
main()
{ int n=2,k=0;
while (k++ &&n++>2);
printf("%d %d\n",k,n);
}
程序運行後的輸出結果是( )。
A)0 2 B)1 3 C)5 7 D)l 2
(22)有以下定義語句,編譯時會出現編譯錯誤的是( )。
A)char a='a'; B)char a='\n'; C)char a='aa'; D)char a='\x2d';
(23)有以下程序
# include <stdio.h>
main()
{ char c1,c2;
c1='A'+'8'-'4';
c2='A'+'8'-'5';
printf("%c,%d\n",c1,c2);
4
}
已知字母A的ASCII碼為65,程序運行後的輸出結果是( )。
A)E,68 B)D,69 C)E,D D)輸出無定值
(24)有以下程序
# include <stdio.h>
void fun (int p)
{ int d=2;
p=d++; printf("%d",p);}
main()
{ int a=1;
fun(a); printf("%d\n",a);}
程序運行後的輸出結果是( )。
A)32 B)12 C)21 D)22
(25)以下函數findmax擬實現在數組中查找最大值並作為函數值返回,但程序中有錯導致不能實現預定功能。
# define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i<n;i++)
{ max=MIN;
if(max<x[i]) max=x[i];}
return max;
}
造成錯誤的原因是( )。
A)定義語句int i,max;中max未賦初值
B)賦值語句max=MIN;中,不應給max賦MIN值
C)語句if(max<X[i])max=X[i];中判斷條件設置錯誤
D)賦值語句max=MIN;放錯了位置
(26)有以下程序
# include <stdio.h>
main()
{ int m=1, n=2, *p=&m, *q=&n, *r;
r=p; p=q; q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
}
程序運行後的輸出結果是( )。
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
(27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是( )。
A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
(28)有以下程序
# include <stdio.h>
# include <string.h>
main()
{ char str[][20]={"One*World","One*Dream!"},*p=str[1];
printf("%d,",strlen(p));printf("%s\n",p);
}
5
程序運行後的輸出結果是( )。
A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World
(29)有以下程序
# include <stdio.h>
main()
{ int a[]={2, 3, 5, 4}, i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0 : switch(a[i]%2)
{case 0 : a[i]++;break;<br>case 1 : a[i]--;<br>}break;
case 1 : a[i]=0;
}
for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");
}
程序運行後的輸出結果是( )。
A)3 3 4 4 B)2 0 5 0 C)3 0 4 0 D)0 3 0 4
(30)有以下程序
# include <stdio.h>
# include <string.h>
main()
{ char a[10]="abcd";
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序運行後的輸出結果是( )。
A)7,4 B)4,10 C)8,8 D)10,10
(31)下面是有關C語言字元數組的描述,其中錯誤的是( )。
A)不可以用賦值語句給字元數組名賦字元串
B)可以用輸入語句把字元串整體輸入給字元數組
C)字元數組中的內容不一定是字元串
D)字元數組只能存放字元串
(32)下列函數的功能是( )。
fun(char *a,char *b)
{ while((*b=*a)!='\0') {a++; b++;} }
A)將a所指字元串賦給b所指空間
B)使指針b指向a所指字元串
C)將a所指字元串和b所指字元串進行比較
D)檢查a和b所指字元串中是否有'\0'
(33)設有以下函數:
void fun(int n,char *s) {……}
則下面對函數指針的定義和賦值均正確的是( )。
A)void (*pf)(); pf=fun; B)void *pf(); pf=fun;
C)void *pr(); *pf=fun; D)void(*pf)(int,char);pf=&fun;
(34)有以下程序
# include <stdio.h>
6
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序運行後的輸出結果是( )。
A)7 B)8 C)9 D)10
(35)有以下程序
# include <stdio.h>
# define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",s,t);
}
程序運行後的輸出結果是( )。
A)10,64 B)10,10 C)64,10 D)64,64
(36)下面結構體的定義語句中,錯誤的是( )。
A)struct ord {int x; int y; int z;}; struct ord a;
B)struct ord {int x; int y; int z;} struct ord a;
C)struct ord {int x; int y; int z;}a;
D)struct {int x; int y; int z;} a;
(37)設有定義:char *c;,以下選項中能夠使字元型指針c正確指向一個字元串的是( )。
A)char str[]="string";c=str; B)scanf("%s",c);
C)c=getchar(); D)*c=*string";
(38)有以下程序
# include <stdio.h>
# include <string.h>
Struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0};
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(Struct A t)
{ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;return t;}
程序運行後的輸出結果是( )。
A)1001,ZhangDa,1098.0 B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0
(39)若有以下程序段
7
int r=8;
printf("%d\n",r>>1);
輸出結果是( )。
A)16 B)8 C)4 D)2
(40)下列關於C語言文件的敘述中正確的是( )。
A)文件由一系列數據依次排列組成,只能構成二進制文件
B)文件由結構序列組成,可以構成二進制文件或文本文件
C)文件由數據序列組成,可以構成二進制文件或文本文件
D)文件由字元序列組成,其類型只能是文本文件
二、填空題(每空2分,共30分)
(1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有【1】個結點。
(2)程序流程圖中的菱形框表示的是【2】。
(3)軟體開發過程主要分為需求分析、設計、編碼與測試四個階段,其中【3】階段產生「軟體需求規格說明書」。
(4)在資料庫技術中,實體集之間的聯系可以是一對一或一對多或多對多的,那麼「學生」和「可選課程」的聯系為【4】。
(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是【5】。
(6)若有定義語句:int a=5;,則表達式:a++的值是【6】。
(7)若有語句double x=17; int y;,當執行y=(int)(x/5)%2;之後y的值為【7】。
(8)以下程序運行後的輸出結果是【8】。
# include <stdio.h>
main()
{ int x=20;
printf("%d",0<x<20);
printf("%d\n",0<x && x<20); }
(9)以下程序運行後的輸出結果是【9】。
# include <stdio.h>
main()
{ int a=1,b=7;
do {
b=b/2; a+=b;
} while (b>1);
printf ("%d\n",a); }
(10)有以下程序
# include <stdio.h>
main()
{ int f,fl,f2,i;
f1=0; f2=1;
printf("%d %d",fl,f2);
for(i=3;i<=5;i++)
{ f=fl+f2; printf("%d",f);
f1=f2; f2=f;
}
printf("\n");
}
程序運行後的輸出結果是【10】。
8
(11)有以下程序
# include <stdio.h>
int a=5;
void fun(int b)
{ int a=10;
a+=b; printf("%d",a);
}
main()
{ int c=20;
fun(c); a+=c; printf("%d\n",a);
}
程序運行後的輸出結果是【11】。
(12)設有定義:
struct person
{ int ID; char name[12];}p;
請將scanf("%d", 【12】); 語句補充完整,使其能夠為結構體變數p的成員ID正確讀入數據。
(13)有以下程序
# include <stdio.h>
main()
{ char a[20]="How are you?",b[20];
scanf("%s",b); printf("%s %s\n",a,b);
}
程序運行時從鍵盤輸入:How are you?<回車>
則輸出結果為【13】。
(14)有以下程序
# include <stdio.h>
typedef struct
{ int num; double s; } REC;
void funl(REC x) {x.num=23; x.s=88.5;}
main()
{ REC a={16,90.0};
funl (a);
printf("%d\n",a.num);
}
程序運行後的輸出結果是【14】。
(15)有以下程序
# include <stdio.h>
fun(int x)
{ if(x/2>0) fun(x/2);
printf("%d", x);
}
main()
{ fun(6); printf("\n"); }
程序運行後的輸出結果是【15】。

③ 計算機二級考試《C語言》知識點歸納(3)

第六章

指針變數的本質是用來放地址,而一般的變數是放數值的。

int *p 中 *p和p的差別:

*p可以當做變數來用;*的作用是取後面地址p裡面的數值

p是當作地址來使用。

*p++ 和 (*p)++的之間的差別:改錯題目中很重要

*p++是 地址會變化。

(*p)++ 是數值會要變化。

三名主義:(考試的重點)

數組名:表示第一個元素的地址。數組名不可以自加,

他是地址常量名。(考了很多次)

函數名:表示該函數的入口地址。

字元串常量名:表示第一個字元的地址。

第七章

1一維數組的重要概念:

對a[10]這個數組的討論。

1、a表示數組名,是第一個元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出現a++,或者

是a=a+2賦值的都是錯誤的。

3、a是一維數組名,所以它是列指針,也就是

說a+1是跳一列。

對a[3][3]的討論。

1、a表示數組名,是第一個元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出現a++,或者

是a=a+2賦值的都是錯誤的。

3、a是二維數組名,所以它是行指針,也就

是說a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以對

它進行賦值操作,同時它們都是列指針,a[0]+1,

a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0] 、a[1]、a[2]是不同的,它們的

基類型是不同的。前者是一行元素,後三者是一列元素。

二維數組做題目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。

步驟一:把他們寫成:

第一列第二列第三列

a[0]à 1 2 3 ->第一行

a[1]à 4 5 6—>第二行

a[2]à 7 8 9->第三行

步驟二:這樣作題目間很簡單:

*(a[0]+1)我們就知道是第一行的第一個元素往後

面跳一列,那麼這里就是a[0][1]元素,所以是1。

*(a[1]+2)我們就知道是第二行的第一個元素往後面

跳二列。那麼這里就是a[1][2]元素,所以是6。

一定記住:只要是二維數組的題目,一定是寫成如

上的格式,再去做題目,這樣會比較簡單。

數組的初始化,一維和二維的,一維可以不寫,

二維第二個一定要寫

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。

但int a[4][]={2,3,4}非法。

二維數組中的行指針

int a[1][2];

其中a現在就是一個行指針,a+1跳一行數組元素。

搭配(*)p[2]指針

a[0],a[1]現在就是一個列指針。a[0]+1 跳一個數組

元素。搭配*p[2]指針數組使用

還有記住脫衣服法則:

a[2] 變成 *(a+2) a[2][3]變成 *(a+2)[3]再

可以變成 *(*(a+2)+3)

④ 求C語言二級選擇題前十題知識點

選擇共計35道 其中前10道是公共基礎知識,後15道是c語言知識
填空共計15個空 其中前5個是公共基礎知識,後10個是c語言知識
總計50題,每題2分,公共基礎30分,c語言70分
(1)前面的選擇題是基礎知識 ,二級C語言知識點分布包括:數據結構與演算法 、程序設計基礎1,軟體工程基礎,資料庫設計基礎,C程序設計的初步知識,順序結構設計,選擇結構程序設計。循環結構程序設計,函數,指針與數組,編譯與處理與動態存儲分配,結構體與共用體),位運算,文件操作,考查的知識點比較細致,例如PAD圖,線性結構與非線性結構、程序的編譯與解釋、if語句的邏輯判斷、C程序的執行過程、格式控制、循環執行次數,指針與數組的應用,if語句的嵌套,數組的應用,靜態局部變數,預處理,結構體指針變數,位運算等等。
(2)考試的常見知識點:例如基本的數據結構,資料庫的基本概念,軟體生命周期概念,查找和排序演算法。程序設計的方法與風格,結構化的分析方法,數據流圖,數據字典和軟體需求規格說明書,結構化分析方法,總體設計和詳細設計,軟體測試,關系運算,C程序的構成與格式,常用數據類型,運算符和表達式,輸入輸出函數,if語句和switch語句,while,for語句的使用,函數的基本概念,函數的返回值,參數傳遞中的傳值方法與傳地址方法,靜態存儲變數,指針與數組的基礎知識,字元串的應用,指針與數組的關系,預處理與動態存儲分配,結構體的定義和變數的引用,文件操作。
需要注意的是不要以為C語言就是單純的考C語言程序,也要注意關於編程的一些基礎知識和計算機的知識,對裡面的程序題要特別的小心才是,做題的時候要用筆畫出來具體的步驟,這樣避免出錯,反正小心應對便是

⑤ C語言二級考試前面幾道題的知識點總結

1. 數據結構中最基本的,棧(先進後出),隊列(先進先出),二叉樹,要知道二叉樹的遍歷,這個每年都考。
2.資料庫中的基礎知識,考一兩道,主要是關系資料庫的概念,什麼m對n,DBMS之類的。
3.軟體設計里的基礎知識,什麼高耦合什麼的,具體什麼忘了,你查查。
4.記得還考那些http,ftp,郵件協議SMTP、POP3這些,好像每年都有著一道,你看看,很簡單,幾下就好了。

目前能想到的就這些了,希望對你有幫助。
哦,填空題前5到跟選擇題的前10道考的是一樣的知識點,所以上面的這些知識點對前5到填空題同樣有用~~~~~~~~~~~~~

熱點內容
linux是實時系統嗎 發布:2024-11-24 07:23:17 瀏覽:142
java數據挖掘演算法 發布:2024-11-24 07:18:59 瀏覽:853
我的世界伺服器怎麼重開指令 發布:2024-11-24 07:14:13 瀏覽:155
python刪除dataframe 發布:2024-11-24 07:05:38 瀏覽:734
安卓機藍牙怎麼傳東西 發布:2024-11-24 06:58:34 瀏覽:108
android疊效果 發布:2024-11-24 06:58:33 瀏覽:991
富士通電腦伺服器設置u盤啟動 發布:2024-11-24 06:56:21 瀏覽:716
delphipython 發布:2024-11-24 06:51:24 瀏覽:866
安卓手機如何添加文字 發布:2024-11-24 06:50:54 瀏覽:567
小米存儲位置設置 發布:2024-11-24 06:45:10 瀏覽:207