c語言筆試題目
1. c語言筆試題來幾份
留郵箱我給你發試卷和答案
一. 單項選擇題
1) C語言中最基本的非空數據類型包括
A.整型、浮點型、無值型 B.整型、字元型、無值型
C. 整型、浮點型、字元型 D. 整型、浮點型、雙精度型、字元型
2) C語言中運算對象必須是整型的運算符是
A.% B./ C.= D.<=
3) 若已定義x和y為int類型,則執行了語句x=1;y=x+3/2;後y的值是
A.1 B.2 C.2.0 D.2.5
4) 若有以下程序 段,int a=1,b=2,c=1.0/b*a;則執行後,c中的值是
A.0 B.0.5 C.1 D.2
5) 能正確表示邏輯關系:「a≥10或a≤0」的C語言表達式是
A.a>=10ora<=0 B.a>=0|a<=10
C.a>=10&&a<=0 D.a>=10||a<=0
6) 下列字元序列中, 不可用作C語言標識符的是
A.xyd233 B.No.1 C._sd D.xyz
7) 在printf()函數中,反斜杠字元『\』表示為
A.\』 B.\0 C.\n D.\\
8) 設先有定義:int a=10;則表達示a+=a*=a的值為
A.10 B.100 C.1000 D.200
9) 設先有定義:int y=3,x=2,z=1;則語句:
printf(「%d %d\n」,(++x,y++),z+2);的輸出結果為
A.3 4 B.4 2 C.4 3 D.3 3
10) 假定x、y、z、m均為int 型變數,有如下程序段
x=2;y=3;z=1;
m=(y<x)?y:x;
m=(z<y)?m:y;
則該程序運行後,m的值是
A.4 B.3 C2 D.1
11) 以下選項中合法的字元常量是
A. 「B」 B.』\010』 C.68 D.D
12) 設x=3,y=4,z=5,則表達式((x+y)>z)&&(y==z)&&x||y+z&&y+z的值為
A.0 B.1 C.2 D.3
13) 結構化程序模塊不具有的特徵是
A.只有一個入口和一個出口
B.要盡量多使用goto語句
C.一般有順序、選擇和循環三種基本結構
D.程序中不能有死循環
14) C語言中,邏輯「真」等價於
A.整數1 B. 整數0 C.非0數 D.TRUE
15) 以下4條語句中,有語法錯誤的是
A.if(a>b) m=n; B.if(a<b) m=b;
C.if((a=b)>=0) m=a; D.if((a=b;)>=0) m=a;
16) 若i,j均為整型變數,則以下循環
for(i=0,j=2;j=1;i++,j--)
printf(「%5d,%d\n」,I,j);
A.循環體只執行一次 B.循環體執行二次
C.是無限循環 D.循環條件不合法
17) 以下程序段,執行結果為
a=1;
do
{
a=a*a;
}while(!a);
A.循環體只執行一次 B.循環體執行二次
C.是無限循環 D.循環條件不合法
18) C語言中while與do-while語句的主要區別是
A.do-while循環體至少無條件執行一次 B.do-while允許從外部跳到循環體內
B.while的循環體至少無條件執行一次 D.while的循環控制條件比do-while的嚴格
19) 語句while(!a);中條件等價於
A.a!=0 B.~a C.a==1 D.a==0
20) 以下程序的運行結果為
#include<stdio.h>
main()
{
int i=1,sum=0;
while(i<=100)
sum+=i;
printf(「1+2+3+…+99+100=%d」,sum);
}
A.5050 B.1 C.0 D.程序陷入死循環
21) 以下程序運行結果為
#include<stdio.h>
main()
{
int sum,pad;
sum=pad=5;
pad=sum++;
pad++;
++pad;
printf(「%d\n」,pad);
}
A.7 B.6 C.5 D.4
22) 以下程序的運行結果為
#include<stdio.h>
main()
{
int a=2,b=10;
printf(「a=%%d,b=%%d\n」,a,b);
}
A.a=%2,b=%10 B.a=2,b=10
C. a=%%d,b=%%d D. a=%d,b=%d
23) 為了避免嵌套的if-else語句的二義性,C語言規定else總是
A.與縮排位置相同的if組成配對關系
B.與在其之前未配對的if組成配對關系
C. 與在其之前未配對的最近的if組成配對關系
D.與同一行上的if組成配對關系
24) 對於for(表達式1;;表達式3)可理解為
A.for(表達式1;表達式3) B. for(表達式1;1;表達式3)
C. for(表達式1;0;表達式3) D. for(表達式1;表達式3;表達式3)
25) 在下列數組定義、初始化或賦值語句中,正確的是
A.int a[8]=100; B.int s[5]={1,2,3,4,5,6};
C.int x[]={1,2,3,4,5,6}; D.int n=8;int score[n];
26) 若已有定義:int i,a[100];則下列語句中,不正確的是
A.for(i=0;i<100;i++) a[i]=i; B. for(i=0;i<100;i++) scanf(「%d」,&a[i]);
C.scanf(「%d」,&a); D.for(i=0;i<100;i++) scanf(「%d」,a+i);
27) 與定義char c[]={「GOOD」};不等價的是
A.char c[]={『G』,』O』,』O』,』D』,』\0』}; B. char c[]=「GOOD」;
C. char c[4]={「GOOD」}; D. char c[5]={『G』,』O』,』O』,』D』,』\0』};
28) 若已有定義char c[]={「GOOD」};則下列語句 中,不正確的是
A.puts(c); B.for(i=0;c[i]!=』\0』;i++) printf(「%c」,c[i]);
C.printf(「%s」,c); D.for(i=0; c[i]!=』\0』;i++) putchar(c);
29) 若定義a[][3]={0,1,2,3,4,5,6,7};則a數組中行的大小是
A.2 B.3 C.4 D.不確定值
30) 以下程序的運行結果是
#include<stdio.h>
void f(int b[])
{
int i=0;
while(b[i]<=10)
{
b[i]+=2;
i++;
}
}
main()
{
int i,a[6]={-1,5,10,9,13,7};
f(a);
for(i=0;i<6;i++)
{
printf(「%2d」,a[i]);
}
}
A.2 7 12 11 13 9 B.1 7 12 11 13 7
C.1 7 12 11 13 9 D.1 7 12 9 13 7
31) 若執行以下程序段,其運行結果是
char c[]={『a』,』b』,』\0』,』c』,』\0』};
printf(「%s\n」,c);
A.ab c B.』a』』b』 C.abc D.ab
32) 數組名作為參數傳遞給函數,作為實際參數的數組名被處理為
A.該數組長度 B.該數組元素個數
C.該函數中各元素的值 D.該數組的首地址
33) 當接受用戶輸入 的含空格的字元串時,應使用函數
A.scanf() B.gets() C.getchar() D.getc()
34) 一個完整的可運行的C源程序中
A.可以有一個或多個主函數
B.必須有且僅有一個主函數
C.可以沒有主函數
D.必須不主函數和其他函數
35) 構成C語言源程序的基本單位是
A.子程序 B.過程 C.文本 D. 函數
36) 某C程序由一個主函數和一個自定義函數組成,則該程序
A.總是從max()函數開始執行
B.寫在前面的函數先開始執行
C.寫在後面的函數先開始執行
D. 總是從main()函數開始執行
37) C語言規定,一個C源程序的主函數名必須為
A.program B.include C.main D.function
38) 下列說法正確的是
A. 在書寫C語言源程序是,每個語句以逗號結束
B. 注釋時,』/』和』*』號間可以有空格
C. 無論注釋內容的多少,在對程序編譯時都被忽略
D. C程序每行只能寫一個語句
39) C語言中函數形參的預設存儲類型是
A.靜態 B.自動 C.寄存器 D.外部
40) 函數調用語句function((exp1,exp2),18)中含有的實參個數為
A.0 B.1 C.2 D.3
二. 填空題
1. 表達式10/3的結果是 ;10%3的結果是
2. 執行語句:int a=12;a+=a-=a*a;後的值是
3. 以下語句的輸出結果是
Short b=65535; printf(「%d」,b);
4. 以下程序的執行結果是
#include<stdio.h>
main()
{
int a,b,x;
x=(a=3,b=a--);
printf(「x=%d,a=%d,b=%d\n」,x,a,b);
}
5. 以下程序的執行結果是
#include<stdio.h>
main()
{
float f1,f2,f3,f4;
int m1,m2;
f1=f2=f3=f4=2;
m1=m2=1;
printf(「%d\n」,(m1=f1>=f2)&&(m2=f3<f4));
}
6. 以下程序的執行結果是
#include<stdio.h>
main()
{
float f=13.8;
int n;
n=(int)f%3;
printf(「n=%d\n」,n);
}
7. 若定義union ex{int i;float f;char a[10]}x;則sizeof(x)的值是
8. 設有int i=-1,如果在printf函數中用%u格式輸出i,則輸出結果是
9. 數組在內存中的首地址由 表示。
10. 「*」稱為 運算符。
三. 閱讀理解題
1. 下面程序的運行結果是
#include<stdio.h>
main()
{
static int a[4][5]={{1,2,3,4,0},{2,2,0,0,0},{3,4,5,0,0},{6,0,0,0,0}};
int j,k;
for(j=0;j<4;j++)
{
for(k=0;k<5;k++)
{
if(a[j][k]==0) break;
printf(「%d」,a[j][k]);
}
}
printf(「\n」);
}
2. 下面程序的運行結果是
#include<stdio.h>
main()
{
int a[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i<=0;i--)
{
s=s+a[]*j;
j=j*10;
}
printf(「s=%d\n」,s)
}
3. 下面程序的運行結果是
#include<stdio.h>
int fun(int x)
{
int s;
if(x==0||x==1)
return 3;
s=x-fun(x-3);
return s;
}
main()
{
printf(「%d\n」,fun(3));
}
4. 下面程序的運行結果是
#include<stdio.h>
unsigned int fun(unsigned num)
{
unsigned int k=1;
do
{
k=k*num%10;
num=num/10;
}while(num);
return k;
}
5. 下面程序的運行結果是
#include<stdio.h>
int fun(int x,int y)
{
static int m=0,n=2;
n+=m+1;
m=n+x+y;
return m;
}
四. 編程題
1. 輸入四個整數,要求將它們按由小到大的順序輸出。
2. 編程求s=1-1/2+1/3-1/4+…-1/100。
3. 如果一個數等於其所有真因子(不包括其本身)之和,則該數為完數,例如6的因子有1、2、3,且6=1+2+3,故和為完數,求2~1000中的完數。(選做)
2. 計算機等級考試 筆試題型 二級C語言
選擇35 填空15 每題2分
2010年3月計算機等級考試二級C++筆試試題
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。
(1)下列敘述中正確的是
A)對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為n
B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)
C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)
D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n log2n)
(2)演算法的時間復雜度是指
A)演算法的執行時間
B)演算法所處理的數據量
C)演算法程序中的語句或指令條數
D)演算法在執行過程中所需要的基本運算次數
(3)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於系統軟體的是
A)編輯軟體
B)操作系統
C)教務管理系統
D)瀏覽器
(4)軟體(程序)調試的任務是
A)診斷和改正程序中的錯誤
B)盡可能多地發現程序中的錯誤
C)發現並改正程序中的所有錯誤
D)確定程序中錯誤的性質
(5)數據流程圖(DFD圖)是
A)軟體概要設計的工具
B)軟體詳細設計的工具
C)結構化方法的需求分析工具
D)面向對象方法的需求分析工具
(6)軟體生命周期可分為定義階段,開發階段和維護階段。詳細設計屬於
A)定義階段
B)開發階段
C)維護階段
D)上述三個階段
(7)資料庫管理系統中負責數據模式定義的語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言
(8)在學生管理的關系資料庫中,存取一個學生信息的數據單位是
A)文件
B)資料庫
C)欄位
D)記錄
(9)資料庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬於資料庫設計的
A)需求分析階段
B)邏輯設計階段
C)概念設計階段
D)物理設計階段
(10)有兩個關系R和T如下:
則由關系R得到關系T的操作是
A)選擇
B)投影
C)交
D)並
(11)下列關於函數的描述中,錯誤的是
A)函數可以沒有返回值
B)函數可以沒有參數
C)函數可以是一個類的成員
D)函數不能被定義為模板
(12)若MyClass是一個類名,且有如下語句序列
MyClass c1,*c2;
MyClass *c3=new MyClass;
MyClass &c4=c1;
上面的語句序列所定義的類對象的個數是
A)1
B)2
C)3
D)4
(13)下列關於繼承方式的描述中,錯誤的是
A)如果不顯式地指定繼承方式,預設的繼承方式是私有(private)
B)採用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員
C)採用保護繼承方式時,基類中的保護成員在派生類中仍然是保護成員
D)採用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員
(14)將前綴運算符「--」重載為非成員函數,下列原型中,能正確用於類中說明的是
A)Decr& operator --(int);
B)Decr operator --( Decr&,int);
C)friend Decr& operator --(Decr&);
D)frlend Decr operator --(Decr&,int);
(15)若MyTemp是一個只有一個虛擬類型參數的類模板,且有如下語句序列
MyTempp2;
MyTempp3[2];
編譯系統在處理上面的沖做語句序列時,所生成的模板MyTemp的實例的個數是
A)1
B)2
C)3
D)0
(16)在C++中,cin是個
A)類
B)對象
C)模板
D)函數
(17)在下列字元中,不允許作為C++標識符的是
A)b
B)B
C)_
D)2
(18)下列敘述中飢判如,錯誤的是
A)false是一個邏輯型常量
B)"b"是一個字元型常量
C)365是一個int常量
D)3.1415926是一個double常量
(19)若x和y是程序中爛啟的兩個整型變數,則下列if語句中正確的是
A)if(x==0) y=1; else y=2;
B)if(x==0) then y=1 else y=2;
C)if(x==0) y=1 else y=2;
D)if x==0 y=1; else y=2;
(20)要定義整型數組x,使之包括初值為O的三個元素,下列語句中錯誤的是
A)int x[3]={0,0,0};
B)int x[]={0};
C)static int x[3]={0};
D)int x[]={0,0,0};
(21)關於函數中的<返回類型>,下列表述中錯誤的是
A)<返回類型>中有可能包含關鍵字int
B)<返回類型>中有可能包含自定義標識符
C)<返回類型>中有可能包含字元*
D)<返回類型>中可能包含[]
(22)要定義一個引用變數p,使之引用類MyClass的一個對象,正確的定義語句是
A)MyClass p=MyClass;
B)MyClass p=new MyClass;
C)MyClass &p=new MyClass;
D) MyClass a,&p=a;
(23)有如下兩個類定義
class XX{
private:
double x1;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double y1;
protected:
double y2;
public:
double y3;
};
在類YY中保護成員變數的個數是
A)1
B)2
C)3
D)4
(24)下列關於運算符重載的描述中,錯誤的是
A)可以通過運算符重載在C++中創建新的運算符
B)賦值運算符只能重載為成員函數
C)運算符函數重載為類的成員函數時,第一操作數是該類對象
D)重載類型轉換運算符時不需要聲明返回類型
(25)下列關於類模板的描述中,錯誤的是
A)類模板的成員函數都是模板函數
B)可以為類模板參數設置默認值
C)類模板描述了一組類
D)類模板中只允許有一個類型參數
(26)下列控制格式輸入輸出的操作符中,能夠設置浮點數精度的是
A)setprecision
B)setw
C)setfill
D)showpoint(27)下列程序段中包含4個函數,其中具有隱含this指針的是
int fun1();
class Test{
public:
int fun2();
friend int fun3();
static int fun4();
};
A)fun1
B)fun2
C)fun3
D)fun4
(28)有如下程序
#include
using namespace std;
class Test{
public:
Test(){ }
Test(const Test &t) {cout<<1;}
};
Test fun(Test &u) {Test t=u; return t;}
int main(){Test x,y; x=fun(y); return 0;}
運行這個程序的輸出結果是
A)無輸出
B)1
C)11
D)111
(29)有如下程序
#include
using namespace std;
class A{
public:
A(int i=0):r1(i) { }
void print() {cout<<'E』<<R1<<'-';}< p>
void print() const {cout<<'C'<<R1*R1<<'-';}< p>
void print(int x) {cout <<'P'<<R1*R1*R1<<'-';}< p>
private:
int r1;
};
int main() {
A a1;
const A a2(4);
a1.print(2);
a1.print();
return 0;
}
運行時的輸出結果是
A)P8-E4
B)P8-C16-
C)P0-E4-
D)P0-C16-
(30)下列代碼聲明了3個類
class Person{};
class Student:public Person{};
class Undergraate:Student{};
下列關於這些類之間關系的描述中,錯誤的是
A)類Person是類Undergraate的基類
B)類Undergraate從類Student公有繼承
C)類Student是類Person的派生類
D)類Undergraate是類Person的派生類
(31)有如下程序
#include
using namespace std;
Class Base{
public:
Base(int x=0):valB(x) {cout<<VALB;}< p>
~Base() {cout<<VALB;}< p>
private:
int valB;
};
class Derived:public Base{
public:
Derived(int x=0,int y=0):Base(x),valD(y){cout<<VALD;}< p>
~Derived() {cout<<VALD;}< p>
private:
int valD;
};
int main(){
Derived obj12(2,3);
retuen 0;
}
運行時的輸出結果是
A)2332
B)2323
C)3232
D)3223
(32)下面是類Shape的定義:
class Shape{
public:
virtual void Draw()=0;
};
下列關於Shape類的描述中,正確的是
A)類Shape是虛基類
B)類Shape是抽象類
C)類Shape中的Draw函數聲明有誤
D)語句「Shape s;」能夠建立Shape的一個對象s
(33)將運算符「+」重載為非成員函數,下列原型聲明中,錯誤的是
A)MyClock operator + (MyClock,long);
B)MyClock operator + (MyClock,MyClock);
C)MyClock operator + (long,long);
D)MyClock operator + (long,MyClock);
(34)打開文件時可單獨或組合使用下列文件打開模式
①ios_base::app ②ios_base::binary
③ios_base::in ④ios_base::out
若要以二進制讀方式打開一個文件,需使用的文件打開模式為
A)①③
B)①④
C)②③
D)②④
(35)有如下程序:
#include
using namespace std;
Class B{
public:
B(int xx):x(xx) {++cout; x+=10;}
virtual void show() const
{cout<<COUNT<<'_'<<X<<ENDL;}< p>
protected:
static int count;
private:
int x;
};
class D:public B{
public:
D(int xx,int yy):B(xx),y(yy) {++count; y+=100;}
virtual void show() const
{cout<<COUNT<<'_'<<Y<<ENDL;}< p>
private:
int y;
};
int B::count=0;
int main(){
B *ptr=new D(10,20);
ptr->show();
delete ptr;
return 0;
}
運行時的輸出結果是
A)1_120
B)2_120
C)1_20
D)2_20
二、填空題(每空2分,共30分)
請將每一個空的正確答案寫在答題卡【l】~【15】序號的橫線上,答在試卷上不得分。
(1)一個隊列的初始狀態為空。現將元素A,B,C,D,E,F,5,4,3,2,1依次入隊,然後再依次退隊,則元素退隊的順序為 【1】 。
(2)設某循環隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環隊列中共有 【2】 個元素。
(3)設二叉樹如下:
對該二叉樹進行後序遍歷的結果為 【3】 。
(4)軟體是 【4】 、數據和文檔的集合。
(5)有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學號和課號,則關系模式選課可定義為:選課(學號, 【5】 ,成績)。
(6)若x和y是兩個整形變數,在執行了語句序列
x=5; y=6; y+=x--;
後,x+y的值為 【6】 。
(7)在執行語句序列
int i=0; do i++; while(i*i<10);
時,do後面的循環體語句i++被執行的次數為 【7】 。
(8)有如下的函數定義:
int Xfun(int *a, int n){
int x=*a;
for(int *pa=a+1; pa<>
if(*pa>x) x=*pa;
return x;
}
若執行了語句
int x[5]={23,46,78,55,16};
後,通過表達式Xfun(x,5)調用該函數,則得到的返回值為 【8】 。
(9)有如下的函數定義:
int Xfun(int x){
int y=x;
{int x=10; y+=x;}
return x+y;
}
通過表達式Xfun(5)調用該函數,則得到的返回值為 【9】 。
(10)假定Xcs是一個類,該類中一個成員函數的原型為「Xcs *abc();」,則在類外定義時對應的函數頭為 【10】 。
(11)請將下面的類Date的定義補充完整,使得由語句
Date FirstDay;
定義的對象FirstDay的值為2010年1月1日。
class Date{
public:
Date( 【11】 ):year(y),month(m),day(d){ }
private:
int year,month,day; //依次表示年、月、日
};
(12)請將下面的程序補充完整,使得程序輸出「飄是張娜的書」。
#include
using namespace std;
class Book{
public:
Book(char *str) {strcpy(title,str);}
【12】 void PrintInfo() {cout<<TITLE<<ENDL;}< p>
protected:
char title[50];
};
class MyBook:public Book{
public:
MyBook(char *s1,char *s2="張娜"):
【13】 {strcpy(owner,s2);}
virtual void PrintInfo() {cout<<TITLE<<"是"OWNER<<"的書"<<ENDL;}< p>
private:
char owner[10];
};
int main(){
Book *prt=new MyBook("飄");
prt->PrintInfo();
return 0;
}
(13)在有理數類Rational中重載插入運算符<<,以便按a/q形式輸出。請將<<運算符函數的定義補充完整。
class Rational{
public:
Rational(int aa, int qq):a(aa),q(qq){ }
friend 【14】 operator<<(ostream &out, Rational &x)
{
return (out<<X.A<<' p ?<<x.q);<>
}
private:
int a,q;
};
(14)下面的函數定義是某函數模板能夠生成的函數實例
int square(int n) {return n*n;}
double square(double n) {return n*n;}
由此可知,該函數模板的定義是 【15】 。
3. 關於C語言筆試的幾道題
printf(..... B*2)
而B是什麼?是(A<A+2)-2
那麼也就是(A<A+2)-2*2 而你的2*((A<A+2)-2) 人家又沒有破號,你自己給他加一個上去,這能沒問題嗎?這沒什麼原理,是規定,是邏輯,想不通沒關系,這種樣的宏初級編程用不上,等你到達高級程度了也就自己會理解的了。
展開後是(A<A+2)-2*2 並不是2*((A<A+2)-2)
乘法當然比減法優先了,先乘後減。。。。。。。
第一題
首先定義了宏 A 他的值是10 實際上可以當成int a=10;
然後#define B (A<A+2)-2
實際上也就是#define B (10<10+2)-2
首先算術運算符比關系運演算法優先高就變成了 (10<12)-2,然後10<12條件是真,為1,變成了 1-2 由於printf("%d",B*2); 又變成了 1-2*2 結果1-4=-3;
第二題
這個二維數組分解開來就是 a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6, 這個二維數組是三行,二列,行的下標有0,1,2,列的下標有0,1 你的a[1][2]越界了。
第三題並不是單純的用box 的長度去和boss比較,而是acsii表裡的值去減,首先 b和b比,相等,會自動看下一個,o和o比,任然相等,然後x和s比,在acsii里x是120而s是115,所以box大,至於boss最後多出的s就不管了。
4. 計算機二級考試(江西考區)試題c語言及答案
2010年3月全國計算機等級考試二級C語言筆試真題及參考答案一、選擇題
(1)下列敘述中正確的是
A)對長度為n的有序鏈表進行查找,最壞清況下需要的比較次數為n
B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)
C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)
D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)(2)演算法的時間復雜度是指
A)演算法的執行時間
B)演算法所處理的數據量
C)演算法程序中的語句或指令條數
D)演算法在執行過程中所需要的基本運算次數(3)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於系統軟體的是
A)編輯軟體
B)操作系統
C)教務管理系統
D)瀏覽器(4)軟體(程序)調試的任務是
A)診斷和改正程序中的錯誤
B)盡可能多地發現程序中的錯誤
C)發現並改正程序中的所有錯誤
D)確定程序中錯誤的性質(5)數據流程圖(DFD圖)是
A)軟體概要設計的工具
B)軟體詳細設計的工具
C)結構化方法的需求分析工具
D)面向對象方法的需求分析工具(6)軟體生命周期可分為定義階段,開發階段和維護階段。詳細設計屬於
A)定義階段
B)開發階段
C)維護階段
D)上述三個階段(7)資料庫管理系統中負責數據模式定義的語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言(8)在學生管理的關系資料庫中,存取一個學生信息的數據單位是
A)文件
B)資料庫
C)欄位
D)記錄(9)資料庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬於資料庫設計的
A)需求分析階段
B)邏輯設計階段
C)概念設計階段
D)物理設計階段(10)有兩個關系R和T如下:
則由關系K得到關系T的操作是
A)選擇
B)投影
C)交
D)並(11)以下敘述正確的是
A)C語言程序是由過程和函數組成的
B)C語言函數可以嵌套調用,例如:fun(fun(x))
C)C語言函數不可以單獨編譯
D)C語言中除了main函數,其他函數不可作為單獨文件形式存在(12)以下關於C語言的敘述中正確的是
A)C語言中的注釋不可以夾在變數名或關鍵字的中間
B)C語言中的變數可以在使用之前的任何位置進行定義
C)在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D)C語言的數值常量中夾帶空格不影響常量值的正確表示(13)以下C語言用戶標識符中,不合法的是
A)_1
B)AaBc
C)a_b
D)a-b(14)若有定義:double a=22;int i=0,k=18;,則不符合C語言規定的賦值語句是
A)a=a++,i++;
B)i=(a+k)<=(i+k);
C)i=a%11;
D)i=!a;(15)有以下程序
#include<stdio.h>
main()
{ char a,b,c,d;
scanf(「%c%c」,&a,&b);
c=getchar(); d=getchar();
printf(「%c%c%c%c\n」,a,b,c,d);
}
當執行程序時,按下列方式輸入數據(從第1列開始,<CR>代表回車,注意:回車也是一個字元)
12<CR>
34<CR>
則輸出結果是
A)1234
B)12
C)12
3
D)12
34(16)以i關於C語言數據類型使用的敘述中錯誤的是
A)若要准確無誤差的表示自然數,應使用整數類型
B)若要保存帶有多位小數的數據,應使用雙精度類型
C)若要處理如「人員信息」等含有不同類型的相關數據,應自定義結構體類型
D)若只處理「真」和「假」兩種邏輯值,應使用邏輯類型(17)若a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是
A)1
B)0
C)2
D)不知道a的值,不能確定(18)以下選項中與if(a==1)a=b; else a++;語句功能不同的switch語句是
A)switch(a)
{case:a=b;break;<br>default:a++;<br>}<br>B)switch(a==1)<br>{case 0:a=b;break;<br>case 1:a++;<br>}
C)switch(a)
{default:a++;break;<br>case 1:a=b;<br>}
D)switch(a==1)
{case 1:a=b;break;<br>case 0:a++;<br>}(19)有如下嵌套的if語句
if (a<b)
if(a<c)k=a;
else k=c;
else
if(b<c) k=b;
else k=c;
以下選項中與上述if語句等價的語句是
A)k=(a<b)?a:b;k=(b<c)?b:c;
B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C)k=(a<b)?((a<c)?a:):((b<c)?b:c);
D)k=(a<b)?a:b;k=(a<c)?a:c;(20)有以下程序
#include<s七dio.h>
main()
{in i,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>O;j--)
{if(i*j)>3)break;<br>m=i*j;<br>}
}
printf("m=%d\n",m);
}
程序運行後的輸出結果是
A)m=6
B)m=2
C)m=4
D)m=5(21)有以下程序
#include(stdio.h>
main()
{int a=l;b=2;
for(;a<8;a++) {b+=a;a+=2;}
printf("%d,%d\n",a,b);
}
程序運行後的輸出結果是
A)9,18
B)8,11
C)7,11
D)10,14(22)有以下程序,其中k的初值為八進制數
#include <stdio.h>
main()
{int k=011;
printf("%d\n",k++);
}
程序運行後的輸出結果是
A)12
B)11
C)10
D)9(23)下列語句組中,正確的是
A)char *s;s="Olympic";
B)char s[7];s="Olympic";
C)char *s;s={"Olympic"};
D)char s[7];s={"Olympic"};(24)以下關於return語句的敘述中正確的是
A)一個自定義函數中必須有一條return語句
B)一個自定義函數中可以根據不同情況設置多條return語句
C)定義成void類型的函數中可以有帶返回值的return語句
D)沒有return語句的自定義函數在執行結束時不能返回到調用處(25)下列選項中,能正確定義數組的語句是
A)int num[0..2008];
B)int num[];
C)int N=2008;
int num[N];
D)#define N 2008
int num[N];(26)有以下程序
#include <stdio.h>
void fun(char *c,int d)
{*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
main()
{char b='a',a='A';
fun(&b,a);printf("%e,%e\n",b,a);
}
程序運行後的輸出結果是
A)b,B,b,A
B)b,B,B,A
C)a,B,B,a
D)a,B,a,B(27)若有定義int(*Pt)[3];,則下列說法正確的是
A)定義了基類型為int的三個指針變數
B)定義了基類型為int的具有三個元素的指針數組pt
C)定義了一個名為*pt、具有三個元素的整型數組
D)定義了一個名為pt的指針變數,它可以指向每行有三個整數元素的二維數組(28)設有定義double a[10],*s=a;,以下能夠代表數組元素a[3]的是
A)(*s)[3]
B)*(s+3)
C)*s[3]
D)*s+3(29)有以下程序
#include(stdio.h)
main()
{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;
for(i=0;i<5;i++) s=s+a[b[i]]);
printf("%d\n", s);
}
程序運行後的輸出結果是
A)6
B)10
C)11
D)15(30)有以下程序
#include <stdio.h>
main()
{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=ij<=1;j++) t+=b[i][b[j][i]];
printf("%d\n",t);
}
程序運行後的輸出結果是
A)1
B)3
C)4
D)9(31)若有以下定義和語句.......這是全國2010全國c語言考試的部分題目,樓主需要的話可以自己去下載轉自:酷8學習網 www.k8xx.com
5. 一些C語言求職筆試題2
19、一個隊列入列順序是1,2,3,4,則輸出順序是
a、4321b、1234c、1432d、3241
隊列是先進先出的,所以答案是B、1234
20、若進棧順序為1,2,3,4,假定進棧和出棧可以穿插進行,
則可能的出棧順序為:
a、2413b、3142c、3412d、1234
答案是:D。分析過程如下:
A,第一個為2第二個為4,可以確定棧中是3,1所以應該是2431
B,第一個為3,則棧中2,1。第二個可能是24,但肯定不是1
C,第一個為3,第二個為4,則棧中是2,1,所以應該是3421
D,由於進棧和出棧可以穿插進行,所以1進,1出,2進,2出,3進,3出,4進,4出。
21、演算法的空間復雜度指
a、演算法程序的長度
b、演算法程序的指令條數
c、演算法程序占的存儲空間
d、演算法執行過程中所需的存儲空間
答案是D,因為,空間復雜度指的就是:程序執行過程中由於需要,所申請的內存空間。
22、某數列有1000個各不相同的單元,有低到高排列,要對該數進行二分法檢索
,最壞的情況下,需要檢查多少個單元
a、1000b、10c、100d、500
答案是B,
因為,因為2^9=512,不夠檢索完1000個,
那麼:2^10=1024,就夠檢索完1000個了。
二分查找次數以2為基數,2的10次方為1024,
完全可以查找到,所以最多隻需要10次即可。
23、已知數組A中,每個元素A[I][J]在存儲時要佔3個位元組,設I從0變到4,
J從0到9,分配內存從地址SA開始連續按行存儲分配的。問:A[4][7]的起始地址為:
a、SA+84b、SA+99c、SA+120d、SA+141
答案是D,
因為,數組的首個元素也就是數組的首地址是A[0][0],
那麼A[4][7]就是第5行的第8列,一個元素3個位元組,
那麼一行(J最大為9,就是10列)10*3=30個位元組,
前4行4*30=120,再加上7個7*3,
結果就是:4*10*3+7*3=141。24、使用雙向鏈表存放數據的優點是
a、提高檢索速度b、方便的插入和刪除數據
c、節約存儲空間d、很快回收存儲空間
答案是B,因為,
鏈表優點:
1)插入和刪除元素不需要移動其餘元素,效率高;
2)不要求連續空間,空間利用效率高
鏈表缺點:
1)不提高隨機訪問元素的機制
2)查找元素和搜索元素的效率低
25、若某鏈表最常用的操作是在最後一個結點之後插入一個結點並刪除最後一個
結點,則採用____存儲方式最省時間
a、單鏈表
b、雙鏈表
c、帶頭節點的雙循環鏈表
d、單循環鏈表
答案是C,因為,
雙循環鏈表能夠通過頭結點的前驅就是尾結點,能夠迅速找到尾結點,然後進行插入和刪除操作
26、在理想情況下,散列表中查找元素所需比較次數為:
a、nb、0c、n/2d、1
答案是D,因為,
散列方法不同於順序查找、二分查找、二叉排序樹及B-樹上的查找。
它不以關鍵字的比較為基本操作,採用直接定址技術。
在理想情況下,無須任何比較就可以找到待查關鍵字,查找的期望時間為O(1)。
27、Ethernet屬於數據鏈路層協議
答案是正確的。因為:
數據鏈路層的主要協議有:
(1)Point-to-PointProtocal;PPP點到點
(2)Ethernet;乙太網
(3)High-LevelDataLinkControlProtocal;HDLC高級鏈路控制協議
(4)FrameRelay;幀中繼
(5)AsynchronousTransferMode;ATM
28、普通交換機和路由器工作在
a、數據鏈路層和傳輸層
b、鏈路層和網路層
c、都是網路層
d、網路層和傳輸層
答案是B,因為,
交換機主要工作在數據鏈路層(第二層)
路由器工作在網路層(第三層)。29、乙太網的MTU值為
a、500b、1492c、1500d、1982
答案是C,因為
最大傳輸單元MTU=1500是國際規定的默認值,
是一個經過實驗得到的可以最大效率傳輸數據的值。
倘若大於1500,數據傳輸速度就會變慢;
若小於1500,鏈路又得不到充分利用,減小了效率。
30、在一個WindowsSDK的基本應用程序框架中,有如下消息循環:
while(GetMessage(&Msg,NULL,0,0){
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
下面哪個消息使得該消息循環退出運行,從而終止整個應用程序的運行
a、WM_DESTROY b、WM_QUITc、WM_CLOSR d、WM_CREATE
答案是B,因為
WM_CLOSE:關閉應用程序窗口
WM_DESTROY:關閉應用程序
WM_QUIT:關閉消息循環
只有關閉了消息循環,應用程序的進程才真正退出(在任務管理器里消失)。
31、進程和線程最主要的區別:
a、CPU調度方式不同b、優先順序不同
c、程序入口不同d、進程有獨立的地址空間,線程共享地址空間
答案是D,
進程和線程的主要差別在於它們是不同的操作系統資源管理方式。
進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,
而線程只是一個進程中的不同執行路徑。
線程有自己的堆棧和局部變數,但線程之間沒有單獨的地址空間,
一個線程死掉就等於整個進程死掉,所以多進程的程序要比多線程的程序健壯,
但在進程切換時,耗費資源較大,效率要差一些。
32、以下哪項不適合用於進程間通訊
a、socketb、Pipec、共享內存d、全局變數
答案是D,
Windows中進程間通信方式有:
File,管道(Pipe),命名管道(namedpipe),信號(Signal),消息隊列(Messagequeue),
共享內存(sharedmemory),內存映射(memory–mappedfile),信號量(semaphore),
套介面(Socket),命名事件。臨界區事實上應該算是由信號量來保證的。
全局變數不能用於進程間通訊。
6. C語言筆試題!求答案!另送100積分!
第一題
char
*a="abc";
是把字元串「abc」的首地址賦值給指針變數a;
char
b[]="abc";
定義一個字元串數組,因為是字元串
「abc」最後有一個『\0』
數組長度為4;
char
c[3]="abc"
寫法有問題,由於數組大小給定為3,最後一個『\0』寫不進數組,有的編譯器會報錯。
第二題
1)
struct
結構體分配內存特點是:大小等於所有成員所點內存大小的和。
union
聯合體分配內存特點是:大小等於成員中占內存最大的內存的大小。所以一共是4個int
13個char
答案是:4*4+13*1=29(相信自己做的)
2)
答案是3
PS:誰給的答案,坑爹呢吧
3)
答案是8
PS:不要被迷惑,這題是陷阱,指針的大小都是無符號長整型
大小是8
4)
答案是6,8(同上題),4。
第三題
1)
答案是
Output1
=
test1_1
Output1
=
test2
Output1
=
test1_1_1
2)(1)頭文件沒有標准輸入輸出
#include<stdio.h>
(9)錯,左值為指針,右值為數組元素,不能賦值,所以應改為char
*s=&src[len]
(11)不應是指針之間的賦值,應該是內容賦值,所以改為
*d++=*s--;
(12)如果按%s即字元串輸出的話,dest所指的字元串結尾沒有『\0'結尾可能出現溢出,解決的方法是在(12)前加一句
*d='\0';
有不清楚的扣729480205,一起學習
7. 計算機二級C語言筆試題和面試題答案目
如下這份計算機二級C語言筆試題目對於要考基計算機二級證書的朋友來說,應該會很有幫助,需要的朋友趕緊收藏吧!
一、選擇題((1)-(10),(21)-(40)每題2分,(11)-(20)每題1分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。
1. 下列敘述中正確的是
A 線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B 線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構
C 線性表的鏈式存儲結構所需要的存儲空間一般要少於順序存儲結構
D 上述三種說法都不對 答案:B
2. 下列敘述中正確的是
A 在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化
B 在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化
C 在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化
D 上述三種說法都不對 答案:C
3. 軟體測試的目的是
A 評估軟體可靠性 B 發現並改正程序中的錯誤 C 改正程序中的錯誤
D 發現程序中的錯誤 答案:B
4. 下面描述中,不屬於軟體危機表現的是
A 軟體過程不規范 B 軟體開發生產率低 C 軟體質量難以控制
D 軟體成本不斷提高 答案:A
5. 軟體生命周期是指
A 軟體產品從提出、實現、使用維護到停止使用退役的過程
B 軟體從需求分析、設計、實現到測試完成的過程 C 軟體的開發過程
D 軟體的運行維護過程 答案:A
6. 面向對象方法中,繼承是指
A 一組對象所具有的相似性質 B 一個對象具有另一個對象的性質 C 各對象之間的共同性質 D 類之間共享屬性和操作的機制 答案:D
7. 層次型、網狀型和關系型資料庫劃分原則是
A 記錄長度 B 文件的大小 C 聯系的復雜程度
D 數據之間的聯系方式 答案:D
8. 一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯系是
A 一對一B 一對多C 多對多D 多對一 答案:C
9. 資料庫設計中反映用戶對數據要求的模式是
A 內模式B 概念模式C 外模式D 設計模式 答案:C
10. 有三個關系R、S和T如下:則由關系R和S得到關系T的操作是
A 自然連接B 交C 投影D 並 答案:A
11. 以下關於結構化程序設計的敘述中正確的是
A 一個結構化程序必須同時由順序、分支、循環三種結構組成
B 結構化程序使用goto語句會很便捷 C 在C語言中,程序的模塊化是利用函數實現的
D 由三種基本結構構成的程序本文由論文聯盟http://www.LWLm.coM收集整理只能解決小規模的問題 答案:C
12. 以下關於簡單程序設計的步驟和順序的說法中正確的是
A 確定演算法後,整理並寫出文檔,最後進行編碼和上機調試
B 首先確定數據結構,然後確定演算法,再編碼,並上機調試,最後整理文檔
C 先編碼和上機調試,在編碼過程中確定演算法和數據結構,最後整理文檔
D 先寫好文檔,再根據文檔進行編碼和上機調試,最後確定演算法和數據結構 答案:D
13. 以下敘述中錯誤的是
A C程序在運行過程中所有計算都以二進制方式進行 B C程序在運行過程中所有計算都以十進制方式進行 C 所有C程序都需要編譯鏈接無誤後才能運行
D C程序中整型變數只能存放整數,實型變數只能存放浮點數 答案:B
14. 有以下定義:inta; longb; doublex,y;則以下選項中正確的表達式是
A a%(int)(x-y) B a=x!=y; C (a*y)%b D y=x+y=x 答案:C
15. 以下選項中能表示合法常量的是
A 整數:1,200 B 實數:1.5E2.0 C 字元斜杠:‘\’ D 字元串:"\007" 答案:C
16. 表達式a+=a-=a=9的值是
A 9 B _9 C 18 D 0 答案:D
17. 若變數已正確定義,在if (W)printf(“%d\n,k”);中,以下不可替代W的是
A a<>b+c B ch=getchar() C a==b+c D a++ 答案:A
18. 有以下程序
#include
main()
{inta=1,b=0;
if(!a) b++;
elsEif(a==0)if(a)b+=2;
elseb+=3;
printf(”%d\n”,b);
}
程序運行後的輸出結果是
A 0 B 1 C 2 D 3 答案:C
20. 有以下程序
#include
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 答案:D
21. 有以下程序
#include
main()
{int y=10;
while(y--);
printf(”Y=%d\n”,Y);
}
程序執行後的輸出結果是
A y=0 B y= -1 C y=1 D while構成無限循環 答案:B
22. 有以下程序
#include
main()
{char s[」=”rstuv";
printf(”%c\n”,*s+2);
}
程序運行後的輸出結果是
A tuv B 字元t的ASCII碼值 C t D 出錯 答案:D
23. 有以下程序
#include
#include
main()
{char x[]=”STRING”;
x[0」=0;x=’\0’;x[2」=’0’;
printf(”%d%d\n”,sizeof(x),strlen(x));
}
程序運行後的輸出結果是
A 61 B 70 C 63 D 71 答案:B
24. 有以下程序
#include
Int f(intx);
main()
{intn=1,m;
m=f(f(f(n)));printf(”%d\n”,m);
}
intf(intx)
{returnx*2;}
程序運行後的輸出結果是
A 1 B 2 C 4 D 8 答案:D
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); 答案:D
26. 有定義語句:int *p[4];以下選項中與此語句等價的是
A intp[4]; B int**p; C int*(p「4」); D int (*p)「4」; 答案:D
27. 下列定義數組的語句中,正確的是
A B C intx[0..10]; D int x[]; 答案:B
28. 若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是
A inta[5]=﹛0﹜; B intb[]={0,0,0,0,0}; C intc[2+3]; D inti=5,d[i]; 答案:A
29. 有以下程序
#include
voidf(int *p);
main()
{inta[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 答案:D
30. 有以下程序(函數fun只對下標為偶數的元素進行操作)
# include
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i