當前位置:首頁 » 編程語言 » 2016年計算機二級c語言考試真題

2016年計算機二級c語言考試真題

發布時間: 2024-07-03 03:47:06

1. 全國計算機等級考試二級c語言歷年試題及答案

這里有一份最全的考研歷年真題資料分享給你

鏈接:

提取碼:w2wt

通過不斷研究和學習歷年真題,為考生沖刺階段復習提分指點迷津,做真題,做歷年真題集,對照考綱查缺補漏,提高實戰素養,制定做題策略,規劃方向;

若資源有問題歡迎追問!

2. 計算機二級考試(c語言)要考些什麼

計算機二級考試(c語言)咐運要考:程序設計/辦公軟體高級應用級。

考核內容包括計算機語言與基礎程序設計能力,要求參試者掌握一門計算機語言,可選類別有高級語言程序設計類、資料庫程序設計類等。

辦公軟體高級應用能力,要求參試者具有計算機應用知識及MS Office辦公軟體的高級應用能力,能夠在實際辦公環境中開展具體應用。

從2013年開始全國計算機等級考漏乎試已從傳統的筆試和上機考試改革成無紙化考試,二級Delphi科目從2013年上半年開始停考。

(2)2016年計算機二級c語言考試真題擴展閱讀

計算機二級包括二級C,二級C++,二級VB,二級VFP,二級Access,二級Java,二級office。其需要學習的內容如下:

1、二級C

DOS命令,計算機組成原理,多媒體、資料庫操作、計算機網路、C語言程序設計、上機考試。

2、二級C++

按照新大綱需要學習的內容有:C++語言概述、C++語言數據類型、運算符和表達式、基本控制語句、數組、指針與引用、函數、類和對象繼承、模板等內容。

3、二級VB

按照新大綱,需要學習的內容有:VB基本概念、集成開發環境、可視化編程方法、基本輸入輸出、常用控制項功能及使用、VB控制結構語句等。

4、二級VFP

需要學習的內容有:資料庫系統與VFP基礎知識、衡搜梁資料庫基本操作、結構化查詢語言SQL、VFP程序設計、設計器和項目管理器使用等。

5、二級Access

按照新大綱,需要學習的內容有:資料庫系統、資料庫和表、資料庫查詢窗體、報表、數據訪問頁、宏、模塊等。

7、二級Java

按照新大綱,需要學習的內容有:JAVA語言概論、JAVA數據類型、運算符和表達式、流程式控制制、類、數組和字元串操作、異常處理、輸入輸出及文件操作、線程與對象串列化、編寫圖形用戶界面、applet程序設計:J2SDK的下載和操作、JAVA的應用。

8、二級office

按照新大綱,需要學習的內容有:計算機的基礎知識,Word的功能和使用 ,Excel的功能和使用,PowerPoint的功能和使用。

3. 急!!歷年國家計算機二級c語言筆試真題答案。

2010年9月全國計算機二級C語言筆試試題:文字版
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。

(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)一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯系是
A)一對一
B)一對多
C)多對多
D)多對一

(9)資料庫設計中反映用戶對數據要求的模式是
A)內模式
B)概念模式
C)外模式
D)設計模式

(10)有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是
A)自然連接
B)交
C)投影
D)並
(11)以下關於結構化程序設計的敘述中正確的是
A)一個結構化程序必須同時由順序、分支、循環三種結構組成
B)結構化程序使用goto語句會很便捷
C)在C語言中,程序的模塊化是利用函數實現的
D)由三種基本結構構成的程序只能解決小規模的問題

(12)以下關於簡單程序設計的步驟和順序的說法中正確的是
A)確定演算法後,整理並寫出文檔,最後進行編碼和上機調試
B)首先確定數據結構,然後確定演算法,再編碼,並上機調試,最後整理文檔
C)先編碼和上機調試,在編碼過程中確定演算法和數據結構,最後整理文檔
D)先寫好文檔,再根據文檔進行編碼和上機調試,最後確定演算法和數據結構

(13)以下敘述中錯誤的是
A) C程序在運行過程中所有計算都以二進制方式進行
B)C程序在運行過程中所有計算都以十進制方式進行
C)所有C程序都需要編譯鏈接無誤後才能運行
D)C程序中整型變數只能存放整數,實型變數只能存放浮點數

