當前位置:首頁 » 編程語言 » 中國二級c語言題庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

中國二級c語言題庫

發布時間: 2022-05-23 05:32:33

Ⅰ 求全國計算機等級考試二級c語言的真題

09年3月全國計算機等級考試二級C筆試真題(附答案)(考試時間90分鍾,滿分100分)一、選擇題(1)下列敘述中正確的是 A) 棧是先進先出(FIFO)的線性表B) 隊列是先進先出(FIFO)的線性表C) 循環隊列是非線性結構D) 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構(2)支持子程序調用的數據結構是 A) 棧 B) 樹 C) 隊列 D)二叉樹(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是 A)10 B)8 C)6 D)4(4)下列排序方法中,最壞情況下比較次數最少的是 A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於應用軟體的是 A)編譯軟體 B)操作系統 C)教務管理系統 D)匯編程序(6)下面敘述中錯誤的是A)軟體測試的目的是發現錯誤並改正錯誤B)對被調試的程序進行「錯誤定位」是程序調試的必要步驟C)程序調試通常也稱為DebugD)軟體測試應嚴格執行測試計劃,排除測試的隨意性(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是 A)提高耦合性降低內聚性有利於提高模塊的獨立性B)降低耦合性提高內聚性有利於提高模塊的獨立性C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度D)內聚性是指模塊間互相連接的緊密程度(8)資料庫應用系統中的核心問題是A)資料庫設計 B)資料庫系統設計C)資料庫維護 D) 資料庫管理員培訓(9)有兩個關系R,S如下:R SA B C A Ba 3 2 a 3b 0 1 b 0c 2 1 c 2 由關系R通過運算得到關系S,則所使用的運算為A) 選擇 B)投影 C) 插入 D)連接(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為A) 屬性 B)鍵 C) 關系 D) 域(11)以下選項中合法的標識符是 A) 1-1 B)1—1 C)-11 D)1--(12)若函數中有定義語句:int k;,則 A)系統將自動給k賦初值0 B)這時k中值無定義 C)系統將自動給k賦初值-1 D)這時k中無任何值(13)以下選項中,能用作數據常量的是 A)o115 B) 0118 C)1.5e1.5 D) 115L(14)設有定義:int x=2; ,以下表達式中,值不為6的是A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12; double y=3.141593; printf(「%d%8.6f」,x,y);的輸出結果是A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593(16)若有定義語句:double x,y,*px,*py,執行了px=&x, py=&y;之後,正確的輸入語句是 A)scanf(「%f%f」,x,y); B) scanf(「%f%f」,&x,&y); C) scanf(「%lf%le」,px,py); D) scanf(「%lf%lf」,x,y);(17)以下是if語句的基本形式:if (表達式) 語句,其中表達式A)必須是邏輯表達式 B)必須是關系表達式C)必須是邏輯表達式或關系表達式 D)可以是任意合法的表達式(18)有以下程序#include <stdio.h>main(){int x;</p><p>scanf(「%d」,&x);</p><p>if(x<=3); else</p><p>if(x!=10) printf(「%d\n」,x);</p><p>}程序運行時,輸入的值在哪個范圍才會有輸出結果A)不等於10的整數 B)大於3且不等於10的整數C) 大於3或等於10的整數 D)小於3的整數(19)有以下程序#include<stdio.h>Main(){ int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3) printf(「%d,%d,%d\n」,a,b,c);else printf(「%d,%d,%d\n」,a,b,c);else printf(「%d,%d,%d\n」,a,b,c);}程序運行後的輸出結果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的變數已正確定義for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(「*」);程序段的輸出結果是A)******** B)**** C)** D)*(21)有以下程序#include<stdio.h>main(){char *s=(「ABC);</p><p>do</p><p>{printf(「%d」,*s%10);s++;</p><p>}while(*s);}注意,字母A的ASCII碼值為65。程序運行後的輸出結果是A)5670 B)656667 C)567 D)ABC(22)設變數已正確定義,以下不能統計出一行中輸入字元個數(不包含回車符)的程序段是A)n=0;while((ch=getchar())!=』\n』)n++; B) n=0;while(getchar()!=』\n』)n++;C)for(n=0; getchar()!=』\n』;n++); D)n=0;for(ch=getchar();ch!=』\n』;n++);(23)有以下程序#include<stdio.h>main(){ int a1,a2;char c1,c2;scanf(「%d%c%d%c」,&a1,&c1,&a2,&c2);printf(「%d,%c,%d,%c」,&1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的是為34,c1的值為字元a,c2的值為字元b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下 代表空格,<CR>代表回車)A)12a34b<CR> B)12 a 34 b<CR>C)12,a,34,b<CR> D)12 a34 b<CR>(24)有以下程序#include<stdio.h>int f(int x,int y){return()y-x)*x);}main(){int a=3,b=4,c=5,d;</p><p>d=f(f(a,b),f(a,c));</p><p>printf(「%d\n」,d);</p><p>}程序運行後的輸出結果是A)10 B)9 C)8 D)7(25)有以下程序#include<stdio.h>void fun(char *s){while(*s)</p><p> { if(*s%2==0) printf(「%c」,*s);</p><p>s++;</p><p> }}main(){ char a[]={「good」}; fun(a);printf(「\n」);}注意:字母a的ASCII碼值為97,程序運行後的輸出結果是A)d B)go C)god D)good(26)有以下程序#include <stdio.h>void fun( int *a,int *b){int *c;</p><p>c=a;a=b;b=c;</p><p>}main(){int x=3,y-5,*P=&x,*q=&y;</p><p> fun(p,q);printf(「%d,%d,」,*p,*q);</p><p>fun(&x,&y);printf(「%d,%d\n」,*p,*q);</p><p>}程序運行後的輸出結果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include <stdio.h>void f(int *p,int *q );main(){ int m=1,n=2,*r=&m; f(r,&n);printf(「%d,%d」,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序運行後輸出的結果是A)1,3 B)2,3 C)1,4 D)1,2(28)以下函數按每行8個輸出數組中的數據void fun( int *w,int n){ int i; for(i=0;i<n;i++) {________</p><p> printf(「%d」,w);</p><p> } printf(「\n」);}下劃線處應填入的語句是A)if(i/8==0)print(「\n」); B) if(i/8==0)continue;C) if(i%8==0)print(「\n」); D) if(i%8==0)continue;(29)若有以下定義 int x[10],*pt=x;則對x數組元素的正確應用是A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3 (30)設有定義:char s[81];int i=10;,以下不能將一行(不超過80個字元)帶有空格的字元串真確讀入的語句或語句組是A gets(s) B)while((s[i++]=getchar())!=」\n」;s=」\0」;C)scanf(「%s」,s);D)do{scanf(「%c」,&s);}while(s[i++]!=」\n」);s=」\0」;(31)有以下程序#include <stdio.h>main(){ char *a[ ]={「abcd」,」ef」,」gh」,」ijk」};int I; for (i=0;i<4;i++) printf(「%c」,*a);}程序運行後輸出的結果是A)aegi B)dfhk C)abcd D)abcdefghijk(32)以下選項中正確的語句組是A)char s[];s=」BOOK!」; B) char *s;s={」BOOK!」};C)char s[10];s=」BOOK!」; D) char *s;s=」BOOK!」;(33)有以下程序#include <stdio.h>int fun{int x,int y}{ if(x==y) return(x); else return((x+y)/2)}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)設函數中有整型變數n,為保證其在未賦值的情況下初值為0,應選擇的存儲類別是A)auto B) register C)static D)auto或register(35)有以下程序#include <stdio.h>int b=2;int fun(int *k){ b=*k+b;return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I; for(i=2;i<4;i++) {b=fun(&a)+b;printf(「%d」,b);} printf(「\n」);}程序運行後輸出的結果是A)10 12 B)8 10 C)10 28 D)10 16(36)有以下程序#include <stdio.h>#define PT 3.5;#define S(x) PT*x*x;main(){ int a=1, b=2; printf(「%4.1f\n」,S(a+b));}程序運行後輸出的結果是A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結果(37)有以下程序#include <stdio.h>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)2,3 C)3,4 D)4,1(38)設有宏定義:#include IsDIV(k,n) ((k%n==1)?1:0且變數m已正確定義並賦值,則宏調用:IsDIV(m,5)&& IsDIV(m,7)為真時所要表達的是A)判斷m是否能被5或者7整除B)判斷m是否能被5和7整除C)判斷m被5或者7整除是否餘1D)判斷m被5和7整除是否餘1(39)有以下程序#include <stdio.h>main(){ int a=5,b=1,t; t=(a<<2|b); printf(「%d\n」,t) }程序運行後的輸出結果是A)21 B)11 C)6 D)1(40)有以下程序#include <stdio.h>main(){ FILE *f; f=fopen(「filea.txt」,」w」); fprintf(f,」abc」); fclose(f);}若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt中的內容為A) helloabc B)abclo C)abc D)abchello 二、填空題(每空2分,共30分) 請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有 【1】 個元素。(2)軟體測試可分為白盒測試和黑盒測試。基本路徑測試屬於 【2】 測試。(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和 【3】 。(4)資料庫系統的核心是 【4】(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是 【5 】框。(6)表達式(int)((double)(5/2)+2.5)的值是【6】(7)若變數x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句printf(【7】,x/y);補充完整,使其輸出的計算結果形式為:x/y=11(8)有以下程序#include <stdio.h>main( ){ char c1,c2; scanf(「&c」,&c1); while(c1<65||c1>90) scanf(「&c」,&c1); c2=c1+32; printf(「&c, &c\n」,c1,c2);}程序運行輸入65回車後,能否輸出結果、結束運行(請回答能或不能)【8】 。 (9)以下程序運行後的輸出結果是【9】#include <stdio.h>main( ){int k=1,s=0;</p><p>do{</p><p>if{((k&2)!=0)continue;</p><p>s+=k;k++;</p><p>}while(k)10);printf(「s=&d/n」,s);} (10)下列程序運行時,若輸入labced12df<回車> 輸出結果為【10】 #include <stdio.h>main( ){char a =0,ch;</p><p>while((ch=getchar())!=』\n』)</p><p>{if(a&2!=0&&(ch>』a』&&ch<=』z』)) ch=ch-『a』+』A』;</p><p>a++;putchar(ch);</p><p>}printf(「\n」);}(11)有以下程序,程序執行後,輸出結果是【11】#include <stdio.h>void fun (int *a){a[0=a[1];]}main(){int a[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--) fun{&a};for(i=0;i<10;i++) printf(「&d」,a);printf(「\n」);}(12)請將以下程序中的函數聲明語句補充完整#include <stdio.h>int【12】 ;main( ){int x,y,(*p)();</p><p>p=max;</p><p>printf(「&d\n」,&x,&y);</p><p>}Int max(int a,int b){return (a>b/a:b);}(13)以下程序用來判斷指定文件是否能正常打開,請填空#include <stdio.h>main( ){FILE *fp;</p><p>if (((fp=fopen(「test.txt」,」r」))==【13】))</p><p>printf(「未能打開文件!\n」);</p><p>else</p><p>printf(「文件打開成功!\n」);</p><p>(14)下列程序的運行結果為【14】</p><p>#include <stdio.h></p><p>#include <string.h></p><p>struct A</p><p>{int a;char b[10];double c;};void f (struct A *t);main(){struct A a=(1001,」ZhangDa」,1098,0);</p><p>f(&a);printf(「&d,&s,&6,if\n」,a.a,a.b,a.c);</p><p>}void f(struct A *t){strcpy(t->b,」ChangRong」); }(15)以下程序把三個NODETYPE型的變數鏈接成一個簡單的鏈表,並在while循環中輸出鏈表結點數據域中的數據,請填空#include <stdio.h>struct node{int data; struct node *next;};typedef struct node NODETYPE;main(){NODETYPE a,b,c,*h,*p;</p><p>a. data=10;b.data=20;c.data=30;h=&a;</p><p>b. next=&b;b.next=&c;c.next=』\0』;</p><p>p=h;</p><p>while(p){printf(「&d」,p->data);【15】;}} 2009年4月NCRE二級C參考答案選擇題:1~10: DACDC ABABC11~20:CBDDA CDBCB21~30:CDABA BACBC31~40:ADBCC CBDAC 填空題:(1)19(2)白盒(3)順序結構(4)資料庫管理系統(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(int a,int b)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next

