2013全國計算機二級c語言真題
1. 2013計算機二級c語言完整預測試題及答案一
為大家收集整理了《2013計算機二級C語言完整預測試題及答案一》供大家參考,希望對大家有所幫助!!!
一、選擇題(每題2分,共計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.開發大型軟體時,產生困難的根本原因是
A)大系統的復雜性
B)人員知識不足
C)客觀世界千變萬化
D)時間緊、任務重
8.下列SQL語句中,用於修改表結構的是
A)ALTER
B)CREATE
C)UPDATE
D)INSERT
9.資料庫、資料庫系統和資料庫管理系統之間的關系是
A)資料庫包括資料庫系統和資料庫管理系統
B)資料庫系統包括資料庫和資料庫管理系統
C)資料庫管理系統包括資料庫和資料庫系統
D)3者沒有明顯的包含關系
10.關系模型允許定義3類數據約束,下列不屬於數據約束的是
A)實體完整性約束
B)參照完整性約束
C)域完整性約束
D)用戶自定義的完整性約束
11.下列用於printf函數的控制字元常量中,代表"豎向跳格"的轉義字元常量是
A)\b
B)\t
C)\v
D)\f
12.以下程序的輸出結果是
main()
{ int a=21,b=11;
printf("%d\n",--a+b,--b+a);
}
A)30
B)31
C)32
D)33
13.設變數n為float類型,m為int類型,則以下能實現將n中的數值保留小數點後兩位,第三位進行四捨五入運算的表達式是
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
14.設x,y和z都是int型變數,且x=3,y=4,z=5,則下面表達式中,值為0的表達式是
A)x&&y
B)x<=y
C)x||++y&&y-z
D)!(x
15.若變數已正確說明為int類型,要通過語句scanf("%d %d %d ",&a,&b,&c);給a賦值3,b賦值5,c賦值8,不正確的輸入形式是
A)3回車>
5回車>
8回車>
B)3,5,8回車>
C)3回車>
58回車>
D)35回車>
8回車>
49 != return j
16.設有程序段
int k=10;
while(k=0)k=k-1;
則下面描述中正確的是
A)while循環執行10次
B)循環是無限循環
C)循環體語句一次也不執行
D)循環體語句執行一次
17.對表達式for(表達式1; ;表達式3)可理解為
A)for(表達式1;0;表達式3)
B)for(表達式1;1;表達式3)
C)for(表達式1;表達式1;表達式3)
D)for(表達式1;表達式3;表達式3)
18.以下程序的輸出結果是
main()
{ int a,i;a=0;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
} printf("%d\n",a);
}
A)31
B)13
C)10
D)20
19.若有如下語句
int x=3;
do{ printf("%d\n",x-=2);}
while(!(--x));
則上面程序段
A)輸出的是1
B)輸出的是1和-2
C)輸出的是3和0
D)是死循環
20.下面程序的功能是將從鍵盤輸入的一對數,由小到大排序輸出,當輸入一對相等數時結束循環,在劃線處應填入的語句是
#include
main()
{ int a,b,t;
scanf("%d%d",&a,&b);
while()
{ f(a>b)
{ =a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}
A)!a=b
B)a!=b
C)a==b
D)a=b
21.有以下程序
void fun(int a,int b,int c)
{a=456,b=567,c=678;}
main()
{ int x=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
輸出結果是
A)30,20,10
B)10,20,30
C)456,567,678
D)678,567,456
22.若有說明:int a[][4]={0,0};則下面不正確的敘述是
A)數組a的每個元素都可得到初值0
B)二維數組a的第一維大小為1
C)當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小
D)只有元素a[0][0]和a[0][1]可得到初值,其餘元素均得不到確定的初值
23.有以下程序
main()
{ char a[]={ ′a′,′b′,′c′,′d′, ′e′, ′f′, ′g′,′h′,′\0′}; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d,%d\b",i,j);
}
程序運行後的輸出結果是
A)9,9
B)8,9
C)1,8
D)9,8
24.已知學生記錄描述為
struct student
{ int no;
char name[20],sex;
struct
{ int year,month,day;
} birth;
};
struct student s;
設變數s中的「生日」是「1984年11月12日」,對「birth」正確賦值的程序段是
A)year=1984;month=11;day=12;
B)s.year=1984;s.month=11;s.day=12;
C)birth.year=1984;birth.month=11;birth.day=12;
D)s.birth.year=1984;s.birth.month=11;s.birth.day=12;
25.以下程序的運行結果是
#define MIN(x,y)(x)<(y)?(x):(y)
main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A)10
B)15
C)100
D)150
49 != return j
26.有如下程序
int func(int a,int b)
{ return(a+b);}
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
該程序的輸出的結果是
A)12
B)13
C)14
D)15
27.設有以下說明語句
typedef struct
{ int n;
char ch[8];
} PER;
則下面敘述中正確的是
A)PER 是結構體變數名
B)PER是結構體類型名
C)typedef struct 是結構體類型
D)struct 是結構體類型名
28.有如下定義
struct person{char name[9];int age;};
struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根據上述定義,能輸出字母M的語句是
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
29.以下程序執行後a的值是
main()
{ int x,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A)252
B)1
C)0
D)運行時出錯,x無定值
30.閱讀下列程序,當運行函數時,輸入asd af aa z67,則輸出為
#include
#include
#include
int fun (char *str)
{ int i,j=0;
for(i=0;str[i]!=′\0′;i++)
if(str[i]!=′ ′)str[j++]=str[i];
str[j]= ′\0′;
}
main()
{
char str[81];
int n;
clrscr();
printf("Input a string : ");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)asdafaaz67
B)asd af aa z67
C)asd
D)z67
31.下列程序的輸出結果是
struct abc
{ int a, b, c, s;};
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A)5
B)6
C)7
D)8
32.若有定義: char *st= "how are you "; 下列程序段中正確的是
A)char a[11], *p; strcpy(p=a+1,&st[4]);
B)char a[11]; strcpy(++a, st);
C)char a[11]; strcpy(a, st);
D)char a[], *p; strcpy(p=&a[1],st+2);
33.下列程序的運行結果是
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
A)6 3
B)3 6
C)編譯出錯
D)0 0
34.請選出正確的程序段
A)int *p;
scanf("%d",p);
…
B)int *s, k;
*s=100;
…
C)int *s, k;
char *p, c;
s=&k;
p=&c;
*p=′a′;
…
D)int *s, k;
char *p, e;
s=&k;
p=&c;
s=p;
*s=1;
…
35.若有下面的說明和定義,則sizeof(struct aa)的值是
struct aa
{ int r1; double r2; float r3;
union uu{char u1[5];long u2[2];}ua;
} mya;
A)30
B)29
C)24
D)22
49 != return j
二、填空題(每空2分,共計30分)
1.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為 【1】 。
2.用樹型結構表示實體類型及實體間聯系的數據模型稱為 【2】 。
3.類是一個支持集成的抽象數據類型,而對象是類的 【3】 。
4.數據流圖的類型有 【4】 和事務型。
5.當數據的物理結構(存儲結構、存取方式等)改變時,不影響資料庫的邏輯結構,從而不致引起應用程序的變化,這是指數據的 【5】 。
6.以下程序運行結果是 【6】 。
long fib (int g)
{ switch (g)
{ case 0∶return 0;
case 1∶case2∶return 1;
}
return (fib(g-1)+fib(g-2));
}
main ()
{ long k;
k=fib (5);
printf ("k=%(d\n)",k);
}
7.以下程序段中,錯誤的行號是 【7】 。
① #include
② main ()
③ { char str [14];str []={" I love China"};
④ printf ("%s",str);
⑤ }
8.將以下程序寫成三目運算表達式是 【8】 。
if(a>b)max=a;
else max=b;
9.設x和y均為int型變數,且x=1,y=2,則表達式double(1+x/y)的值為 【9】 。
10.下面程序的功能是輸出數組s中元素的下標,請填空。
main()
{ int k, p,s[]={1, -9, 7, 2, -10, 3};
for(p =0, k =p; p< 6; p++)
if(s[p]>s[k]) 【10】
printf("%d\n", k);
}
11.設有以下定義和語句,則*(*(p+2)+1)的值為 【11】 。
int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];
p=a;
12.下面程序的運行結果是 【12】 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf("%d %d\n",i1,i2);
}
13.以下程序的輸出結果是 【13】 。
unsigned fun6(unsigned num)
{ unsigned k=1;
do{k *=num;num/=10;} while (num);
return k;
}
main()
{ unsigned n=26;
printf("%d\n", fun6(n));
}
14.以下程序的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除後數組中數據的個數。
例如,若一維數組中的數據是2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。刪除後,數組中的內容應該是2 3 4 5 6 7 8 9 10。請填空。
#include
#define N 80
int fun(int a[], int n)
{ int i,j=1;
for(i=1;i
if(a[j-1] 【14】 a[i])
a[j++]=a[i];
【15】;
}
main()
{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;
printf("The original data :\n");
for(i=0; i
for(i=0; i
}
49 != return j
1 A2 D3 B4 C5 B6 C7 A8 A9 B10 C
11 C12 A13 B 14 D15 B16 C17 B18 A19 B20 B
21 B22 D 23 D24 D25 B26 D27 B28 D29 C30 A
31 B 32 A33 B34 C35 D
36 n/2
37 層次模型
38 實例
39 變換型
40 物理獨立性
41 k=5
42 3行
43 max=(a>b)?a:b;
44 1.000000
45 k=p
46 60
47 1000 10
48 12
49 != return j
2. 2013年9月全國計算機二級c語言考試時,程序運行了,但未保存,是否給分,會是零分么
你好!根據你的描述,就是編譯器是否保存了,寫的代碼?
1)編譯器保存了你的代碼及運行結果(exe文件)
其實在用編譯器編譯的時候,編譯器首先會將代碼保存在保存路徑(不知道你設置了路徑沒,設置了就是你設置的,沒有設置編譯器有個默認路徑!),編譯後的文件編譯器也會保存起來。
2)不過計算機等級考試,貌似得保存在題目指定路徑(網站上面查找了下關於計算機等級考試運行結果保存的問題)
這是計算機等級考試注意事項的網址:
http://wenku..com/view/c82f940b79563c1ec5da7190.html
這是計算機等級考試就保存問題的網上回答:
http://..com/link?url=1o4ZBVLcKZxwhYAWx6GizunkaS-MM4c__q0uDN7hj0BAMSjcq
心態放好,考試盡力就好!
祝你越過越好!
3. 9月計算機二級《C語言》上機考題及答案
1、以下選項中屬於C語言的數據類型是()。
A. 復合型
B. 雙精度型
C. 邏輯型
D. 集合型
2、以下說法中正確的是()。
A. C語言程序總是從第一個的函數開始執行
B. 在C語言程序中,要調用的函數必須在main()函數中定義
C. C語言程序總是從main()函數開始執行
D. C語言程序中的main()函數必須放在程序的開始部分
3、選出下列標識符中不是合法的標識符的是()。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正確的是()。
A、字元型數組中可能存放字元串。
B、可以對字元型數組進行整體輸入、輸出。
C、可以對整型數組進行整體輸入、輸出。
D、 不能在賦值語句中通過賦值運算符“=”對字元型數組進行整體賦值。
5、若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為()。
A. p+1
B. a+1
C. a++
D. ++p
6、設有如下定義: int x=10,y=3,z; 則語句printf("%d ",z=(x%y,x/y)); 的輸出結果是()。
A. 1
B. 0
C. 4
D. 3
7、定義如下變數和數組: int i, x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的輸出結果是()
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
8、讀出以下語句的輸出結果是()。
int x=10,y=10;
printf(“%d %d ”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
D. 10 9
9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。
if(x++>5) printf("%d",x);
else printf("%d ",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、設有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是()。
A)aa數組成元素的值分別是"abcd"和ABCD"
B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組
C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的`首地址
D)aa數組的兩個元素中各自存放了字元’a’和’A’的地址
11、以下語句的輸出結果是()。
int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d ",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的輸出結果是()。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
13、執行下面的程序後,a的值是()。
#define SQR(X) X*X
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d ",a); }
A. 10
B. 1
C. 9
D. 0
14、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為()。
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
15、下列程序執行後輸出的結果是()。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main()
{ int a=3;
fun(a);
d + = a + +;
printf("%d ",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表達式:10!=9的值是()。
A. true
B. 非零值
C. 0
D. 1
17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是()。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字元串:Hello!賦給數組b的語句是()。
A. char b[10]={’H’,’e’,’l’,’l’,’o’,’!’};
B. char b[10]; b="Hello!";
C. char b[10]; strcpy(b,"Hello!");
D.char b[10]="Hello!";
19、在C程序中有如下語句:char *func(int x,int y); 它是()。
A. 對函數func的定義。
B. 對函數func的調用。
C.對函數func的原型說明。
D. 不合法的。
20、以下程序的輸出結果是()。
char str[15]=”hello!”;
printf(“%d ”,strlen(str));
A. 15
B. 14
C. 7
D. 6
參考答案:
1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
4. 計算機二級C語言都有哪些題型
全國計算機二級C語言程序設計包括40個單選題(每題一分)和三道操作題(60分)。
單選題中1~10題為二級公共基礎知識,考試內容包括數據結構與演算法、程序設計基礎、軟體工程基礎、資料庫設計基礎四部分。單選題的11~40題是C語言的內容。
操作題包括程序填空(18分)、程序改錯(18分)和編程題(24分)各一題。
程序填空是將一個完整的程序,扣掉兩到三處,讓考生將它填寫完整。由於每位考生具體抽到的題目不同,程序填空有2到3個空要填。程序填空題以實際填寫的內容為評分依據,填寫正確一個空,給一個空的分。如果是2個空,每個空就是9分;如果是3個空每個空是6分。
程序改錯也是一個完整的程序,其中有2~3處錯誤要求考生將他們改正。與程序填空類似,2處錯誤的話,每處9分,3處錯誤的話,每處6分。程序改錯題的題目會提示每一處錯誤所在的行,在那一行的上一行有********found********標識。
編程題是要求考生編寫一個程序,然後運行出題干要求的結果。題目中主函數main()會完整給出,在主函數中將調用fun()函數,fun函數由考生自己編寫。編程題以運行結果給分,所編寫完成後必須運行,否則沒分。因此,大多數情況下,編程題要麼就是得24分滿分,要麼就是0分。
5. 全國計算機二級c語言機試中的程式設計題如果不能寫全對,還會給分嗎
全國計算機二級c語言機試中的程式設計題如果不能寫全對,還會給分嗎
黑盒測試。按照結果給分。
一般是用幾組資料,對應幾組結果。你對了幾組就得這一部分的分。
但如果你是程式沒寫完或者編譯錯誤或者演演算法關鍵性錯誤,執行不出結果的那就一分都沒有。
那要看你哪裡錯了,開頭錯了基本就沒分了,如果只是執行結果不對,能給一部分
2010年全國計算機二級(C語言程式設計)考綱
二級C語言筆試真題---知識點與分值 結構分析
試題結構分析
二級C一直以來是整個二級考試中試題最多、難度最大、報考人數也最多的考試,但是從2008
年4月份開始筆試由原來120分鍾減少到90分鍾,所以二級C語言首次題數減少、單個題目難度下降(
選擇題由原來的50個題目減少到40個,填空由原來的20空減少到15空,滿分100分保持不變),從而
試題整體難度下降。而上機考試時間由原來的60分鍾增加至90分鍾,但上機題目不僅不加難,反而降
低難度。所以整個等級考試難度是下降的趨勢,08年4月以後開始,等級考試將沿襲這種題型和題量
安排等。
筆試試題分類統計
二級C各章節知識點考察到的題目題號和分值分析:
C語言初步知識 選擇11-13 共3分
順序結構 選擇14-16 填空7 共5分
選擇結構 選擇17-20 填空6 共6分
迴圈結構 選擇21、22 填空8 共6分
函式 選擇32、34 填空11、13 共8分
指標/陣列/字串 選擇23-27、31、33、35、40 填空10-12 共24分
預編譯與動態記憶體 選擇28、39 共4分
結構與共用體 選擇29、36 填空14 共6分
位運算 選擇38 共2分
檔案 選擇30、37 填空15 共6分
資料結構與演演算法 選擇5-7 填空2、3 共10分
程式設計基礎 選擇2 共2分
軟體工程基礎 選擇1、3、4 填空1 共8分
資料庫設計基礎 選擇8-10 填空4、5 共10分
其中:選擇1~10每題2分 選擇11~20每題1分 選擇21~40每題2分 填空1-15空每空2分
試題特點:
1、題數減少
以前一共50道選擇題、20個空的填空題,今年只有40道選擇題,15個空的填空題。試題數的減少,使考生有充足的時間分析和檢查題目。
2、單個題目的難度下級。
在本次二級C語言筆試試題中,未出現一些特別難的試題,比如沒有出現「指向指標的指 針作函式引數」等型別的試題。
備考建議:
大家可以看出,指標、陣列、字串無論在筆試還是上機都是重中之重,既是重點又是難點。C語言程式初步、順序結構、選擇結構、迴圈結構、函式是基礎。編譯預處理、作用域與儲存類、位運算、檔案等是難點但不是重點,每年都會考到,但題量都不大。結構體與共用體可以說比較重點又是難點。公共基礎部分除了程式設計基礎這一部分,其他三部分旗鼓相當,都是重點。
全國計算機二級考試筆試和機試都要嗎?另外C語言程式設計難不難考?
筆試和機試都要考的,C語言相對來說學習起來較難一些,考試則相對簡單一些,計算機二級最好學的就是VB,但是VB的考試相對難一些,看你自己能學懂哪一科了
2014年3月國家計算機二級考試C語言機試程式設計題
:wenku../link?url=_C9kWhOpoVbskmu8yjE-0DQ2YLwLLIv9D3pB_tY3u2VvS5_WqUIaRH1aQPQXfdzmBvbWoy
全國計算機二級c語言程式設計,考試范圍是哪些
2013年無紙化考試: 選擇題:40分,程式填空題:18分,程式修改題:18分,程式設計題:24分。 60分且程式題達36分,才算過。。 今年沒有填空題,而 且都是機試。 真題庫,其中選擇題8套,共320題,程式題105套,共315題。 考生考試時,按考點隨
全國計算機二級c語言,程式設計考試范圍
2013年無紙化考試: 選擇題:40分,程式填空題:18分,程式修改題:18分,程式設計題:24分。 60分且程式題達36分,才算過。。 今年沒有填空題,而 且都是機試。 真題庫,其中選擇題8套,共320題,程式題105套,共315題。 考生考試時,按考點隨
是自考計算機基礎與程式設計2275難些,還是考全國計算機二級C語言難些
具體要看當地招考院釋出的自考免考條例
全國計算機二級C語言,可以先做程式題嗎?
全國計算機二級C語言,可以先做程式題,考生可以先做自己拿手的考試題,這個可以由考生自主決定。
全國計算機二級:
級別:程式設計、辦公軟體高階應用級。考核內容包括計算機語言與基礎程式設計能力,要求參試者掌握一門計算機語言,可選類別有高階語言程式設計類、資料庫程式設計類、Web程式設計類等;二級還包括辦公軟體高階應用能力,要求參試者具有計算機應用知識及 MS Office 辦公軟體的高階應用能力,能夠在實際辦公環境中開展具體應用。
科目:語言程式設計類(C、C++、Java、Visual Basic、Web)、資料庫程式設計類(Visual FoxPro、Aess、MySQL)、辦公軟體高階應用(MS Office 高階應用)共九個科目。
形式:完全採取上機考試形式。各科上機考試時間均為 120 分鍾,滿分 100 分。
獲證條件:總分不低於 60 分。
全國計算機二級ACCESS的內容是ACCESS程式設計嗎?
6. 在大學想考計算機二級,請問自學的話需要買什麼輔導書,要買好幾本是嗎
同學你好,我二級也是才過的,因為我們專業沒有相關的計算機課程,所以我也是零基礎學二級的。我報的是二級C語言,因為當時聽一些計算機專業的同學說,C語言的方向比較實用一點,而且考題也比較有規律可循,有點像數學一樣,注重方法。後來做題的時候,發現很多題目只要方法掌握了就顯得特別簡單,而且記憶性內容相對來說少一些。
我用的書籍主要如下:
1.全國計算機等級考試2級教程:C語言程序設計(2013年版)
這本書主要是用來自學C語言的,書編寫的邏輯結構挺好的,很容易看懂。
2.全國計算機等級考試2級教程:公共基礎知識(2013年版)(附考試大綱)
由於二級有部分考題和C語言無太大關系,主要屬於公共基礎知識,這一部分一般記憶性的比較多,所以推薦這本書。
3.(2014年)全國計算機等級考試歷年真題必練(含關鍵考點點評):2級C語言程序設計(第四版)(附光碟)
我當時用的是2013年的,覺得答案解答的挺詳細,而且容易懂,北郵出版社出版的,覺得書的整體質量也很靠譜。
4.未來教育·全國計算機等級考試上機考試題庫:2級C(2014年3月考試專用)(附CD光碟1張) [平裝]
這個主要是機試題目在上面,由於機試的題目一般是從題庫中抽取的,所以這本書把所有可能抽到的編程題都羅列進去了,所以挺有用的。
以上這四本書基本上可以把二級C語言的考點全部涵蓋了,基本上看完了,我覺得考試的時候感覺還是挺輕松地。
7. 全國計算機等級考試二級C語言歷年試題及答案
2010年9月全國計算機等級考試二級C語言筆試試題及答案
一、選擇題((1)-(10)每題2分,(11)-(50)每題1分.共60分))
(1)下列選項中不屬於軟體生命周期開發階段任務的是
A)詳細設計 B)概要設計 C)軟體維護 D)軟體測試
(2)樹是結點的集合,它的根結點數目是
A)有且只有1 B)1或多於1 C)0或1 D)至少2
(3)在面向對象方法中,實現信息隱蔽是依靠
A)對象的繼承 B)對象的多態 C)對象的封裝 D)對象的分類
(4)程序設計語言的基本成分是數據成分、運算成分、控製成分和
A)語句成分 B)變數成分 C)對象成分 D)傳輸成分
(5)冒泡排序在最壞情況下的比較次數是
A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2
(6)下列敘述中,不屬於軟體需求規格說明書的作用的是
A)作為確認測試和驗收的依據
B)反映出用戶問題的結構,可以作為軟體開發工作的基礎和依據
C)便於用戶、開發人員進行理解和交流
D)便於開發人員進行需求分析
(7)下列敘述中錯誤的是
A)一個C語言程序只能實現一種演算法 B)C程序可以由多個程序文件組成
C)C程序可以由一個或多個函數組成 D)一個函數可單獨作為一個C程序文件存在
(8)下列不屬於軟體工程的3個要素的是
A)方法 B)過程 C)工具 D)環境
(9)下列敘述中正確的是
A)資料庫系統是一個獨立的系統,不需要操作系統的支持
B)資料庫技術的根本目標是要解決數據的共享問題
C)資料庫管理系統就是資料庫系統
D)以上三種說法都不對
(10)下列敘述中正確的是
A)每個C程序文件中都必須有一個main()函數
B)在C程序的函數中不能定義另一個函數
C)C程序可以由一個或多個函數組成
D)在C程序中main()函數的位置是固定的
(11)將E-R圖轉換到關系模式時,實體與聯系都可以表示成
A)屬性 B)關系 C)鍵 D)域
(12)下列定義變數的語句中錯誤的是
A)double int_; B)int _int; C)char For D)float USS
(13)下列敘述中正確的是
A)C語言編譯時不檢查語法 B)C語言的子程序有過程和函數兩種
C)C語言的函數可以嵌套定義 D)C語言的函數可以嵌套調用
(14)以下選項中,合法的一組C語言數值常量是
A) 0x8A B)12 C).177 D) 028
(15)以下敘述中正確的是
A)構成C程序的基本單位是函數
B)可以在一個函數中定義另一個函數
C)main()函數必須放在其他函數之前
D)所有被調用的函數一定要在調用之前進行定義
(16)若在定義語句:int a,b,c,*p=&c;之後,接著執行以下選項中的語句,則能正確執行的語句是
A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D) scanf("%d",a,b,c);
(17) 有以下程序
main()
{int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序運行後的輸出結果是
A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1
(18) 若已定義:int a=25,b=14,c=19;以下三目運算符(?:)所構成語句的執行後a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結果是
A)***a=25,b=13,c=19 B)***a=26,b=14,c=19
C)### a=25,b=13,c=19 D)### a=26,b=14,c=19
(19)下列程序段的輸出結果是
int a=1234;
float b=123.456;
double c=12345.54321;
printf("-,%2.1f,%2.1f",a,b,c);
A)無輸出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5
(20)有以下程序
main()
{int a=0,b=0;
a=10; /*給a賦值
b=20; 給b賦值 */
printf("a+b=%d\n",a+b); /* 輸出計算結果 */
}
程序運行後輸出結果是
A)30 B)a+b=30 C)a+b=0 D)出錯
(21)若運行以下程序時,從鍵盤輸入 ADescriptor(表示回車),則下面程序的運行結果是
#include
main()
{ char c;
int v0=1,v1=0,v2=0;
do{ switch(c=getchar())
{ case ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1+=1;
default:v0+=1;v2+=1;
}
} while(c!=′\n′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8
C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12
(22) 有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的運行結果是
A)732 B)433 C)852 D)874
(23) 設有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運行程序段後輸出0 B)運行程序段後輸出1
C)程序段中的控製表達式是非法的 D)程序段執行無限次
(24)有以下程序
fun(int x,int y){return(x+y);}
main()
{int a=1,b=2,c=3,sum;
sum=fun((a++,b++b,a+b),c++);
printf("%d\n",sum);
}
執行後的輸出結果是
A)5 B)7 C)8 D)3
(25)執行下面的程序段後,變數k中的值為
int k=3, s[2];
s[0]=k; k=s[1]*10;
A)不定值 B)35 C)31 D)20
(26)以下敘述中錯誤的是
A)改變函數形參的值,不會改變對應實參的值
B)函數可以返回地址值
C)可以給指針變數賦一個整數作為地址值
D)當在程序的開頭包含文件stdio.h時,可以給指針變數賦NULL
(27)以下程序段的描述,正確的是
x=-1;
do
{x=x*x;} while(!x);
A)是死循環 B)循環執行兩次 C)循環執行一次 D)有語法錯誤
(28)有以下程序
fun(int x,int y)
{static int m=0,i=2;
i+=m+1;m=i+x+y; return m;
}
main()
{int j=1,m=I,k;
k=fun(j,m); printf("%d",k);
k=fun(j,m); printf("%d\n",k)
}
執行後的輸出結果是
A)5,5 B)5,11 C)11,11 D)11,5
(29)有以下程序
fun(int x)
{int p;
if(x==0║x= =1) return(3);
p=x-fun(x=2);
retum p;
}main()
{ prinf("%d\n",fun(7));}
執行後的輸出結果是
A)7 B)3 C)3 D)0
(30)在16位編譯系統上,右有定義int a[ ]={10,20,30},*p=&a;,當執行p++;後,下列說法錯誤的是
A)p向高地址移了一個位元組 B)p抽高地址移了一個存儲單元
C)p向高地址移了兩個位元組 D)p與a+1等價
(31)有以下程序
main()
{int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
執行後的輸出結果是
A)1 B)2 C)3 D)4
(32)下列程序執行後的輸出結果是
void func1(int i);
void func2(int i);
char st[]="hello,friend!";
void func1(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{ int i=0; func1(i); printf("\n");}
A)hello B)hel C)hlo D)hlm
(33)在下述程序中,判斷i>j共執行的次數是
main()
{ int i=0, j=10, k=2, s=0;
for (;;)
{ i+=k;
if(i>j)
{ printf("%d",s);
break;
} s+=i;
}
}
A)4 B)7 C)5 D)6
(34)以下函數返回a所指數組中最大值所在的下標值
fun(int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]>a[p]);
return(p);
}
在下劃線處應填入的內容是
A)i=p B)a[p]=a[i] C)p=j D)p=i
(35)下列程序執行後的輸出結果是
main()
{ int a[3][3], *p,i;
p=&a[0][0];
for(i=1; i<9; i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A)3 B)6 C)9 D)隨機數
(36) 有以下程序
#include
void fun(int *a,int n)/*fun函數的功能是將a所指數組元素從大到小排序*/
{int t,i,j;
for(i=0;ifor(j=i+1;jif (a}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for (i=0;i<10;i++) printf("%d,",c);
printf("\n");
}
程序運行的結果是
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(37)以下程序的輸出結果是#include
void prt (int *x, int*y, int*z)
{ printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{ int a=10,b=40,c=20;
prt (&a,&b,&c);
prt (&a,&b,&c);
}
A)11,42, 31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
(38) 有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{
char ss[10]=」acc」,aa[10]=」bbxxyy」;
fun(ss,aa);
printf(「%s,%s\n」,ss,aa);
}
程序運行結果是
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy
(39) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
程序運行後的輸出結果是
A)20 30 B)20 50 C)30 50 D)30 20
(40) 有以下程序
main()
{int x[3][2]={0},I;
for(I=0;I<3;I++) scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若運行時輸入:246,則輸出結果為
A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6
(41)有以下程序
int add(int a,int b){return+b};}
main()
{int k,(*f)(),a=5,b=10;
f=add;
…
}
則以下函數調用語句錯誤的是
A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);
(41)有以下程序
#include
main(int argc,char *argv[])
{int i=1,n=0;
while(i<arge){n=n+strlen(argv[i]);i++;}
printf(「%d\n」,n);
}
該程序生成的可執行文件名為:proc.exe。若運行時輸入命令行:
proc 123 45 67
則程序的輸出結果是
A)3 B)5 C)7 D)11
(42)有以下程序
void fun2(char a, char b){printi(「%b%c」,a,b);}
char a= 『A』,b= 『B』;
void fun1( ){ a= 『C』l b= 『D』; }
main( )
{ fun1( )
printf( 「%c%c」,a,b);
fun2(『E』, 『F』);
}
程序的運行結果是
A)CDEF B)ABEF C)ABCD D)CDAB
(43)有以下程序
#include
#define N 5
#define M N+1
#define f(x) (x*M)
main()
{int i1,i2;
i1=f(2);
i2=f(1+1);
printf(「%d %d\n」,i1,i2);
}
程序的運行結果是
A)12 12 B)11 7 C)11 11 D)12 7
(44)設有以下語句
typedef struct TT
{char c; int a[4];}CIN;
則下面敘述中正確的是
A)可以用TT定義結構體變數 B)TT是struct類型的變數
C)可以用CIN定義結構體變數 D)CIN是struct TT類型的變數
(45)有以下結構體說明、變數定義和賦值語句
struct STD
{char name[10];
int age;
char sex;
}s[5],*ps;
ps=&s[0];
則以下scanf函數調用語句中錯誤引用結構體變數成員的是
A)scanf(「%s」,s[0].name); B)scanf(「%d」,&s[0].age);
C)scanf(「%c」,&(ps>sex)); D)scanf(「%d」,ps>age);
(46)若有以下定義和語句
union data
{ int i; char c; float f;}x;
int y;
則以下語句正確的是
A)x=10.5; B)x.c=101; C)y=x; D)printf(「%d\n」,x);
(47)若變數已正確定義,則以下語句的輸出結果是
s=32; s^=32;printf(「%d」,s);
A)-1 B)0 C)1 D)32
(48) 若程序中有宏定義行:#define N 100 則以下敘述中正確的是
A)宏定義行中定義了標識符N的值為整數100
B)在編譯程序對C源程序進行預處理時用100替換標識符N
C) 對C源程序進行編譯時用100替換標識符N
D)在運行時用100替換標識符N
(49)以下敘述中正確的是
A)C語言中的文件是流式文件,因此只能順序存取數據
B)打開一個已存在的文件並進行了寫操作後,原有文件中的全部數據必定被覆蓋
C)在一個程序中當對文件進行了寫操作後,必須先關閉該文件然後再打開,才能讀到第1個數據
D)當對文件的讀(寫)操作完成之後,必須將它關閉,否則可能導致數據丟失
(50)有以下程序
#include
main()
{FILE *fp; int i;
char ch[]=」abcd」,t;
fp=fopen(「abc.dat」,」wb+」);
for(i=0;i<4;i++)fwriter&ch[],1,1fp;
fseek(fp,-2L,SEEK_END);
fread(&t,1,1,fp);
fclose(fp);
printf(「%c\n」,t);
}
程序執行後的輸出結果是
A)d B)c C)b D)a
二、填空題(每空2分,共40分)
(1)在面向對象方法中,類之間共享屬性和操作的機制稱為 【1】 。
(2)一個關系表的行稱為 【2】 。
(3)耦合和內聚是評價模塊獨立性的兩個主要標准,其中 【3】 反映了模塊內各成分之間的聯系。
(4)線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構.隊列是一種特殊的線性表,循環隊列是隊列的【4】存儲結構.
(5) 【5】 的任務是診斷和改正程序中的錯誤。
(6) 以下程序的輸出結果是【6】.
#include
main()
{ int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;}
}
(7)以下程序運行後的輸出結果是 【7】 。
main()
{
int m=011,n=11;
printf("%d %d\n",++m,n++);
}
(8)有以下程序,若運行時從鍵盤輸入:18,11,則程序輸出結果是 【8】 。
main()
{ int a,b;
printf("Enter a,b:");scanf("%d,%d",&a,&b);
while(a!=b)
{ while(a>b) a-=b;
while(b>a) b-=a;
}
printf("%3d%3d\n",a,b);
}
(9) 有以下程序段,且變數已正確定義和賦值
for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請填空,使下面程序段的功能為完全相同
s=1.0;k=1;
while(_【9】_______){ s=s+1.0/(k*(k+1)); _【10】_______;}
printf("s=%f\n\n",s);
(10)執行以下程序的輸出結果是【11】______.
#include
main()
{ int i,n[4]={1};
for(i=1;i<=3;i++)
{ n=n[i-1]*2+1; printf("%d",n); }
}
(11)以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)中找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換.請填空.
#include
viod f(int x[],int n)
{ int p0,p1,i,j,t,m;
i=j=x[0]; p0=p1=0;
for(m=0;m{ if(x[m]>i) {i=x[m]; p0=m;}
else if(x[m]}
t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;
t=x[p1];x[p1]= _【12】_______; 【13】______=t;
}
main()
{ int a[10],u;
for(u=0;u<10;u++) scanf("%d",&a);
f(a,10);
for(u=0;u<10;u++) printf("%d",a);
printf("\n");
}
(12)下列程序中的函數strcpy2()實現字元串兩次復制,即將t所指字元串復制兩次到s所指內存空間中,合並形成一個新的字元串。例如,若t所指字元串為efgh,調用strcpy2後,s所指字元串為efghefgh。請填空。
#include
#include
void strcpy2(char *s,char *t)
{ char *p=t;
while(*s++=*t++);
s= 【14】 ;
while( 【15】 =*p++);
}
main()
{ char str1[100]="abcd",str2[]="efgh";
strcpy2(str1 ,str2); printf("%s\n",str1);
}
(13)以下程序統計從終端輸入的字元中大寫字母的個數,num[0]中統計字母A的個數,num[1]中統計字母B的個數,其它依次類推.用#號結束輸入,請填空.
#include
#include
main()
{ int num[26]={0},i; char c;
while((_【16】_______)!='#')
if(isupper(c)) num[c-『A』]+= 【17】_______;
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num);
}
(14)以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請填空。
#include "math.h"
double fun(double x) { return(x*x-2*x+6); }
main()
{
double x,y1,y2;
printf("Enter x:"); scanf("%lf",&x);
y1=fun( 【18】 );
y2=fun( 【19】 );
printf("y1=%lf,y2=%lf\n",y1,y2);
}
(15) 以下程序的輸出結果是_【20】______.
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);
}
一、選擇題答案:
1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA
31-40:CCDAB DCDAB 41-50:CABCD BBBDB
二、填空題答案:
1.繼承 2. 元組 3.內聚 4.順序 5. 程序調試
6. 54321 7.10 11 8. 1 9.k<=n k++
10. 3 7 5 11.x[0] x[0] 12.s--,*s++ 13.c=getchar() 14. (x+8),sin(x) 15.55
希望對你有所幫助