(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x

(15)以下選項中能表示合法常量的是
A)整數:1,200
B)實數:1.5E2.0
C )字元斜杠:『\』
D)字元串:"\007"
(16)表達式a+=a-=a=9的值是
A)9
B)_9
C)18
D)0

(17)若變數已正確定義,在if (W)printf(「%d\n,k」);中,以下不可替代W的是
A)a<>b+c
B)ch=getchar()
C)a==b+c
D)a++

(18)有以下程序
#include<stdio.h>
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(」%d\n」,b);

程序運行後的輸出結果是
A)0
B)1
C)2
D)3

(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是
A)switch(x%2) B)switch((int)x/2.0
{case 0: a++; break; {case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{case 0: a++; break; {case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程序
#include <stdio.h>
main()
{int a=1,b=2;
while(a<6){b+=a;a+=2;b%二10;}
printf(」%d,%d\n」,a,b);

程序運行後的輸出結果是
A)5,11
B)7,1
C)7,11
D)6,1

(21)有以下程序
#include<stdio.h>
main()
{int y=10;
while(y--);
printf(」Y=%d\n」,Y);

程序執行後的輸出結果是
A)y=0
B)y= -1
C)y=1
D)while構成無限循環
(22)有以下程序
#include<stdio .h>
main()
{char s〔」=」rstuv";
printf(」%c\n」,*s+2);

程序運行後的輸出結果是
A)tuv
B)字元t的ASCII碼值
C)t
D)出錯
(23)有以下程序
#include<stdio.h>
#include<string.h>
main()
{char x〔〕=」STRING」;
x〔0」=0;x〔1〕=』\0』;x〔2」=』0』;
printf(」%d %d\n」,sizeof(x),strlen(x));

程序運行後的輸出結果是
A)6 1
B)7 0
C)6 3
D)7 1

(24)有以下程序
#include<stdio.h>
Int f(int x);
main()
{int n=1,m;
m=f(f(f(n)));printf(」%d\n」,m);

int f(int x)
{return x*2;}
程序運行後的輸出結果是
A)1
B)2
C)4
D)8

(25)以下程序段完全正確的是
A)int *p; scanf("%d",&p);
B)int *p; scanf(「%d」,p);
C)int k, *p=&k; scanf("%d",p);
D)int k, *p:; *p= &k; scanf(「%d」,p);
(26)有定義語句:int *p[4];以下選項中與此語句等價的是
A)int p[4];
B)int **p;
C)int *(p「4」);
D)int (*p)「4」;

(27)下列定義數組的語句中,正確的是
A)int N=10; B)#define N 10
int x[N]; int x[N];
C)int x[0..10〕; D)int x〔〕;

(28)若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是
A)int a[5]={0};
B)int b[]={0,0,0,0,0};
C)int c[2+3];
D)int i=5,d[i];

(29)有以下程序
#include<stdio.h>
void f(int *p);
main()
{int a〔5〕={1,2,3,4,5},*r=a;
f(r);printf(」%d\n」;*r);

void f(int *p)
{p=p+3;printf(」%d,」,*p);}
程序運行後的輸出結果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函數fun只對下標為偶數的元素進行操作)
# include<stdio.h>
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i<n一1;1+=2)
{k=i;『
for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;
t=a〔i];a〔i]=a〔k];a〔k]=t;


main()
{int aa「10」={1、2、3、4、5、6、7},i;
fun(aa、7);
for(i=0,i<7; i++)printf(」%d,」,aa〔i〕));
printf(」\n」);

程序運行後的輸出結果是
A)7,2,5,4,3,6,1
B)1,6,3,4,5,2,7
C)7,6,5,4,3,2,1
D)1,7,3,5,6;2,1

(31)下列選項中,能夠滿足「若字元串s1等於字元串s2,則執行ST"要求的是
A)if(strcmp(s2,s1)==0)ST;
B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST;
D)if(sl-s2==0)ST;