Ⅱ 全國計算機二級c語言每年考試題庫都一樣嗎

題庫的變化不大,題型都是相同的。計算機二級考試包含:程序設計/辦公軟體高級應用,考核內容包括計算機語言與基礎程序設計能力,要求參試者掌握一門計算機語言,可選類別有高級語言程序設計類、資料庫程序設計類等;

辦公軟體高級應用能力,要求參試者具有計算機應用知識及MS Office辦公軟體的高級應用能力,能夠在實際辦公環境中開展具體應用。從2013年開始全國計算機等級考試已從傳統的筆試和上機考試改革成無紙化考試,二級Delphi科目從2013年上半年開始停考。

(2)中國二級c語言題庫擴展閱讀

報考二級6個科目考試的新生,全部採用無紙化考試(即全部上機考試),取代傳統的考試模式(筆試加上機)。參加二級7個科目補考的老生,仍按照傳統模式參加補考。無紙化考試中,傳統考試的筆試部分被移植到計算機上完成,考核內容和要求不變。

無紙化考試時間為120分鍾,滿分100分,總分達到60分可以獲得合格證書。沒有獲得合格證書的考生,無補考,下一次需重新以新考生身份報名參加考試。

Ⅲ 全國計算機等級考試二級C語言的考試題目都是從《C語言題庫》裡面抽取的題目嗎

