第一篇:計算機二級c語言試題及答案
計算機二級考試是全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)四個等級中的一個等級,考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能。計算機二級考試采用全國統一命題、統一考試的形式。那么計算機二級c語言會怎么考?以下僅供參考!
1.(A)是構成C語言程序的基本單位。
A、函數
B、過程
C、子程序
D、子例程
2.C語言程序從 C 開始執行。
A、程序中第一條可執行語句
B、程序中第一個函數
C、程序中的main函數
D、包含文件中的第一個函數
3、以下說法中正確的是(C)。
A、C語言程序總是從第一個定義的函數開始執行
B、在C語言程序中,要調用的函數必須在main()函數中定義
C、C語言程序總是從main()函數開始執行
D、C語言程序中的main()函數必須放在程序的開始部分
4.下列關于C語言的說法錯誤的是(B)。
A、C程序的工作過程是編輯、編譯、連接、運行
B、C語言不區分大小寫。
C、C程序的三種基本結構是順序、選擇、循環
D、C程序從main函數開始執行
5.下列正確的標識符是(C)。
A、-a
1B、a[i]
C、a2_i
D、int t
5~8題為相同類型題
考點:標識符的命名規則
只能由字母、數字、下劃線構成數字不能作為標識符的開頭
關鍵字不能作為標識符
選項A中的“-”,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)
6.下列C語言用戶標識符中合法的是(B)。
A、3ax
B、x
C、case
D、-e2 E)union
選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);
7.下列四組選項中,正確的C語言標識符是(C)。
A、%x
B、a+b
C、a12
3D、12
3選項A中的“%”,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)
8、下列四組字符串中都可以用作C語言程序中的標識符的是(A)。
A、print _3d db8 aBc
B、Iam one_half start$it 3pai
C、str_1 Cpp pow while
D、Pxq My->book line# His.age
選項B中的“”,”$”,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)
9.C語言中的簡單數據類型包括(D)。
A、整型、實型、邏輯型
B、整型、實型、邏輯型、字符型
C、整型、字符型、邏輯型
D、整型、實型、字符型
10.在C語言程序中,表達式5%2的結果是 C。
A、2.5B、2C、1D、3%為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;
/為求商運算符,該運算符能夠對整型、字符、浮點等類型的數據進行運算,5/2=
211.如果int a=3,b=4;則條件表達式"aA、3B、4C、0
D、1詳見教材P97.表達式1?表達式2:表達式
3先計算表達式1,若表達式1成立,則選擇計算表達式2,并表達式2的值作為整個大表達式的值;
若表達式1不成立,則選擇計算表達式3,并將表達式3的值作為整個大表達式的值
此題中的aa為3,b為4。a12.若int x=2,y=3,z=4 則表達式x
A、4B、3C、2D、0
E)
113.C語言中,關系表達式和邏輯表達式的值是(B)。
A、0
B、0或
1C、1D、‘T’或’F’
14.下面(D)表達式的值為4.A、11/
3B、11.0/
3C、(float)11/
3D、(int)(11.0/3+0.5)
14~16題為同一類型
詳見教材P54~56.(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。
(2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。
選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換后數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666
選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其后計算過程、結果與選項B同
選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最后將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為
415.設整型變量 a=2,則執行下列語句后,浮點型變量b的值不為0.5的是(B)
A、b=1.0/a
B、b=(float)(1/A、C、b=1/(float)a
D、b=1/(a*1.0)
16.若“int n;float f=13.8;”,則執行“n=(int)f%3”后,n的值是(A)
A、1B、4C、4.33333
3D、4.6
“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然后計算13%3,結果為1,再將結果賦給變量n,因此n的值為
117.以下對一維數組a的正確說明是: D
A、char a(10);
B、int a[];
C、int k=5,a[k];
D、char a[3]={‘a’,’b’,’c’};
詳見教材P143~144,一維數組的定義、初始化
類型符 數組名 [常量表達式]
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變量,而且從1開始計數。
選項A,常量表達式只能放在中括號 [ ]中
選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中并未對a進行初始化。
選項C,常量表達式不能為變量。
18.以下能對一維數組a進行初始化的語句是:(C)
A、int a[5]=(0,1,2,3,4,)
B、inta(5)={}
C、int a[3]={0,1,2}
D、int a{5}={10*1}
詳見教材P145,一維數組的定義、初始化
選項B,D,常量表達式只能放在中括號 [ ]中
選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了().19.在C語言中對一維整型數組的正確定義為 D。
A、int a(10);
B、int n=10,a[n];
C、int n;a[n];
D、#define N 10
int a[N];
20、已知:int a[10];則對a數組元素的正確引用是(D)。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
詳見教材P144,數組元素的引用
數組名[下標]
引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數
int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素;a[1] 表示組中第2個元素;a[2] 表示組中第3個元素;......;a[9] 表示組中第10個元素.選項A,超過了數組a的邏輯地址下標范圍;
選項B,邏輯地址下標只能為整數
選項C,邏輯地址下標只能放在[ ]中
21.若有以下數組說明,則i=10;a[a[i]]元素數值是(C)。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].a[10]對應下面數組中的元素為9.因此a[a[i]]即為a[9]
a[9]對應下面數組中的元素為6.因此a[9]即為6
22.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}};則數組a的第一維的大小為:(B)
A、2B、3C、4D、無確定值7
D、3 6 9
二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行
23.對二維數組的正確定義是(C)
詳見教材P149~152,二維數組的定義、初始化
類型符 數組名 [常量表達式][常量表達式]
二維數組可以看做是矩陣
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。
一維數組初始化時可以省略數組長度
二維數組初始化時可以省略行數,但不能省略列數
選項A,B,都省略了列數
選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中
A、int a[ ][ ]={1,2,3,4,5,6};
B、int a[2] []={1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
24.已知int a[3][4];則對數組元素引用正確的是__C___
A、a[2][4]
B、a[1,3]
C、a[2][0]
D、a(2)(1)
詳見教材P150,數組元素的引用
數組名[下標] [下標]
引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數
第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。
本題圖示詳見P149圖6.7
因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3;
選項A,列邏輯地址下標超過范圍
選項B,D,的引用形式不正確。
25.C語言中函數返回值的類型是由 A 決定的.A、函數定義時指定的類型
B、return語句中的表達式類型
C、調用該函數時的實參的數據類型
D、形參的數據類型
26.在C語言中,函數的數據類型是指(A)
A、函數返回值的數據類型
B、函數形參的數據類型
C、調用該函數時的實參的數據類型
D、任意指定的數據類型
27.在函數調用時,以下說法正確的是(B)
A、函數調用后必須帶回返回值
B、實際參數和形式參數可以同名
C、函數間的數據傳遞不可以使用全局變量
D、主調函數和被調函數總是在同一個文件里
28.在C語言中,表示靜態存儲類別的關鍵字是:(C)
A、auto
B、register
C、static
D、extern
29.未指定存儲類別的變量,其隱含的存儲類別為(A)。
A、auto
B、static
C、extern
D、register
30.若有以下說明語句:
struct student
{ int num;
char name[ ];
float score;
}stu;
則下面的敘述不正確的是:(D)
A、struct是結構體類型的關鍵字
B、struct student 是用戶定義的結構體類型
C、num, score都是結構體成員名
D、stu是用戶定義的結構體類型名
31.若有以下說明語句:
struct date
{ int year;
int month;
int day;
}brithday;
則下面的敘述不正確的是__C___.A、struct是聲明結構體類型時用的關鍵字
B、struct date 是用戶定義的結構體類型名
C、brithday是用戶定義的結構體類型名
D、year,day 都是結構體成員名
32.以下對結構變量stul中成員age的非法引用是 B
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A、stu1.age
B、student.age
C、p->age
D、(*p).age
33.設有如下定義:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正確的賦值語句是 C
A、p=&a;
B、p=datA、a;
C、p=&datA、a;
D、*p=datA、a;
34.設有以下說明語句:
typedef struct stu
{ int a;
float b;
} stutype;
則下面敘述中錯誤的是(D)。
A、struct是結構類型的關鍵字
B、struct stu是用戶定義的結構類型
C、a和b都是結構成員名
D、stutype是用戶定義的結構體變量名
35.語句int *p;說明了 C。
A、p是指向一維數組的指針
B、p是指向函數的指針,該函數返回一int型數據
C、p是指向int型數據的指針 // 指針的定義教材P22
3D、p是函數名,該函數返回一指向int型數據的指針
36.下列不正確的定義是(A)。
A、int *p=&i,i;
B、int *p,i;
C.int i,*p=&i;
D、int i,*p;
選項A先定義一個整型指針變量p,然后將變量i的地址賦給p。然而此時還未定義變量i因此編譯器無法獲得變量i的地址。(A與C對比,選項C先定義變量i,則在內存中為i分配空間,因此i在內存空間的地址就可以確定了;然后再定義p,此時可以為p賦i的地址,C正確)
37.若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是:(D)
A、p=q
B、*p=*q
C、n=*q
D、p=n
p,q同為整型指針變量,二者里面僅能存放整型變量的地址。
選項A,q中為地址,因此可將此地址賦給p
選項B,*p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由于在定義q時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因此*p=*q 相當于 n=n;
選項C,n=*q 等價于n=n;
選項D,p中只能存放地址,不能將n中的整數值賦給p
38.有語句:int a[10],;則 B 是對指針變量p的正確定義和初始化。
A、int p=*a;
B、int *p=a;
C、int p=&a;
D、int *p=&a;
選項A,a是數組名,不是指針變量名,因此不可用*標注數組名a
選項C,a是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變量p時,應在變量名前加*,標明p是指針變量
選項D,a是數組名,數組名就是地址,無需再用地址符號。
39.若有說明語句“int a[5],*p=a;”,則對數組元素的正確引用是(C)。
A、a[p]
B、p[a]
C、*(p+2)
D、p+
2首先定義一個整型數組a,a的長度為5,然后定義一個指針變量p,并同時對p進行初始化,將數組a的地址賦給p。因此此時p中存放的數組a的首地址,即數組中第一個元素a[0]的地址。
對于數組元素下標的引用(詳見p144), 一般形式 數組名[下標] 其中下標為邏輯地址下標,從0開始計數,方括號中的下標可以是變量,可以是表達式,但結果一定要是整數。
選項A,p中存放的是地址,不是整數,不能做數組元素的下標
選項B,a是數組名,數組名就是地址,不是整數,不能做數組元素的下標
選項C,(重點!!詳見p231~234)p+2表示指向同一數組中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容
40.有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
則數值為9的表達式是 B
A、*P+9
B、*(P+8)
C、*P+=9
D、P+8
(重點!!詳見p231~234)
首先定義一個整型數組a,a的長度為5,然后定義一個指針變量P,并同時對P進行初始化,將數組a的地址賦給P。因此此時P中存放的數組a的首地址,即數組中第一個元素a[0]的地址。
數組中9對應的是a[8], 選項B,P+8表示數組中后8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。
選項A,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值1.*P+9=1+9=10
選項C,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價于a[0]=a[0]+9.選項D,P+8表示數組中后8個元素的地址,即a[8]的地址,而非a[8]中的值。
第二篇:計算機二級C語言考試試題及答案
C語言是一門通用計算機編程語言,應用廣泛。下面小編整理了計算機二級C語言考試試題及答案,希望對大家有幫助!
1.(A)是構成C語言程序的基本單位。
A、函數
B、過程
C、子程序
D、子例程
2.C語言程序從(C)開始執行。
A、程序中第一條可執行語句
B、程序中第一個函數
C、程序中的main函數
D、包含文件中的第一個函數
3、以下說法中正確的是(C)。
A、C語言程序總是從第一個定義的函數開始執行
B、在C語言程序中,要調用的函數必須在main()函數中定義
C、C語言程序總是從main()函數開始執行
D、C語言程序中的main()函數必須放在程序的開始部分
4.下列關于C語言的說法錯誤的是(B)。
A、C程序的工作過程是編輯、編譯、連接、運行
B、C語言不區分大小寫。
C、C程序的三種基本結構是順序、選擇、循環
D、C程序從main函數開始執行
5.下列正確的標識符是(C)。
A、-a
1B、a[i]
C、a2_i
D、int t
5-8題為相同類型題
考點:標識符的命名規則
只能由字母、數字、下劃線構成數字不能作為標識符的開頭
關鍵字不能作為標識符
選項A中的“-”,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)
6.下列C語言用戶標識符中合法的是(B)。
A、3ax
B、x
C、case
D、-e2 E)union
選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);
7.下列四組選項中,正確的C語言標識符是(C)。
A、%x
B、a+b
C、a12
3D、12
3選項A中的“%”,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)
8、下列四組字符串中都可以用作C語言程序中的標識符的是(A)。
A、print _3d db8 aBc
B、Iam one_half start$it 3pai
C、str_1 Cpp pow while
D、Pxq My->book line# His.age
選項B中的“”,”$”,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)
9.C語言中的簡單數據類型包括(D)。
A、整型、實型、邏輯型
B、整型、實型、邏輯型、字符型
C、整型、字符型、邏輯型
D、整型、實型、字符型
10.在C語言程序中,表達式5%2的結果是 C。
A、2.5B、2C、1D、3%為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;
/為求商運算符,該運算符能夠對整型、字符、浮點等類型的數據進行運算,5/2=2
第三篇:c語言試題及答案
一、單選題
1.在C語言中,下列類型屬于構造類型的是(D)A.整型 B.字符型 C.實型 D.數組類型 2.下列字符串不是標識符的是(D)A.sum B.Average C.Day_night D.M.D.JOHN 3.在C語言中,回車換行符是(A)A.n B.t C.v D.b 4.在C語言中,語句和數據定義是用(C)作為結束標記的 A.句號 B.逗號 C.分號 D.括號 5.設有如下定義: int x=10,y=5,z;則語句printf(“%dn”,z=(x+=y,x/y));的輸出結果是(C)A.0 B.1 C.3 D.4 6.10.以下程序的輸出結果是(B)main(){char c1=’8’,c2=’2’;
printf(“%c,%c,%d,%dn”,c1,c2,c1-c2,c1+c2);} A.因輸出格式不合法,輸出出錯信息 B.8,2,6,106 C.8,2,6,10 D.8,2,5,9 7.兩次運行下面的程序,如果從鍵盤上分別輸入6和4,則輸出結果是(A)main(){int x;scanf(“%d”,&x);
if(x++>5)printf(“%dn”,x);else printf(“%dn”,x--);} A.7和5 B.7和4 C.6和4 8.表達式(int)2.1416的值時(A)A.2 B.2.1 C.0 D.3 9.下列運算符優先級最高的是(B)A.> B.+ C.&& D.!= 10.C語言容許函數值類型缺省定義,此時該函數值隱含的類型時(B)A.float型 B.Int型 C.Long 型 D.Double型
11、C程序的基本構成單位是(C)A、子程序 B、過程 C、函數 D、文件
12、C語言中要求操作數都為整型數據的算術符是(C)A、/ B、!C、% D、= =
13、若int x=1,y=1;則表達式(!x||y--)的值是(B)。A、0 B、1 C、2 D、-1
14、能正確表示邏輯關系:a≥10或a≤0的C語言表達式(D)A、a>=10 or a<=0 B、a>=0|a<=10 C、a>=10 && a<=0 D、a>=10||a<=0
15、double x,y;表達式x=1,y=x+3/2的值是(C)。A、1 B、2 C、2.0 D、2.5
16、運行C源程序的命令是(D)A、ALT+F5 B、ALT+F9 C、CTRL+F5 D、CTRL+F9
17、運行完C程序后,查看C程序運行結果的命令是(A)A、ALT+F5 B、ALT+F9 C、CTRL+F5 D、CTRL+F9 18.若有程序段:int i=2,j;j=i++;printf(“%d,%d”,++i,j);該程序段的輸出結果是:(D)A、3,2 B、4,3 C、3,3 D、4,2 19設 int a=12;表達式a+=a-=a*=a的值是(C)。A 12 B 144 C 0 D 132 20、若給定條件表達式(M)?(a++):(a--),則其中表達式M和(D)等價。A M==0 B M=1 C M!=1 D M!=0
21、在C語言中,if語句后的一對圓括號中,用以決定分支流程的表達式為(D)。A 只能是邏輯表達式 B只能是關系表達式
C 只能是邏輯表達式或關系表達式 D可以是任意表達式
22、下列選項中,(A)給變量賦初值是錯誤的。
A int a=b=3;B int a,b,c=5;C int a=3,b,c=a;D float f=3.56;
23、在C語言中,一個字符變量在內存中占用(A)個字節。A 1 B 2 C 3 D 4
24、int a=12,b=13,c;c=(a
25、設有int i;則表達式i=1,++i,++i||++i,i的值為(C)A.1 B.2 C.3 D.4 30以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是(A)A)if((a>b)&&(b>c))k=1;B)if((a>b)||(b>c))k=1 else k=0;C)if(a<=b)k=0;D)if(a>b)k=1;else if(b<=c)k=1;else if(b>c)k=1;else k=0;
31、算法具有五個特性,以下選項中不屬于算法特性的是(A)有窮性(B)簡潔性(C)可行性(D)確定性 32以下選項中可作為C語言合法常量的是(A)(A)-80.(B)-080(C)-8e1.0(D)-80.0e
33、以下敘述中正確的是(C)
(A)用C語言實現的算法必須要有輸入和輸出操作(B)用C語言實現的算法可以沒有輸出但必須要有輸入(C)用C程序實現的算法可以沒有輸入但必須要有輸出(D)用C程序實現的算法可以既沒有輸入也沒有輸出
33、以下選項中,不能作為合法常量的是(B)(A)1.234e04(B)1.234e0.4(C)1.234e+4(D)1.234e0
34、有以下程序
B)(main(){ int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(“%d %d %dn”,i,j,k);} 程序運行后的輸出結果是(D)(A)1 2 3(B)2 3 4(C)2 2 3(D)2 3 3
35、判斷變量ch中的字符是否為數字字符,正確表達式是____D___。
A)ch>=0&&ch<=9 B)’0’<=ch<=’9’ C)ch>=’0’||ch<=’9’ D)ch>=’0’&&ch<=’9’
36、若執行以下程序時從鍵盤上輸入9,則輸出結果是__B_____ A)11 B)10 C)9 D)8 main()
{ int n; scanf(“%d”,&n); if(n++<10)printf(“%dn”,n); else printf(“%dn”,n--); }
37、若w=1,x=2,y=3,z=4;則條件表達式w>x?w:y 38、以下非法的賦值語句是(C)A)n=(i=2,++i);B)j++;C)++(i+1);D)x=j>0; 39、設a和b均為double型變量,且a=5.5、b=2.5,則表達式(int)a+b/b的值是(D)A)6.500000 B)6 C)5.500000 D)6.000000 40、已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為 1、j的值為 2、k的值為3,以下選項中正確的輸入語句是(C)A)scanf(“---”,&i,&j,&k);B)scanf(“%d %d %d”,&i,&j,&k);C)scanf(“%d,%d,%d”,&i,&j,&k);D)scanf(“i=%d,j=%d,k=%d”,&i,&j,&k); 41、若有以下程序: main(){ int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%dn”,m,i);} 執行后的輸出結果是(C)A)8,6 B)8,3 C)6,4 D)7,4 42、已有定義:int x=3,y=4,z=5;,則表達式!(x+y)+z-1 && y+z/2的值是(D)A)6 B)0 C)2 D)1 43 以下選項中,與k=n++完全等價的表達式是(A)A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1 39、若有說明:int i,j=7, *p=&i;,則與i=j;等價的語句是B A)i= *P;B)*P=*&J;C)i=&j;D)i=* *p;40、若有以下說明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數值為6的表達式是C A)*p+6 B)*(p+6)C)*p+=5 D)p+5 二、填空題 1.C語言是通過 庫函數 來進行輸入和輸出的。 2.C語言的數據類型有四大類,他們是 基本類型、構造類型、指針類型和 空類型。 4.下面程序的運行結果是 3.600000,3 main(){float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);} 5.數組名定義規則和變量名相同,遵守 標識符 命名規則。 6、main(){char c1,c2,c3;c2=’c’;c1=c2-1;c3=c2+1;printf(“%c,%d,%cn”,c1,c2,c3);} 程序的運行結果是: b,99,d 7、main(){int a=5,b=6,c;c=a;if(a>b)c=1;else if(a= =b)c=0;else c=-1;printf(“c=%dn”,c);} 程序的運行結果是:-1 11.設x的值為15,n的值為2,則表達式x%=(n+=3)運算后,x的值為 0。12.設 int a=7,b=9,t;執行完表達式t=(a>b)?a:b后,t的值是 9。14.求100~200間的全部素數。# include 15、main(){ int x,y=1,z=10;if(y!=0)x=5; printf(“x=%dt”,x);x=1;if(z<0)if(y>0)x=3;else x=5;printf(“x=%dn”,x);if(z=y<0)x=3;else if(y==0)x=5;else x=7;printf(“x=%dt”,x);printf(“z=%dn”,z);} 寫出程序的運行結果:x=5 x=1 x=7 z=0 16、百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹? main(){ int hb,hm,hl,n=0;for(hb=0;hb<=100;hb+= 3)for(hm=0;hm<=100-hb;hm+= 2){ hl=100-hb-hm;if(hb/3+hm/2+2* hl ==100){ n++;printf(“hb=%d,hm=%d,hl=%dn”,hb/3,hm/2,2*hl);} } printf(“n=%dn”,n);} 17、寫出程序運行結果,并簡述功能(運行結果5分,功能描述3分,共8分)#include 將整型數組a以逆序形式顯示出來 18、有以下語句段 int n1=10,n2=20;printf(“ n1=%dnn2=%d ”,n1,n2); 要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請填空。n1=10 n2=20 19、有以下程序 main(){ int n=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%dn”,x);} 執行后輸出結果是-4。 21、.以下程序運行后的輸出結果是____ main(){ int a,b,c;a=10;b=20;c=(a%b<1)||(a/b>1);printf(“%d %d %dn”,a,b,c);} 答案:10 20 0 22、任意輸入三條邊(a,b,c)后,若能構成三角形且為等腰、等邊和直角,則分別輸出DY、DB和ZJ,若不能構成三角形則輸出NO。main(){ float a,b,c,a2,b2,c2 scanf(“%f%f%f%,&a,&b,&c);printf(”%5.1f,%5.1f,%5.1f“,a,b,c);if(a+b>c&&b+c>a&&a+c>b){ if(a==b || b==c || a==c)printf(”DY“);if(a==b && b==c)printf(”DB“);a2=a*a;b2=b*b;c2=c*c;if((a2+b2==c2)||(a2+c2==b2)||(b2+c2==a2))printf(”ZJ“);printf(”n“);} else printf(”NOn“);} 23、當a=1,b=3,c=5,d=4時,執行完下面一段程序后x的值是___x=2______ if(a 24、以下程序運行后的輸出結果是 20,0。 main(){ int x=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf(“%d,%d n”,x,y);} 三、程序題 1、在購買某物品時,若所花的錢x在下述范圍內,所付錢y按對應折扣支付: x x<1000 0.9x 1000≤x<2000 0.8x 2000≤x<3000 0.7x x.≥3000 y= 2、編一程序根據上網時間計算上網費用,計算方法如下: 費用= 30元基數 <10小時 每小時3元 10 ~50 每小時2.5元 ≥50小時 同時為了鼓勵多上網,每月收費最多不超過150元。 3、已知輸入某課程的百分制成績mark,要求顯示對應五級制的評定,評定條件如下: 等級= 優 mark≥90 良 80≤mark<90 中 70≤mark<80 及格 60≤mark<70 不及格 mark<60 第一題答案: #include C語言的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,下面給大家整理了計算機二級C語言測試題及答案,歡迎閱讀! 計算機二級C語言測試題及答案解析 1.(A)是構成C語言程序的基本單位。 A、函數 B、過程 C、子程序 D、子例程 2.C語言程序從 C 開始執行。 A、程序中第一條可執行語句 B、程序中第一個函數 C、程序中的main函數 D、包含文件中的第一個函數 3、以下說法中正確的是(C)。 A、C語言程序總是從第一個定義的函數開始執行 B、在C語言程序中,要調用的函數必須在main()函數中定義 C、C語言程序總是從main()函數開始執行 D、C語言程序中的main()函數必須放在程序的開始部分 4.下列關于C語言的說法錯誤的是(B)。 A、C程序的工作過程是編輯、編譯、連接、運行 B、C語言不區分大小寫。 C、C程序的三種基本結構是順序、選擇、循環 D、C程序從main函數開始執行 5.下列正確的標識符是(C)。 A、-a 1B、a[i] C、a2_i D、int t 5~8題為相同類型題 考點:標識符的命名規則 只能由字母、數字、下劃線構成數字不能作為標識符的開頭 關鍵字不能作為標識符 選項A中的“-”,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3) 6.下列C語言用戶標識符中合法的是(B)。 A、3ax B、x C、case D、-e2 E)union 選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1); 7.下列四組選項中,正確的C語言標識符是(C)。 A、%x B、a+b C、a12 3D、12 3選項A中的“%”,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2) 8、下列四組字符串中都可以用作C語言程序中的標識符的是(A)。 A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 選項B中的“”,”$”,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3) 9.C語言中的簡單數據類型包括(D)。 A、整型、實型、邏輯型 B、整型、實型、邏輯型、字符型 C、整型、字符型、邏輯型 D、整型、實型、字符型 10.在C語言程序中,表達式5%2的結果是 C。 A、2.5B、2C、1D、3%為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1; /為求商運算符,該運算符能夠對整型、字符、浮點等類型的數據進行運算,5/2= 211.如果int a=3,b=4;則條件表達式“aA、3B、4C、0 D、1詳見教材P97.表達式1?表達式2:表達式 3先計算表達式1,若表達式1成立,則選擇計算表達式2,并表達式2的值作為整個大表達式的值; 若表達式1不成立,則選擇計算表達式3,并將表達式3的值作為整個大表達式的值 此題中的aa為3,b為4。a12.若int x=2,y=3,z=4 則表達式x A、4B、3C、2D、0 E) 113.C語言中,關系表達式和邏輯表達式的值是(B)。 A、0 B、0或 1C、1D、‘T’或’F’ 14.下面(D)表達式的值為4.A、11/ 3B、11.0/ 3C、(float)11/ 3D、(int)(11.0/3+0.5) 14~16題為同一類型 詳見教材P54~56.(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。 (2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。 選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換后數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666 選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其后計算過程、結果與選項B同 選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最后將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為 415.設整型變量 a=2,則執行下列語句后,浮點型變量b的值不為0.5的是(B) A、b=1.0/a B、b=(float)(1/A、C、b=1/(float)a D、b=1/(a*1.0) 16.若“int n;float f=13.8;”,則執行“n=(int)f%3”后,n的值是(A) A、1B、4C、4.33333 3D、4.6 “(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然后計算13%3,結果為1,再將結果賦給變量n,因此n的值為 117.以下對一維數組a的正確說明是: D A、char a(10); B、int a[]; C、int k=5,a[k]; D、char a[3]={‘a’,’b’,’c’}; 詳見教材P143~144,一維數組的定義、初始化 類型符 數組名 [常量表達式] 類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變量,而且從1開始計數。 選項A,常量表達式只能放在中括號 [ ]中 選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中并未對a進行初始化。 選項C,常量表達式不能為變量。 18.以下能對一維數組a進行初始化的語句是:(C) A、int a[5]=(0,1,2,3,4,) B、inta(5)={} C、int a[3]={0,1,2} D、int a{5}={10*1} 詳見教材P145,一維數組的定義、初始化 選項B,D,常量表達式只能放在中括號 [ ]中 選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了().19.在C語言中對一維整型數組的正確定義為 D。 A、int a(10); B、int n=10,a[n]; C、int n;a[n]; D、#define N 10 int a[N]; 20、已知:int a[10];則對a數組元素的正確引用是(D)。 A、a[10] B、a[3.5] C、a(5) D、a[0] 詳見教材P144,數組元素的引用 數組名[下標] 引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數 int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素;a[1] 表示組中第2個元素;a[2] 表示組中第3個元素;......;a[9] 表示組中第10個元素.選項A,超過了數組a的邏輯地址下標范圍; 選項B,邏輯地址下標只能為整數 選項C,邏輯地址下標只能放在[ ]中 21.若有以下數組說明,則i=10;a[a[i]]元素數值是(C)。 int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}; A、10 B、9 C、6 D、5先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].a[10]對應下面數組中的元素為9.因此a[a[i]]即為a[9] a[9]對應下面數組中的元素為6.因此a[9]即為6 22.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}};則數組a的第一維的大小為:(B) A、2B、3C、4D、無確定值7 D、3 6 9 二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行 23.對二維數組的正確定義是(C) 詳見教材P149~152,二維數組的定義、初始化 類型符 數組名 [常量表達式][常量表達式] 二維數組可以看做是矩陣 類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。 一維數組初始化時可以省略數組長度 二維數組初始化時可以省略行數,但不能省略列數 選項A,B,都省略了列數 選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中 A、int a[ ][ ]={1,2,3,4,5,6}; B、int a[2] []={1,2,3,4,5,6}; C、int a[ ] [3]={1,2,3,4,5,6}; D、int a[2,3]={1,2,3,4,5,6}; 24.已知int a[3][4];則對數組元素引用正確的是__C___ A、a[2][4] B、a[1,3] C、a[2][0] D、a(2)(1) 詳見教材P150,數組元素的引用 數組名[下標] [下標] 引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數 第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。 本題圖示詳見P149圖6.7 因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3; 選項A,列邏輯地址下標超過范圍 選項B,D,的引用形式不正確。 25.C語言中函數返回值的類型是由 A 決定的.A、函數定義時指定的類型 B、return語句中的表達式類型 C、調用該函數時的實參的數據類型 D、形參的數據類型 26.在C語言中,函數的數據類型是指(A) A、函數返回值的數據類型 B、函數形參的數據類型 C、調用該函數時的實參的數據類型 D、任意指定的數據類型 27.在函數調用時,以下說法正確的是(B) A、函數調用后必須帶回返回值 B、實際參數和形式參數可以同名 C、函數間的數據傳遞不可以使用全局變量 D、主調函數和被調函數總是在同一個文件里 28.在C語言中,表示靜態存儲類別的關鍵字是:(C) A、auto B、register C、static D、extern 29.未指定存儲類別的變量,其隱含的存儲類別為(A)。 A、auto B、static C、extern D、register 30.若有以下說明語句: struct student { int num; char name[ ]; float score; }stu; 則下面的敘述不正確的是:(D) A、struct是結構體類型的關鍵字 B、struct student 是用戶定義的結構體類型 C、num, score都是結構體成員名 D、stu是用戶定義的結構體類型名 31.若有以下說明語句: struct date { int year; int month; int day; }brithday; 則下面的敘述不正確的是__C___.A、struct是聲明結構體類型時用的關鍵字 B、struct date 是用戶定義的結構體類型名 C、brithday是用戶定義的結構體類型名 D、year,day 都是結構體成員名 32.以下對結構變量stul中成員age的非法引用是 B struct student { int age; int num; }stu1,*p; p=&stu1; A、stu1.age B、student.age C、p->age D、(*p).age 33.設有如下定義: struck sk { int a; float b; }data; int *p; 若要使P指向data中的a域,正確的賦值語句是 C A、p=&a; B、p=datA、a; C、p=&datA、a; D、*p=datA、a; 34.設有以下說明語句: typedef struct stu { int a; float b; } stutype; 則下面敘述中錯誤的是(D)。 A、struct是結構類型的關鍵字 B、struct stu是用戶定義的結構類型 C、a和b都是結構成員名 D、stutype是用戶定義的結構體變量名 35.語句int *p;說明了 C。 A、p是指向一維數組的指針 B、p是指向函數的指針,該函數返回一int型數據 C、p是指向int型數據的指針 // 指針的定義教材P22 3D、p是函數名,該函數返回一指向int型數據的指針 36.下列不正確的定義是(A)。 A、int *p=&i,i; B、int *p,i; C.int i,*p=&i; D、int i,*p; 選項A先定義一個整型指針變量p,然后將變量i的地址賦給p。然而此時還未定義變量i因此編譯器無法獲得變量i的地址。(A與C對比,選項C先定義變量i,則在內存中為i分配空間,因此i在內存空間的地址就可以確定了;然后再定義p,此時可以為p賦i的地址,C正確) 37.若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是:(D) A、p=q B、*p=*q C、n=*q D、p=n p,q同為整型指針變量,二者里面僅能存放整型變量的地址。 選項A,q中為地址,因此可將此地址賦給p 選項B,*p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由于在定義q時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因此*p=*q 相當于 n=n; 選項C,n=*q 等價于n=n; 選項D,p中只能存放地址,不能將n中的整數值賦給p 38.有語句:int a[10],;則 B 是對指針變量p的正確定義和初始化。 A、int p=*a; B、int *p=a; C、int p=&a; D、int *p=&a; 選項A,a是數組名,不是指針變量名,因此不可用*標注數組名a 選項C,a是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變量p時,應在變量名前加*,標明p是指針變量 選項D,a是數組名,數組名就是地址,無需再用地址符號。 39.若有說明語句“int a[5],*p=a;”,則對數組元素的正確引用是(C)。 A、a[p] B、p[a] C、*(p+2) D、p+ 2首先定義一個整型數組a,a的長度為5,然后定義一個指針變量p,并同時對p進行初始化,將數組a的地址賦給p。因此此時p中存放的數組a的首地址,即數組中第一個元素a[0]的地址。 對于數組元素下標的引用(詳見p144), 一般形式 數組名[下標] 其中下標為邏輯地址下標,從0開始計數,方括號中的下標可以是變量,可以是表達式,但結果一定要是整數。 選項A,p中存放的是地址,不是整數,不能做數組元素的下標 選項B,a是數組名,數組名就是地址,不是整數,不能做數組元素的下標 選項C,(重點!!詳見p231~234)p+2表示指向同一數組中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容 40.有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a; 則數值為9的表達式是 B A、*P+9 B、*(P+8) C、*P+=9 D、P+8 (重點!!詳見p231~234) 首先定義一個整型數組a,a的長度為5,然后定義一個指針變量P,并同時對P進行初始化,將數組a的地址賦給P。因此此時P中存放的數組a的首地址,即數組中第一個元素a[0]的地址。 數組中9對應的是a[8], 選項B,P+8表示數組中后8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。 選項A,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值1.*P+9=1+9=10 選項C,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價于a[0]=a[0]+9.選項D,P+8表示數組中后8個元素的地址,即a[8]的地址,而非a[8]中的值。 41.在C語言中,以 D 作為字符串結束標志 A、’’ B、’ ’ C、’0’ D、’
主站蜘蛛池模板:
无码人妻一区二区三区在线视频|
四虎最新网址|
粉色午夜视频|
亚洲精品欧美二区三区中文字幕|
自拍 另类 综合 欧美小说|
亚洲国产成人精品无码一区二区|
国产乱了真实在线观看|
亚洲嫩模喷白浆在线观看|
2019久久久最新精品|
2020国产在线拍揄自揄视频|
国产在线精品一区二区在线观看|
无码国产精品一区二区免费模式|
亚洲日韩久久综合中文字幕|
久久精品国产久精国产思思|
日韩亚洲国产中文字幕欧美|
av动漫无码不卡在线观看|
亚洲精品一区二区三区在线|
欧洲欧美人成视频在线|
秋霞鲁丝片av无码|
艳妇乳肉豪妇荡乳av无码福利|
国产精品久久久福利|
日韩成人无码影院|
中文字幕人妻无码视频|
成人亚洲欧美一区二区|
人人澡人人妻人人爽人人蜜桃麻豆|
亚洲精品无码乱码成人|
色五月激情五月亚洲综合考虑|
少妇久久久久久久久久|
国内精品久久久久影院老司机|
120秒试看无码体验区|
中文字幕在线精品视频入口一区|
男人的好看免费观看在线视频|
99精品丰满人妻无码a片|
老司机久久精品最新免费|
日本精品高清一区二区|
精品久久久久久无码中文字幕漫画|
人人草人人做人人爱|
欧美金发尤物大战黑人|
久久精品无码一区二区app|
午夜福利国产成人无码gif动图|
伊伊综合在线视频无码|
第四篇:計算機二級C語言測試題及答案解析