(32)以下不能將s所指字元串正確復制到t所指存儲空間的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i〕;i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
(33)有以下程序( strcat函數用以連接兩個字元串)
#include<stdio.h>
#include<string .h>
main()
{char a〔20〕=」ABCD\OEFG\0」,b〔〕=」IJK」;
strcat(a,b);printf(」%s\n」,a);

程序運行後的輸出結果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK

(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫字母
#include<stdio.h>
#include<ctype.h>
void fun(char*p)
{int i=0;
while (p[i〕)
{if(p[i]==』 』&& islower(p「i-1」))p[i-1]=p[i-1]-『a』+『A』;
i++;


main()
{char s1〔100〕=」ab cd EFG!」;
fun(s1); printf(」%s\n」,s1);

程序運行後的輸出結果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
(35)有以下程序
#include<stdio.h>
void fun(int x)
{if(x/2>1)fun(x/2);
printf(」%d」,x);

main()
{fun(7);printf(」\n」);}
程序運行後的輸出結果是
A)1 3 7
B)7 3 1
C)7 3
D)3 7

(36)有以下程序
#include<stdio.h>
int fun()
{static int x=1;
x+=1;return x;

main()
{int i;s=1;
for(i=1;i<=5;i++)s+=fun();
printf(」%d\n」,s);

程序運行後的輸出結果是
A)11
B)21
C)6
D)120
(37)有以下程序
#inctude<stdio.h>
#include<stdlib.h>
Main()
{int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(「%d,%d,%d\n」,*a,*b,*c);

程序運行後的輸出結果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3

(38)有以下程序
#include<stdio.h>
main()
{int s,t,A=10;double B=6;
s=sizeof(A);t=sizeof(B);
printf(「%d,%d\n」,s,t);

在VC6平台上編譯運行,程序運行後的輸出結果是
A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下語句
Typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結構體變數
B)可用T定義結構體變數
C)S是struct類型的變數
D)T是struct S類型的變數

(40)有以下程序
#include<stdio.h>
main()
{short c=124;
c=c_______;
printf(「%d\n」、C);

若要使程序的運行結果為248,應在下劃線處填入的是
A)>>2 B)|248 C)&0248 D)<<I
二、填空題(每空2分,共30分)
請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。
(1)一個棧的初始狀態為空。首先將元素5,4,3,2,1依次入棧,然後退棧一次,再將元素 A,B,C,D依次入棧,之後將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為【1】

(2)在長度為n的線性表中,尋找最大項至少需要比較【2】次。

(3)一棵二叉樹有10個度為1的結點,7個度為2的結點,則該二叉樹共有【3】個結點。

(4)僅由順序、選擇(分支)和重復(循環)結構構成的程序是【4】程序。

(5)資料庫設計的四個階段是:需求分析,概念設計,邏輯設計【5】。

(6)以下程序運行後的輸出結果是【6】。
#include<stdio.h>
main()
{int a=200,b=010;
printf(」%d%d\n」,a,b);


(7)有以下程序
#include<stdio.h>
main()
{int x,Y;
scanf(」%2d%ld」,&x,&y);printf(」%d\n」,x+y);

程序運行時輸入:1234567程序的運行結果是【7】。

(8)在C語言中,當表達式值為0時表示邏輯值「假」,當表達式值為【8】時表示邏輯值「真」。
(9)有以下程序
#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(」%d ",n[i]);}
}
程序運行後的輸出結果是【9】。

(10)以下fun函數的功能是:找出具有N個元素的一維數組中的最小值,並作為函數值返回。請填空。(設N已定義)
int fun(int x〔N〕)
{int i,k=0;
for(i=0;i<N;I++)
if(x〔i〕
return x〔k〕;
}

(11)有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(」%d\n」,*r);

int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序運行後的輸出結果是【11】

(12)以下fun函數的功能是在N行M列的整形二維數組中,選出一個最大值作為函數值返回,請填空。(設M,. N已定義)
int fun(int a〔N〕[M))
{int i,j,row=0,col=0;
for(i=0;i<N;I++)
for(j=0;j
if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}
return(【12】):
}
(13)有以下程序
#include<stdio.h>
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n〔j〕=n「i」+1;
printf(」%d\n」,n[1]);

程序運行後的輸出結果是【13】

(14)以下程序的功能是:藉助指針變數找出數組元素中最大值所在的位置並輸出該最大值。請在輸出語句中填寫代表最大值的輸出項。
#include<stdio.h>
main()
{int a〔10〕,*p,*s;
for(p=a;p-a<10;p++)scanf(」%d」,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
printf("max=%d\n」,【14】);


(15)以下程序打開新文件f.txt,並調用字元輸出函數將a數組中的字元寫入其中,請填空。
#include<stdio.h>
main()
{【15】*fp;
char a〔5〕={』1』,』2』,』3』,』4』,』5』},i;
fp=fopen(」f .txt」,」w」);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);

4. 計算機二級考試《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)

5. c語言二級考試題及答案

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計
(考試時間90分鍾,滿分100分)

一、 選擇題(1-10,21-40每題2分,11-20每題1分,共70分)

(1)下列關於棧敘述正確的是
A)棧頂元素最先能被刪除
B)棧頂元素最後才能被刪除
C)棧底元素永遠不能被刪除
D)以上三種說法都不對