全國計算機等級考試二級C語言的考試題目的小題不是從《C語言題庫》中抽取的,後面的大題即編程題全部是從最近的一年的《C語言題庫》中抽取的。考題大部分是C語言,少部分是演算法與數據結構裡面的東西。就算不是《C語言題庫》題庫里的題,但是題型都差不多的。

c語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序設計中備受青睞。C語言編譯器普遍存在於各種不同的操作系統中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了眾多後來的編程語言,例如C++、Objective-C、Java、C#等。

Ⅳ 全國高等學校計算機二級c語言(江西考區)考試真題

09年3月全國計算機等級考試二級C筆試真題(附答案)

(考試時間90分鍾,滿分100分)

一、選擇題

(1)下列敘述中正確的是

A) 棧是先進先出(FIFO)的線性表

B) 隊列是先進先出(FIFO)的線性表

C) 循環隊列是非線性結構

D) 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構

(2)支持子程序調用的數據結構是

A) 棧 B) 樹 C) 隊列 D)二叉樹

(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是

A)10 B)8 C)6 D)4

(4)下列排序方法中,最壞情況下比較次數最少的是

A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序

(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於應用軟體的是

A)編譯軟體 B)操作系統 C)教務管理系統 D)匯編程序

(6)下面敘述中錯誤的是

A)軟體測試的目的是發現錯誤並改正錯誤

B)對被調試的程序進行「錯誤定位」是程序調試的必要步驟

C)程序調試通常也稱為Debug

D)軟體測試應嚴格執行測試計劃,排除測試的隨意性

(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是

A)提高耦合性降低內聚性有利於提高模塊的獨立性

B)降低耦合性提高內聚性有利於提高模塊的獨立性

C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

D)內聚性是指模塊間互相連接的緊密程度

(8)資料庫應用系統中的核心問題是

A)資料庫設計 B)資料庫系統設計

C)資料庫維護 D) 資料庫管理員培訓

(9)有兩個關系R,S如下:

R S

A B C A B

a 3 2 a 3

b 0 1 b 0

c 2 1 c 2

由關系R通過運算得到關系S,則所使用的運算為

A) 選擇 B)投影 C) 插入 D)連接

(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為

A) 屬性 B)鍵 C) 關系 D) 域

(11)以下選項中合法的標識符是

A) 1-1 B)1—1 C)-11 D)1--

(12)若函數中有定義語句:int k;,則

A)系統將自動給k賦初值0 B)這時k中值無定義

C)系統將自動給k賦初值-1 D)這時k中無任何值

(13)以下選項中,能用作數據常量的是

A)o115 B) 0118 C)1.5e1.5 D) 115L

(14)設有定義:int x=2; ,以下表達式中,值不為6的是

A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2

(15)程序段:int x=12; double y=3.141593; printf(「%d%8.6f」,x,y);的輸出結果是

A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593

(16)若有定義語句:double x,y,*px,*py,執行了px=&x, py=&y;之後,正確的輸入語句是

A)scanf(「%f%f」,x,y); B) scanf(「%f%f」,&x,&y);

C) scanf(「%lf%le」,px,py); D) scanf(「%lf%lf」,x,y);

(17)以下是if語句的基本形式:

if (表達式) 語句,其中表達式

A)必須是邏輯表達式 B)必須是關系表達式

C)必須是邏輯表達式或關系表達式 D)可以是任意合法的表達式

(18)有以下程序

#include <stdio.h>

main()

{int x;

scanf(「%d」,&x);

if(x<=3); else

if(x!=10) printf(「%d\n」,x);

}

程序運行時,輸入的值在哪個范圍才會有輸出結果

A)不等於10的整數 B)大於3且不等於10的整數

C) 大於3或等於10的整數 D)小於3的整數

(19)有以下程序

#include<stdio.h>

Main()

{ int a=1,b=2,c=3,d=0;

if(a= =1 &&b++= =2)

if(b!=2 || c--!=3)

printf(「%d,%d,%d\n」,a,b,c);

else printf(「%d,%d,%d\n」,a,b,c);

else printf(「%d,%d,%d\n」,a,b,c);

}

程序運行後的輸出結果是

A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1

(20)以下程序中的變數已正確定義

for(i=0;i<4;i++,i++

for(k=1;k<3;k++);printf(「*」);

程序段的輸出結果是

A)******** B)**** C)** D)*

(21)有以下程序

#include<stdio.h>

main()

{char *s=(「ABC);

do

{printf(「%d」,*s%10);s++;

}while(*s);

}

注意,字母A的ASCII碼值為65。程序運行後的輸出結果是

A)5670 B)656667 C)567 D)ABC

(22)設變數已正確定義,以下不能統計出一行中輸入字元個數(不包含回車符)的程序段是

A)n=0;while((ch=getchar())!=』\n』)n++; B) n=0;while(getchar()!=』\n』)n++;

C)for(n=0; getchar()!=』\n』;n++); D)n=0;for(ch=getchar();ch!=』\n』;n++);

(23)有以下程序

#include<stdio.h>

main()

{ int a1,a2;char c1,c2;

scanf(「%d%c%d%c」,&a1,&c1,&a2,&c2);

printf(「%d,%c,%d,%c」,&1,c1,a2,c2);

}

若想通過鍵盤輸入,使得a1的值為12,a2的是為34,c1的值為字元a,c2的值為字元b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下 代表空格,<CR>代表回車)

A)12a34b<CR> B)12 a 34 b<CR>

C)12,a,34,b<CR> D)12 a34 b<CR>

(24)有以下程序

#include<stdio.h>

int f(int x,int y)

{return()y-x)*x);}

main()

{int a=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf(「%d\n」,d);

}

程序運行後的輸出結果是

A)10 B)9 C)8 D)7

(25)有以下程序

#include<stdio.h>

void fun(char *s)

{while(*s)

{ if(*s%2==0) printf(「%c」,*s);

s++;

}

}

main()

{ char a[]={「good」};

fun(a);printf(「\n」);

}

注意:字母a的ASCII碼值為97,程序運行後的輸出結果是

A)d B)go C)god D)good

(26)有以下程序

#include <stdio.h>

void fun( int *a,int *b)

{int *c;

c=a;a=b;b=c;

}

main()

{int x=3,y-5,*P=&x,*q=&y;

fun(p,q);printf(「%d,%d,」,*p,*q);

fun(&x,&y);printf(「%d,%d\n」,*p,*q);

}

程序運行後的輸出結果是

A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3

(27)有以下程序

#include <stdio.h>

void f(int *p,int *q );

main()

{ int m=1,n=2,*r=&m;

f(r,&n);printf(「%d,%d」,m,n);

}

void f(int *p,int *q)

{p=p+1;*q=*q+1;}

程序運行後輸出的結果是

A)1,3 B)2,3 C)1,4 D)1,2

(28)以下函數按每行8個輸出數組中的數據

void fun( int *w,int n)

{ int i;

for(i=0;i<n;i++)

{________

printf(「%d」,w);

}

printf(「\n」);

}

下劃線處應填入的語句是

A)if(i/8==0)print(「\n」); B) if(i/8==0)continue;

C) if(i%8==0)print(「\n」); D) if(i%8==0)continue;

(29)若有以下定義

int x[10],*pt=x;

則對x數組元素的正確應用是

A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3

(30)設有定義:char s[81];int i=10;,以下不能將一行(不超過80個字元)帶有空格的字元串真確讀入的語句或語句組是

A gets(s)

B)while((s[i++]=getchar())!=」\n」;s=」\0」;

C)scanf(「%s」,s);

D)do{scanf(「%c」,&s);}while(s[i++]!=」\n」);s=」\0」;

(31)有以下程序

#include <stdio.h>

main()

{ char *a[ ]={「abcd」,」ef」,」gh」,」ijk」};int I;

for (i=0;i<4;i++) printf(「%c」,*a);

}

程序運行後輸出的結果是

A)aegi B)dfhk C)abcd D)abcdefghijk

(32)以下選項中正確的語句組是

A)char s[];s=」BOOK!」; B) char *s;s={」BOOK!」};

C)char s[10];s=」BOOK!」; D) char *s;s=」BOOK!」;

(33)有以下程序

#include <stdio.h>

int fun{int x,int y}

{ if(x==y) return(x);

else return((x+y)/2)

}

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)設函數中有整型變數n,為保證其在未賦值的情況下初值為0,應選擇的存儲類別是

A)auto B) register C)static D)auto或register

(35)有以下程序

#include <stdio.h>

int b=2;

int fun(int *k)

{ b=*k+b;return(b);}

main()

{ int a[10]={1,2,3,4,5,6,7,8},I;

for(i=2;i<4;i++) {b=fun(&a)+b;printf(「%d」,b);}

printf(「\n」);

}

程序運行後輸出的結果是

A)10 12 B)8 10 C)10 28 D)10 16

(36)有以下程序

#include <stdio.h>

#define PT 3.5;

#define S(x) PT*x*x;

main()

{ int a=1, b=2; printf(「%4.1f\n」,S(a+b));}

程序運行後輸出的結果是

A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結果

(37)有以下程序

#include <stdio.h>

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)2,3 C)3,4 D)4,1

(38)設有宏定義:#include IsDIV(k,n) ((k%n==1)?1:0且變數m已正確定義並賦值,則宏調用:IsDIV(m,5)&& IsDIV(m,7)為真時所要表達的是

A)判斷m是否能被5或者7整除

B)判斷m是否能被5和7整除

C)判斷m被5或者7整除是否餘1

D)判斷m被5和7整除是否餘1

(39)有以下程序

#include <stdio.h>

main()

{ int a=5,b=1,t;

t=(a<<2|b); printf(「%d\n」,t)

}

程序運行後的輸出結果是

A)21 B)11 C)6 D)1

(40)有以下程序

#include <stdio.h>

main()

{ FILE *f;

f=fopen(「filea.txt」,」w」);

fprintf(f,」abc」);

fclose(f);

}

若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt中的內容為

A) helloabc B)abclo C)abc D)abchello

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。