(2)下列敘述中正確的是
A)有一個以上根結點的數據結構不一定是非線性結構
B)只有一個根結點的數據結構不一定是線性結構
C)循環鏈表是非線性結構
D)雙向鏈表是非線性結構

(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)
A)3 B)4 C)6 D)7

(4)在軟體開發中,需求分析階段產生的主要文檔是
A)軟體集成測試計劃 B)軟體詳細設計說明書
C)用戶手冊 D)軟體需求規格說明書

(5)結構化程序所要求的基本結構不包括
A)順序結構 B)GOTO跳轉
C)選擇(分支)結構 D)重復(循環)結構

(6)下面描述中錯誤的是
A)系統總體結構圖支持軟體系統的詳細設計
B)軟體設計是將軟體需求轉換為軟體表示的過程
C)數據結構與資料庫設計是軟體設計的任務之一
D)PAD圖是軟體詳細設計的表示工具

(7)負責資料庫中查詢操作的資料庫語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言

(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是
A)1:1聯系 B)1:m聯系
C)m:1聯系 D)m:n聯系

(9)有三個關系R、S和T如下:


則由關系R和S得到關系T的操作是
A)自然連接 B)交 C)除 D)並

(10)定義無符號整數類為UInt,下面可以作為類UInt實例化值的是
A)-369 B)369 C)0.369 D)整數集合{1,2,3,4,5}

(11)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是
A)C語言程序僅可以編譯執行
B)C語言程序僅可以解釋執行
C)C語言程序既可以編譯執行又可以解釋執行
D)以上說法都不對

(12)以下敘述中錯誤的是
A)C語言的可執行程序是由一系列機器指令構成的
B)用C語言編寫的源程序不能直接在計算機上運行
C)通過編譯得到的二進制目標程序需要連接才可以運行
D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

(13)以下選項中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"

(14)以下選項中可用作C程序合法實數的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E

(15)若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
當執行上述程序段,並從鍵盤輸入:name=Lili num=1001<回車>後,name的值為
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

(17)if語句的基本形式是:if(表達式)語句,以下關於「表達式」值的敘述中正確的是
A)必須是邏輯值 B)必須是整數值
C)必須是正數 D)可以是任意合法的數值

(18)有以下程序
#include
main()
{ int x=011;
printf("%d\n",++x);
}
程序運行後的輸出結果是
A)12 B)11 C)10 D)9

(19)有以下程序
#include
main()
{ int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是
A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段
int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下關於程序段執行情況的敘述,正確的是
A)for循環語句固定執行8次 B)當產生的隨機數n為4時結束循環操作
C)當產生的隨機數n為1和2時不做任何操作D)當產生的隨機數n為0時結束程序運行

(21)有以下程序
#include
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序運行後的輸出結果是
A)0 B)3 C)7 D)8

(22)若i和k都是int類型變數,有以下for語句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下面關於語句執行情況的敘述中正確的是
A)循環體執行兩次B)循環體執行一次C)循環體一次也不執行D)構成無限循環

(23)有以下程序
#include
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("\n");
}
程序運行後的輸出結果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)設有定義:doublex[10],*p=x;,以下能給數組x下標為6的元素讀入數據的正確語句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(說明:字母A的ASCII碼值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序運行後的輸出結果是
A) BY B) BT C) YT D) YE

(26)有以下程序段
#include
main()
{ …
while( getchar()!='\n');

}
以下敘述中正確的是
A)此while語句將無限循環
B) getchar()不可以出現在while語句的條件表達式中
C)當執行此while語句時,只有按回車鍵程序才能繼續執行
D)當執行此while語句時,按任意鍵程序就能繼續執行

(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序運行後的輸出結果是
A)3 B)2 C)1 D) 0