(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有 【1】 個元素。

(2)軟體測試可分為白盒測試和黑盒測試。基本路徑測試屬於 【2】 測試。

(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和 【3】 。

(4)資料庫系統的核心是 【4】

(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是 【5 】框。

(6)表達式(int)((double)(5/2)+2.5)的值是【6】

(7)若變數x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句printf(【7】,x/y);補充完整,使其輸出的計算結果形式為:x/y=11

(8)有以下程序

#include <stdio.h>

main( )

{ char c1,c2;

scanf(「&c」,&c1);

while(c1<65||c1>90) scanf(「&c」,&c1);

c2=c1+32;

printf(「&c, &c\n」,c1,c2);

}

程序運行輸入65回車後,能否輸出結果、結束運行(請回答能或不能)【8】 。

(9)以下程序運行後的輸出結果是【9】

#include <stdio.h>

main( )

{int k=1,s=0;

do{

if{((k&2)!=0)continue;

s+=k;k++;

}while(k)10);

printf(「s=&d/n」,s);

}

(10)下列程序運行時,若輸入labced12df<回車> 輸出結果為【10】

#include <stdio.h>

main( )

{char a =0,ch;

while((ch=getchar())!=』\n』)

{if(a&2!=0&&(ch>』a』&&ch<=』z』)) ch=ch-『a』+』A』;

a++;putchar(ch);

}

printf(「\n」);

}

(11)有以下程序,程序執行後,輸出結果是【11】

#include <stdio.h>

void fun (int *a)

{a[0=a[1];]}

main()

{int a[10]={10,9,8,7,6,5,4,3,2,1},i;

for(i=2;i>=0;i--) fun{&a};

for(i=0;i<10;i++) printf(「&d」,a);

printf(「\n」);

}

(12)請將以下程序中的函數聲明語句補充完整

#include <stdio.h>

int【12】 ;

main( )

{int x,y,(*p)();

p=max;

printf(「&d\n」,&x,&y);

}

Int max(int a,int b)

{return (a>b/a:b);}

(13)以下程序用來判斷指定文件是否能正常打開,請填空

#include <stdio.h>

main( )

{FILE *fp;

if (((fp=fopen(「test.txt」,」r」))==【13】))

printf(「未能打開文件!\n」);

else

printf(「文件打開成功!\n」);

(14)下列程序的運行結果為【14】

#include <stdio.h>

#include <string.h>

struct A

{int a;char b[10];double c;};

void f (struct A *t);

main()

{struct A a=(1001,」ZhangDa」,1098,0);

f(&a);printf(「&d,&s,&6,if\n」,a.a,a.b,a.c);

}

void f(struct A *t)

{strcpy(t->b,」ChangRong」); }

(15)以下程序把三個NODETYPE型的變數鏈接成一個簡單的鏈表,並在while循環中輸出鏈表結點數據域中的數據,請填空

#include <stdio.h>

struct node

{int data; struct node *next;};

typedef struct node NODETYPE;

main()

{NODETYPE a,b,c,*h,*p;

a. data=10;b.data=20;c.data=30;h=&a;

b. next=&b;b.next=&c;c.next=』\0』;

p=h;

while(p){printf(「&d」,p->data);【15】;}

}

2009年4月NCRE二級C參考答案

選擇題:

1~10: DACDC ABABC

11~20:CBDDA CDBCB

21~30:CDABA BACBC

31~40:ADBCC CBDAC

填空題:

(1)19

(2)白盒

(3)順序結構

(4)資料庫管理系統(DBMS)

(5)菱形

(6)4

(7)"x/y=%d"

(8)能

(9)s=0

(10)1AbCeDf2dF

(11)7777654321

(12)max(int a,int b)

(13)NULL

(14)1001,ChangRong,1098.0

(15)p=p—>next

Ⅳ 急!!歷年國家計算機二級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);

Ⅵ 准備考c語言計算機二級,用什麼軟體刷題好

計算機二級,用什麼軟體刷題好:

首先我們先看下軟體下圖1、2展示,最後是軟體!

1、全國計算機等級考試超級模擬軟體。

匯聚了多年開發全國計算機等級考試模擬軟體的豐富經驗,並綜合有經驗的命題專家、教授和全國各地考點一線教師的建議基礎上研製而成。本套軟體採用模擬考試形式,以大量的習題練習,強化考生的應考能力。

2、捷成全國計算機等級考試練習系統。

上機考試系統提供了歷屆考試題100套,並附有試題分析和參考答案,可以幫助考生熟悉考試模式,提高應試能力,測試實際操作和應變能力,自己評定成績,對正式考試時能否通過進行初步的估計。

3、未來教育2017二級msoffice模擬軟體

以其模式的高專業度,題庫權威度而聞名業界,它聚合歷年真題加以分析從而提出權威預測,效果非常不錯。

Ⅶ 全國計算機等級考試二級c語言考的是題庫里的題嗎都是歷年的題庫嗎題庫在哪買,會考原題嗎

全國計算機等級考試二級c語言考的不都是題庫里的題,筆試題基本不是題庫裡面的,上機題目都是從題庫里抽取,題庫有100套。

筆試沒有所謂的題庫,一般參考書都是往年例題 ,可以從網上買來做練習。

《全國計算機等級考試二級C語言》可以作為參加全國計算機等級考試——二級C語言考試的復慣用書,也可作為學習C語言的參考書。

上機題目全部是從最近的一年的《C語言題庫》中抽取的。考題大部分是C語言,少部分是演算法與數據結構裡面的東西。

拓展資料:

全國計算機等級考試(National Computer Rank Examination,簡稱NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查應試人員計算機應用知識與技能的全國性計算機水平考試體系。

其中c語言程序設計的考試內容包括:

(1)單項選擇題,40題,40分(含公共基礎知識部分10分);

(2)程序填空題,2~3個空,18分;

(3)程序改錯題,2~3處錯誤,18分;

(4)程序設計題,1題,24分。

完全採取上機考試形式。各科上機考試時間均為 120 分鍾,滿分 100 分。

獲證條件:總分不低於 60 分。

Ⅷ 急求!!!全國計算機等級考試二級C機考題庫 附答案的最好 !急!!!!

1: 第1題 m個人的成績存放在score數組中,請編寫函數fun,它的功能是:將低於平均分的人作為函數值返回,將低於平均分的分數放在below所指定的函數中。

答案:

int fun(int score[],int m,int below[])

{

int i,k=0,aver=0;

for(i=0;i<m;i++)

aver+=score[i];

aver/=m;

for(i=0;i<m;i++)

if(score[i]<aver)

{

below[k]=score[i];

k++;

}

return k;

}

2: 第2題請編寫函數fun,它的功能是:求出1到100之內能北7或者11整除,但不能同時北7和11整除的所有證書,並將他們放在a所指的數組中,通過n返回這些數的個數。

答案:

void fun(int *a, int *n)

{

int i,j=0;

for(i=2;i<1000;i++)

if ((i%7==0 || i%11==0) && i%77!=0)

a[j++]=i;

*n=j;

}

3: 第3題 請編寫函數void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶數的各整數,並按從小到大的順序放在pp所指的數組中,這些除數的個數通過形參n返回。

答案:

void fun(int x, int pp[ ], int *n)

{

int i=1,j=0;k=0,*t=pp;

for(i=0;i<=x;i++)

if(i%2!=0)

{

t[j]=I;

j++;

}

for(i=0;i<j;i++)

if(x%t[i]==0)

{

pp[k]=t[i];

k++;

}

*n=k;

}

4: 第4題 請編寫一個函數void fun(char *tt,int pp[]),統計在tt字元中"a"到"z"26各字母各自出現的次數,並依次放在pp所指的數組中。

答案:

void fun(char *tt, int pp[])

{

int i;

for (i=0;i<26;i++)

pp[i]=0;

while (*tt)

{

switch (*tt)

{

case 『a』: pp[0]++;break;

case 『b』: pp[1]++;break;

case 『c』: pp[2]++;break;

case 『d』: pp[3]++;break;

case 『e』: pp[4]++;break;

case 『f』: pp[5]++;break;

case 『g』: pp[6]++;break;

case 『h』: pp[7]++;break;

case 『i』: pp[8]++;break;

case 『j』: pp[9]++;break;

case 『k』: pp[10]++;break;

case 『l』: pp[11]++;break;

case 『m』: pp[12]++;break;

case 『n』: pp[12]++;break;

case 『o』: pp[14]++;break;

case 『p』: pp[15]++;break;

case 『q』: pp[16]++;break;

case 『r』: pp[17]++;break;

case 『s』: pp[18]++;break;

case 『t』: pp[19]++;break;

case 『u』: pp[20]++;break;

case 『v』: pp[21]++;break;

case 『w』: pp[22]++;break;

case 『x』: pp[23]++;break;

case 『y』: pp[24]++;break;

case 『z』: pp[25]++;break;

}

tt++;

}

}

5: 第5題 請編寫一個函數void fun(int m,int k,int xx[]),該函數的功能是:將大於整數m且緊靠m的k各素數存入xx所指的數組中。

答案:

void fun(int m, int k, int xx[])

{

int g=0,I,j,flag=1;

for(i=m+1;i<m*m;i++)

{

for(j=0;j<I;j++)

{

if(i%j!=0)

flag=1;

else

{

flag=0;

break;

}

}

if (flag==1 && j>=i)

{

if (k>=0)

{

xx[g++]=i;

k--;

}

else

break;

}

}

}

6: 第6題 請編寫一個函數void fun(char a[],char[],int n),其功能是:刪除以各字元串中指定下標的字元。其中,a指向原字元串,刪除後的字元串存放在b所指的數組中,n中存放指定的下標。

答案:

void fun(char a[],char b[], int n)

{

int I,j=0;

for (i=0;i<LEN;i++)

if (i!=n)

{

b[j]=a[i];

j++;

}

b[j]=『\0』;

}

7: 第7題 請編寫一個函數int fun(int *s,int t,int *k),用來求除數組的最大元素在數組中的下標並存放在k所指的儲存單元中。

答案:

void fun (int *s, int t, int *k)

{

int I, max;

max=s[0];

for(i=0;i<t;i++)

if (s[i]>max)

{

max=s[i];

*k=I;

}

}

8: 第8題 編寫函數fun,功能是:根據以下攻勢計算s,計算結果作為函數值返回;n通過形參傳入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)

答案:

float fun (int n)

{

int i;

float s=1.0, t=1.0;

for(i=2;i<=n;i++)

{

t=t+i;

s=s+1/t;

}

return s;

}

9: 第9題 編寫一個函數fun,它的功能是:根據以下公式求p的值,結果由函數值帶回。M與n為兩個正整數,且要求m>n。 p=m!/n!(m-n)!

答案:

float fun(int m, int n)

{

float p,t=1.0;

int I;

for (i=1;i<=m;i++)

t=t*I;

p=t;

for(t=1.0,i=1;i<=n;i++)

t=t*I;

p=p/t;

for(t=1.0,i=1;i<=m-n;i++)

t=t*I;

p=p/t;

return p;

}

10: 第10題 編寫函數fun,它的功能是:利用以下的簡單迭代方法求方程cos(x)-x=0的一個實根。

迭代步驟如下:(1)取x1初值為0.0; (2)x0=x1,把x1的值賦各x0;

(3)x1=cos(x0),求出一個新的x1;

(4)若x0-x1的絕對值小於0.000001,則執行步驟(5),否則執行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。

程序將輸出root=0.739085。

答案:

float fun()

{

float x1=0.0,x0;

do

{

x0=x1;

x1=cos(x0);

}

while(fabs(x0-x1)>1e-6);

return x1;

}

11: 第11題 下列程序定義了n×n的二維數組,並在主函數中自動賦值。請編寫函數 fun(int a[][n]),該函數的功能是:使數組左下半三角元素中的值全部置成0。

答案:

int fun(int a[][N])

{

int I,j;

for(i=0;i<N;i++)

for(j=0;j<=I;j++)

a[i][j]=0;

}

12: 第12題 下列程序定義了n×n的二維數組,並在主函數中賦值。請編寫函數fun,函數的功能使求出數組周邊元素的平均值並作為函數值返回給主函數中的s。

答案:

double fun(int w[][N])

{

int I,j,k=0;

double s=0.0;

for(j=0;j<N;j++)

{

s+=w[0][j];

k++;

}

for(j=0;j<N;j++)

{

s+=w[N-1][j];

k++;

}

for(i=1;i<=N-2;i++)

{

s+=w[i][0];

k++;

}

for(i=1;i<=N-2;i++)

{

s+=w[i][N-1];

k++;

}

return s/=k;

}

13: 第13題 請編寫一個函數void fun(int tt[m][n],int pp[n]),tt指向一個m行n列的二維函數組,求出二維函數組每列中最小元素,並依次放入pp所指定一維數組中。二維數組中的數已在主函數中賦予。

答案:

void fun(int tt[M][N], int pp[N])

{

int I,j,min;

for(j=0;j<N;j++)

{

min=tt[0][j];

for(i=0;i<M;i++)

{

if (tt[i][j]<min)

min=tt[i][j];

}

pp[j]=min;

}

}

14: 第14題 請別寫函數fun,函數的功能使求出二維數組周邊元素之和,作為函數值返回。二維數組中的值在主函數中賦予。

答案:

int fun(int a[M][N])

{

int I,j,s=0;

for(j=0;j<N;j++)

{

s+=a[0][j];

s+=a[M-1][j];

}

for(i=1;i<=M-2;i++)

{

s+=a[i][0];

s+=a[i][N-1];

}

return s;

}

15: 第15題 請編寫一個函數unsigned fun(unsigned w),w使一個大於10的無符號整數,若w使n(n≥2)位的整數,則函數求出w後n-1位的數作為函數值返回。

答案:

unsigned fun(unsigned w)

{

unsigned t,s=0,s1=1,p=0;

t=w;

while(t>10)

{

if(t/10)

p=t%10;

s=s+p*s1;

s1=s1*10;

t=t/10;

}

return s;

}

16: 第16題 請編寫一個函數float fun(double h),函數的功能使對變數h中的值保留2位小樹,並對第三位進行四捨五入(規定h中的值位正數)。

答案:

float fun(float h)

{

long t;

float s;

h=h*1000;

t=(h+5)/10;

s=(float)t/100.0;

return s;

}

17: 第17題 請編寫一個函數fun(char *s),該函數的功能使把字元串中的內容擬置。

答案:

void fun(char *s)

{

char ch;

int I,m,n;

i=0;

m=n=strlen(s)-1;

while(i<(n+1)/2)

{

ch=s[i];

s[i]=s[m];

s[m]=ch;

i++;

m--;

}

}

18: 第18題 編寫程序,實現矩陣(3行3列)的轉置(即行列互換)。

答案:

void fun(int array[3][3])

{

int I,j,temp;

for(i=0;i<3;i++)

for(j=0;j<I,j++)

{

temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;

}

}

19: 第19題 編寫函數fun,該函數的功能是:從字元中刪除指定的字元,同一字母的大、小寫按不同字元處理。

答案:

void fun(char s[],int c)

{

int i=0;

char *p;

p=s;

while(*p)

{

if(*p!=c)

{

s[i]=*p;

i++;

}

p++;

}

s[i]=『\0』;

}

20: 第20題 編寫函數int fun(int lim,int aa[max]),該函數的功能是求出小於或等於lim的所有素數並放在aa數組中,該函數返回所求的素數的個數。

答案:

int fun(int lim, int aa[MAX])

{

int k=0,I,j;

for(i=lim;i>1;i--)

{

for(j=2;j<i;j++)

if(i%j==0)

break;

else

continue;

if(j>=i)

{

aa[k]=i;

k++;

}

}

return k++;

}

21: 第21題 請編寫函數fun,對長度位7個字元的字元串,除首尾字元外,將其餘5個字元按ascii碼降序排列。

答案:

void fun(char *s,int num)

{

char t;

int I,j;

for(i=1;i<num-2;i++)

for(j=i+1;j<num-1;j++)

if(s[i]<s[j])

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

}

22: 第22題 n名學生的成績已在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun,它的功能是:找出學生的最高分,由函數值返回。

答案:

double fun(STREC *h)

{

double max;

STREC *q=h;

max=h->s;

do

{

if(q->s>max)

max=q->s;

q=q->next;

}

while(q!=0);

return max;

}

23: 第23題 請編寫函數fun,該函數的功能是:判斷字元串是否為迴文?若是則函數返回1,主函數中輸出yes,否則返回0,主函數中輸出no。迴文是指順讀和倒讀都是一樣的字元串。

答案:

int fun(char *str)

{

int I,n=0;fg=1;

char *p=str;

while (*p)

{

n++;

p++;

}

for(i=0;i<n/2;i++)

if (str[i]==str[n-1-i]);

else

{

fg=0;

break;

}

return fg;

}

24: 第24題 請編寫一個函數fun,它的功能是:將一個字元串轉換為一個整數(不得調用c語言提供的將字元串轉換為整數的函數)。

答案:

long fun (char *p)

{

long s=0,t;

int i=0,j,n=strlen(p),k,s1;

if(p[0]==『-』)

i++;

for(j=I;j<=n-1;j++)

{

t=p[j]-『0』;

s1=10;

for(k=j;k<n-1;k++)

t*=s1;

s+=t;

}

if(p[0]==『-』)

return –s;

else

return s;

}

25: 第25題 請編寫一個函數fun,它的功能是:比較兩個字元串的長度,(不得調用c語言提供的求字元串長度的函數),函數返回較長的字元串。若兩個字元串長度相同,則返回第一個字元串。

答案:

char *fun(char *s,char *t)

{

char *p,*t1=t,*s1=s;

int n=0;m=0;

while (*s1)

{

n++;

s1++;

}

while(*t1)

{

m++;

t1++;

}

if(n>=m)

p=s;

else

p=t;

return p;

}

26: 第26題 請編寫一個函數fun,它的功能是:根據以下公式求x的值(要求滿足精度0.0005,即某項小於0.0005時停止迭代):

x/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+…+1×2×3×…×n/3×5×7×(2n+1)

程序運行後,如果輸入精度0.0005,則程序輸出為3.14…。

答案:

double fun(double eps)

{

double s;

float n,t,pi;

t=1;pi=0;n=1.0;s=1.0;

while((fabs(s))>=eps)

{

pi+=s;

t=n/(2*n+1);

s*=t;

n++;

}

pi=pi*2;

return pi;

}

27: 第27題 請編寫一個函數fun,它的功能是:求除1到m之內(含m)能北7或11整除的所有整數放在數組a中,通過n返回這些數的個數。

答案:

void fun(int m, int *a, int *n)

{

int I,j=0; *n=0;

for(i=1;i<=m;i++)

if (i%7==0 || i%11 ==0)

{

a[j]=I;

j++;

}

*n=j;

}

28: 第28題 請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數組元素中的值已在主函數中賦予。主函數中x是數組名,n 是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。

答案:

void fun (int a[],int n, int *max, int *d)

{

int I;

*max=a[0];

*d=0;

for(i=0;I<n;i++)

if(a[i]>*max)

{

*max=a[i];

*d=I;

}

}

29: 第29題 請編寫一個函數fun,它的功能是:將ss所指字元串中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。

答案:

void fun(char *ss)

{

int I,n;

n=strlen(ss);

for(i=1;i<n;i+=2)

if(ss[i]>=『a』&& ss[i]<=『z』)

ss[i]=ss[i]-32;

}

30: 第30題 請編寫一個函數fun,它的功能是:求除一個2×m整型二維數組中最大元素的值,並將此值返回調用函數。

答案:

int fun(int a[][M])

{

int I,j,max;

max=a[0][0];

for(i=0;i<2;i++)

for(j=0;j<M;j++)

if(a[i][j]>max)

max=a[i][j];

return max;

}

31: 第31題 請編寫函數fun,其功能是:將s所指字元串中除了下標為偶數、同時ascii值也為偶數的字元外,其餘的全都刪除;串中剩餘字元所形成的一個新串放在t所指的一個數組中。

答案:

void fun(char *s,char t[])

{

int I,j=0,n;

n=strlen(s);

for(i=0;I,n;i++)

if(i%2==0&&s[i]%2==0)

{

t[j]=s[i];

j++;

}

t[j]=『\0』;

}

32: 第32題 請編寫函數fun,其功能是:將s所指字元串中除了下標為奇數、同時ascii值也為奇數的字元之外,其餘的所有字元都刪除,串中剩餘字元所形成的一個新串放在t所指的一個數組中。

答案:

void fun(char *s,char t[])

{

int I,j=0,n;

n=strlen(s);

for(i=0;I,n;i++)

if(i%2!=0&&s[i]%2!=0)

{

t[j]=s[i];

j++;

}

t[j]=『\0』;

}

33: 第33題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:使字元串中尾部的*號不得多於n個;若多於n個,則刪除多於的*號;若少於或等於n個,則什麼也不做,字元串中間和前面的*號不刪除。

答案:

void fun(char *a,int n)

{

int i=0;k=0;

char *p, *t;

p=t=a;

while (*t)

t++;

t--;

while(*t==『*』)

{

k++;

t--;

}

t++;

if(k>n)

{

while (*p&&p<t+n)

{

a[i]=*p;

i++;

p++;

}

a[i]=『\0』;

}

}

34: 第34題 學生的記錄由學號和成績組成,n名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能使:把分數最高的學生數據放在h所指的數組中,注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。

答案:

int fun (STREC *a, STREC *b)

{

int I,j=0,n=0, max;

max=a[0].s;

for(i=0;i<N;i++)

if(a[i].s>max)

max=a[i].s;

for(i=0;i<N;i++)

if(a[i].s==max)

{

*(b+j)=a[i];

j++;

n++;

}

return n;

}

35: 第35題 請編寫一個函數,用來刪除字元串中的所有空格。

答案:

void fun(char *str)

{

int i=0;

char *p=str;

while (*p)

{

if(*p!=『』)

{

str[i]=*p;

i++;

}

p++;

}

str[i]=『\0』;

}

36: 第36題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:將字元串中的前導*號全部移到字元串的尾部。

答案:

void fun(char *a)

{

int i=0,n=0;

char *p;

p=a;

while (*p==『*』)

{

n++;

p++;

}

while (*p)

{

a[i]=*p;

i++;

p++;

}

while(n!=0)

{

a[i]=『*』;

i++;

n--;

}

a[i]=『\0』;

}

37: 第37題 某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出。請編寫函數fun,它的功能是:求出該學生的平均分放在記錄的ave成員中。請自己定義正確的形參。

答案:

void fun(STREC *p)

{

double av=0.0;

int i:

for(i=0;i<N;i++)

av+=p->s[i];

av/=N;

p->ave=av;

}

38: 第38題 請編寫函數fun,它的功能是:求出ss所指字元串中指定字元的個數,並返回此值。

答案:

int fun(char *ss, char c)

{

int n=0;

while (*ss)

{

if(*ss==c)

n++;

ss++;

}

return n;

}

39: 第39題 請編寫函數fun,該函數的功能是:移動一維數組中的內容,若數組中由n個整數,要求把下標從0到p(p小於等於n-1)的數組元素平移到數組的最後。

答案:

void fun(int *w, int p, int n)

{

int b[N], i, j=0;

for(i=0;i<=p;i++)

{

b[i]=w[i];

j++;

}

for(i=0;i<=p;i++)

{

w[j]=b[i];

j++;

}

}

40: 第40題 請編寫函數fun,該函數的功能是移動字元串中內容,移動的規則如下:把第1到第m個字元,平移到字元串的最後,把第m+1到最後的字元移到字元串的前部。

答案:

void fun(char *w,int m)

{

char b[N];

int I,j=0;

for(i=0;i<m;i++)

{

b[j]=w[i];

j++;

}

for (i=0;i<strlen(w)-m;i++)

w[i]=w[i+m];

for(j=0;j<m;j++)

{

w[i]=b[j];

i++;

}

w[i]=『\0』;

}

41: 第41題 請編寫函數fun,該函數的功能是:將m行n列的二維數組中的字元數據,按列的順序依次放到一個字元串中。

答案:

void fun(char (*s)[n],char *b)

{int i,j,k=0;

for(j=0;j<n;j++)

for(i=0;i<m;i++)

{b[k]=*(*(s+i)+j)

k++;}

b[k]=『\0』;}

42: 第42題 下列程序定義了n×n的二維數組,並在主函數中自動賦值。請編寫函數fun(int a[][n],int n),該函數的功能是:將數組右上半三角元素中的值乘以m。

答案:

void fun(int a[][n],int m)

{int i,j;

for(j=0;j<n;j++)

for(i=0;i<=j;i++)

a[j]=a[j]*m;}

43: 第43題 編寫一個函數,從傳入的num個字元串中找出一個最長的一個字元串,並通過形參指針max傳回該串地址(用****作為結束輸入的標志)。

答案:

char *fun(char (*a)[81],int num)

{int i;

char *max;

max=a[0];

for(i=0;i<num;i++)

if(strlen(max)<strlen(a))

max=a;

return max;}

44: 第44題 編寫一個函數,該函數可以統計一個長度為2的字元串在另一個字元串中出現的次數。

答案:

int fun(char *str,char *substr)

{int n;

char *p,*r;

n=0;

while(*str)

{p=str;

r=substr;

while(*r)

if(*r==*p)

{r++;

p++;}

else

break;

if(*r==『\0』)

n++;

str++;}

return n;}

45: 第45題 假定輸入的字元串中只包含字母和*號。請編寫函數fun,它的功能是:只刪除字元串前導和尾部的*號,串中字母之間的*號都不刪除。形參n 給出了字元串的長度,形參h給出了字元串中前導*號的個數,形參e給出了字元串中最後的*個數。在編寫時不得使用c語言給提供得字元串函數。

答案:

void fun(char *a,int n,int h,int e)

{int i=0;

char *p;

for(p=a+h;p<a+n-e;p++)

{*(a+i)=*p;

i++;}

*(a+i)=『\0』;}

46: 第46題 學生得記錄由學號和成績組稱個,n名大學生得數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能時:按分數的高低排列學生的記錄,高分在前。

答案:

void fun(strec a[])

{int i,j;

strec t;

for(i=0;i<n-1;i++)

for(j=i;s<n;j++)

if(a.s<a[j].s)

{t=a;

a=a[j];

a[j]=t; }}

47: 第47題 請編寫一個函數void fun(char *ss),其功能時:將字元串ss中所有下標為奇數位置上的字母轉換為大寫(若位置上不是字母,則不轉換)。

答案:

void fun(char *ss)

{int i,n=0;

char *p=ss;

while(*p)

{n++;

p++;}

for (i=0;i<n;i++)

if ((ss=『a』&ss<=『z』)&i%2!=0)

ss=ss-32;

ss=『\0』;}

48: 第48題 請編寫函數fun,其功能是:將兩個兩位數的正整數a,b合並成一個整數放在c中。合並的方式是:將a數的十位和個位依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的百位和個位上。

答案:

void fun(int a,int b,long *c)

{*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}

49: 第49題 請編寫函數fun,其功能是:將s所指字元串中下標位偶數同時ascii值為奇數的字元刪除,s中剩餘的字元形成的新串放在t所指的數組中。

答案:

void fun(char *s,char t[])

{int i,j=0,n=strlen(s);

for(i=0;i<n;i++)

if(i%2==0&s%2!=0)

else

{f[j]=s;

j++;}

t[j]=『\0』;}

50: 第50題 已知學生的記錄是由學號和學習成績構成,n名學生的數據已存入a機構體數組中。請編寫函數fun,該函數的功能是:找出成績最高的學生記錄,通過形參返回主函數(規定只有一個最高分)。

答案:

void fun(stu a[],stu *s)

{int i,max;

max=a[0].s;

for (i=0;i<n;i++)

if(a.s>max)

{max=a.s;

*s=a;}}

Ⅸ 誰有國家計算機二級考試的題庫C語言 能分享一下嗎

網路(互聯網)上特別多的,【考試大會員中心】的計算機二級試卷都可以免費做的,你上搜索就可以。那一個不能拷出來的,是在線題庫,模擬真實考場的,要自己去在線做題。還有專家答疑。