(28)若有定義語句:chars[3][10],(*k)[3],*p;,則以下賦值語句正確的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
當執行程序時從鍵盤上輸入Hello Beijing<回車>,則程序的輸出結果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i<>
}
在程序中下劃線處應填入的是
A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序運行時若輸入:
how are you? I am fine<回車>
則輸出結果是
A)how are you? B)how I am fine are you? I am fine
C)how are you? I am fine D)row are you?

(32)設有如下函數定義
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是
A)2 B)3 C)4 D)5

(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行後的輸出結果是 A)3 B)6 C)8 D)12

(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序運行後的輸出結果是 A)0 B)10 C)30 D)64

(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序運行後的輸出結果是 A)197 B)143 C)33 D)28

(36)設有定義:struct {charmark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下語句中錯誤的是
A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序
#include
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序運行後的輸出結果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序
#include
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序運行後的輸出結果是 A)10 B)11 C)20 D)21

(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序運行後的輸出結果是 A)32 B)16 C)1 D)0

(40)設fp已定義,執行語句fp=fopen("file","w");後,以下針對文本文件file操作敘述的選項中正確的是
A)寫操作結束後可以從頭開始讀 B)只能寫不能讀
C)可以在原有內容後追加寫 D)可以隨意讀和寫

二、填空題
(1)有序線性表能進行二分查找的前提是該線性表必須是 【1】 存儲的。

(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則後序遍歷結果為 【2】 。

(3)對軟體設計的最小單位(模塊或程序單元)進行的測試通常稱為【3】 測試

(4)實體完整性約束要求關系資料庫中元組的 【4】 屬性值不能為空。

(5)在關系A(S,SN,D)和關系B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵字是D,則稱 【5】 是關系A的外碼。


(6)以下程序運行後的輸出結果是 【6】。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}

(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序運行時從鍵盤輸入12<回車>,則輸出結果為 【7】 。

(8)有以下程序(說明:字元0的ASCII碼值為48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序運行時從鍵盤輸入48<回車>,則輸出結果為 【8】 。

(9)有以下函數
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
執行調用語句prt('*',24);後,函數共輸出了 【9】 行*號。

(10)以下程序運行後的輸出結果是 【10】。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

(11)己知a所指的數組中有N個元素。函數fun的功能是,將下標k(k>0)開始的後續元素全部向前移動一個位置。請填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}

(12)有以下程序,請在 【12】 處填寫正確語句,使程序可正常編譯運行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}

(13)以下程序運行後的輸出結果是 【13】。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}

(14)以下程序運行後的輸出結果是 【14】。
#include
#include
#include
main()
{ char *p; int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--) putchar(*(p+i));
printf("\n-"); free(p);
}

(15)以下程序運行後的輸出結果是 【15】。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計答案

一.選擇題1-5 ABDDB
6-10 ACDCB 11-15 ADBAA
16-20 ADCAD 21-25 BDBCD
26-30 CDCCC 31-35 BBBDB
36-40 CDDCB
二,填空題
1) 順序 2) DEBFCA 3) 單元測試 4) 主鍵 5) D 6) 3 7) 1217
8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715
14) e(E)moclew 15) 123456
2010年9月全國計算機等級考試二級C筆試試卷答案
一、選擇題
1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB
21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空
1.1DCBA2345 2.n-1 3.25 4.結構化 5.物理設計 6.2008
7.15 8.非0 9. 1 4 13 40 10.i 11.2
12.a[row][col] 13.3 14.*s 15.FILE

熱點內容
安卓的face怎麼使用 發布:2024-11-26 15:05:50 瀏覽:88
存儲魔力象限2016 發布:2024-11-26 15:04:47 瀏覽:865
QQ填寫驗證碼是歷史密碼是什麼 發布:2024-11-26 15:04:16 瀏覽:505
vs2017編譯文件無效或損毀 發布:2024-11-26 15:04:16 瀏覽:597
騰訊微信如何更改登錄密碼 發布:2024-11-26 14:57:46 瀏覽:21
pythondict參數 發布:2024-11-26 14:49:41 瀏覽:105
ubuntu安裝linux源碼 發布:2024-11-26 14:48:52 瀏覽:744
百度雲解壓密碼忘記 發布:2024-11-26 14:35:36 瀏覽:863
最差擬合演算法 發布:2024-11-26 14:21:17 瀏覽:739
指令式編程 發布:2024-11-26 14:16:24 瀏覽:19