第1章 C語言概述
第1講 C語言概述隨堂測驗
1、程序 #include void main() { printf("Hello, world!\n"); } 經過編譯運行會在顯示器上輸出 Hello, world! 如果希望輸出:Nice to meet you. 則應使用Nice to meet you.替換( )。
A、void
B、main
C、printf
D、Hello, world!
第2講 C語言基本語法成分隨堂測驗
1、if 屬于
A、關鍵字
B、用戶標識符
C、預定義標識符
D、以上均不對
作業
1、下列屬于C語言關鍵字的是( )。
A、Int
B、typedef
C、ENUM
D、unien
2、下列敘述中,不正確的是( )。
A、分號是C語句的必要組成部分
B、C語句的注釋可以寫在語句的后面
C、函數是C程序的基本單位
D、主函數的名字不一定用main表示
3、構成C語言源程序的基本單位是( )。
A、過程
B、函數
C、子程序
D、命令
4、一個C程序的執行是從( )。
A、main函數開始,直到main函數結束
B、main函數開始,直到最后一個函數結束
C、第一個函數開始,直到最后一個函數結束
D、第一條語句開始,直到最后一條語句結束
5、下列屬于C語言中合法標識符的是( )。
A、ex-1
B、if
C、_cook
D、951a
6、以下敘述不正確的是( )。
A、在C程序中,注釋說明只能位于一條語句的后面
B、注釋說明被計算機編譯系統忽略
C、注釋說明必須跟在“//”之后不能換行或者括在“/*”和“*/”之間且注釋符必須配對使用
D、注釋符“/”和“*”之間不能有空格
7、下面四組選項中,均是C語言關鍵字的選項是( )。
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type
8、在C程序中,main函數的位置( )。
A、必須作為第一個函數
B、必須作為最后一個函數
C、可以任意
D、必須放在它所調用的函數之后
9、C程序是由( )構成的。
A、一個主程序與若干子程序
B、一個或多個函數
C、若干過程
D、若干子程序
10、C語言屬于( )。
A、機器語言
B、匯編語言
C、高級語言
D、低級語言
11、C語言的源程序通常的擴展名是( )。。
A、.cpp
B、.c
C、.obj
D、.exe
12、下列選項中,( )屬于多行注釋。
A、//
B、/**/
C、\\
D、/*
13、下列可用作C語言用戶標識符的是( )
A、x-y
B、mπ
C、student
D、for
14、以下不是C語言關鍵字的是( )
A、do
B、Goto
C、break
D、return
15、C語言允許直接訪問內存地址。
16、C語言本身沒有輸入輸出語句。
17、while、If、double均是C語言的關鍵字。
18、101a是合法標識符。
19、在C語言中,合法標識符的第一個字符必須是字母。
第2章 基本數據類型和運算符
第1講 整型常量與浮點型常量隨堂測驗
1、實型數據可以表示為小數形式或指數形式。
第2講 符號常量與字符型常量隨堂測驗
1、有符號常量定義 #define PI 3.14159 在程序運行中,PI相當于( )。
A、3.14159
B、3.14
C、3.
D、3
第3講 變量隨堂測驗
1、變量是可以變的量,所以可以將字符型變量a的值改變為( )。
A、32767
B、256
C、‘a’
D、25.6
第4講 算術運算符與算術表達式隨堂測驗
1、表達式2+8%5的結果為( )。
A、2
B、8
C、5
D、0
第5講 賦值運算符與賦值表達式隨堂測驗
1、如有定義 int a,b=2; 則執行表達式a=b++;后,a的值為( )。
A、2
B、3
C、0
D、隨機
第6講 關系運算符與關系運算符隨堂測驗
1、表達式3>5的值為( )。
A、1
B、0
C、表達式錯誤
D、3
第7講 邏輯運算符與邏輯運算符隨堂測驗
1、如有定義int a=2,b=3; 則執行語句 a++||b++后,變量b的值為( )。
A、2
B、3
C、4
D、以上均不對
第8講 條件運算符與逗號運算符隨堂測驗
1、若有語句x>y?z=x:z=y; 已知x為8,y為10,則執行上述語句后z的值為( )。
A、8
B、10
C、0
D、以上答案均不對
第9講 類型轉換隨堂測驗
1、將實型數3.14賦給整型變量a后,a的值為3。
第2章 單元測驗
1、下列不合法的字符常量是( )。
A、'2'
B、'\101'
C、'ab'
D、'\n'
2、下列合法的轉義字符是( )。
A、'\"'
B、'\018'
C、'\ee'
D、'xab'
3、以下選項中不合法的實型常量是( )。
A、E3
B、.123
C、-6.2e4
D、5.
4、若已定義x和y為double型變量,則表達式x=1,y=x+3/2的值是( )。
A、1
B、2
C、2.0
D、2.5
5、執行語句“x=(a=5,b=a--)”后,x,a,b的值分別是( )。
A、5,5,4
B、5,4,4
C、5,4,5
D、4,5,4
6、已知int x=5,y=5,z=5;則執行語句x%=y+z;后,x的值是( )。
A、0
B、1
C、5
D、6
7、表達式(k=3*2,k+4),k*3的值是( )。
A、14
B、10
C、30
D、18
8、下面程序的輸出結果是( )。 #include void main() { int x=10,y=3,z; printf("%d\n",z=(x%y,x/y)); }
A、0
B、1
C、3
D、4
9、經過下述賦值后,變量x的數據類型是( )。 float x=21.0; int y; y=(int)x;
A、int
B、float
C、double
D、char
10、執行以下程序后,輸出結果為 #include void main() { int x; float y; y=3.6; x=(int)y+10; printf("x=%d,y=%f",x,y); }
A、x=13.5,y=3.600000
B、x=13,y=3.600000
C、x=13,y=3
D、x=13,y=3.6
11、下列浮點數的形式表示錯誤的是( )。
A、10.6
B、.5
C、1e5
D、12E2.0
12、printf("%d",5<=4>1);的結果是( )。
A、0
B、1
C、2
D、3
13、假設a=1,b=2,c=3,d=4,則表達式a>b?a:b
A、4
B、3
C、2
D、1
14、若x為int類型,則表達式x=1,x+5,x++的值是1。
15、8E2是不合法的整型常量。
16、-6.2e4是不合法的實型常量。
17、執行語句“printf("%x",-1);”屏幕顯示-ffff。
18、若有int x=8,y=5,z;則執行語句“z=x/y+0.4”后,z的值為1。
第3章 順序和選擇結構程序設計
第1講 算法及結構化程序設計方法隨堂測驗
1、有些算法沒有輸入或者輸出。
第2講 程序基本結構隨堂測驗
1、所有的程序都可以用順序、分支和循環三種基本結構表示出來。
第3講 數據輸入與輸出(上)隨堂測驗
1、如有定義int a=128; 則輸出語句printf(“%o”,a);的輸出結果為( )。
A、200
B、128
C、100
D、格式描述符使用錯誤
第4講 數據輸入與輸出(下)隨堂測驗
1、C語言中,輸入輸出的功能是使用庫函數實現的。
第5講 二路分支1隨堂測驗
1、條件表達式x=0?z=10:z=-10的作用相當于分支語句 if(!x) z=10; else z=-10
第6講 二路分支2隨堂測驗
1、else會和離它最近的if配對。
第7講 多路分支隨堂測驗
1、以下選項中,()不屬于switch語句的關鍵字。
A、for
B、case
C、default
D、break
第4章 循環結構程序設計
第1講 循環控制語句隨堂測驗
1、C語言提供的循環控制語句有while、do-while、for三種。
第2講 循環嵌套隨堂測驗
1、外重循環每執行一次,內重循環要執行完整的一遍。
第3講 循環典型應用--累加累乘問題隨堂測驗
1、求解1!+2!+3!+ ... + n!的問題,可以使用一重循環完成,也可以使用兩重循環完成。
第4講 循環典型應用--迭代問題隨堂測驗
1、迭代問題的求解關鍵要素:確定迭代變量;確定迭代關系式;確定迭代次數。
第5講 循環典型應用問題--猴子吃桃隨堂測驗
1、猴子吃桃問題使用迭代遞推方法實現時有2個迭代變量。
第4章 單元測驗
1、以下說法正確的是( )。
A、do-while語句構成的循環不能用其他語句構成的循環來代替。
B、do-while語句構成的循環只能用break語句退出。
C、用do-while語句構成的循環,在while后的表達式為非0時結束循環。
D、用do-while語句構成的循環,在while后的表達式為0時結束循環
2、以下程序運行時從鍵盤輸入3.6,2.4,輸出結果是( )。 #include void main() { float x,y,z; scanf("%f,%f",&x,&y); z=x/y; while(1) { if(fabs(z)>1.0) { x=y; y=x; z=x/y; } else break; } printf("%f",y); }
A、1.500000
B、1.600000
C、2.000000
D、2.400000
3、如果c是大于1的正整數,與以下程序段功能相等的賦值語句是( )。 s=a; for(b=1;b<=c;b++) s=s+1;
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;
4、有一條長階梯,若每步跨2階,則最后剩余1階,若每步跨3階,則最后剩余2階,若每步跨5階,則最后剩余4階,若每步跨6階,則最后剩余5階,若每步跨7階,最后才正好一階不剩。請問,這條階梯共有多少階。 請補充while語句后的判斷條件。 #include void main() { int i=1; while( ) ++i; printf("階梯共有%d階.\n",i); }
A、!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))
B、(i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)
C、!((i%2==0)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))
D、!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==1))
5、以下程序段的輸出結果是( )。 #include void main() { int a=3; do { printf("%d",a--); }while(!a); }
A、321
B、3
C、不輸出任何內容
D、32
6、若定義int i; 則以下for語句的執行結果是( )。 for(i=1;i<10;i++) { if(i%3) i++; ++i; printf("%d",i); }
A、35811
B、369
C、258
D、2468
7、以下程序段的輸出結果是( )。 int n=10; while(n>7) { printf("%d,",n); n--; }
A、10,9,8,
B、10,9,8,7,
C、9,8,7,6,
D、9,8,7,
8、以下程序的輸出結果是( )。 #include void main() { int i=5; for(;i<15;) { i++; if(i%4==0) printf("%2d",i); else continue; } }
A、81216
B、812
C、1216
D、8
9、以下關于for語句的說法不正確的是( )。
A、for循環只能用于循環次數已經確定的情況
B、for循環是先判斷表達式,后執行循環體語句
C、for循環中,可以用break語句跳出循環體
D、for循環體語句中,可以包含多條語句,但要用花括號括起來。
10、C語言中,while語句和do-while語句的主要區別是( )。
A、do-while的循環體不能是復合語句
B、do-while的循環體至少無條件執行一次
C、while的循環控制條件比do-while的循環控制條件嚴格
D、do-while允許從外部轉到循環體內
11、若定義int i;則以下循環語句的循環執行次數是( )。 for(i=2;i==0;) printf("%d",i--);
A、0
B、1
C、2
D、無限次
12、下面程序段的輸出結果是__________。 #include void main() { int n=4; while(n) printf("%d",--n); }
A、3210
B、4321
C、321
D、43210
13、在while(x)語句中的x與下面條件表達式等價的是__________。
A、x!=0
B、x==0
C、x!=1
D、x==1
14、語句while(!y)中的!y等價于y!=0。
15、下面程序段循環一次也不執行。 int x=10; while(x=0) x=x-1;
16、for語句中的表達式可以部分或全部省略,但是兩個分號不能省略。
17、用于直接中斷最內層循環的語句是break。
18、以下程序的輸出結果是n=4 #include void main() { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d",n); }
19、while語句與do-while語句功能相同。
20、for語句只能實現循環次數確定的循環。
第5章 數組
第1講 一維數組的概念隨堂測驗
1、靜態數組的大小必須是提前固定的。
第2講 一維數組的應用(上)隨堂測驗
1、數組具有隨機存取的特點。
第3講 一維數組的應用(下)隨堂測驗
1、冒泡排序的核心思想是相鄰的元素如果是逆序就進行交換。
第4講 二維數組的概念隨堂測驗
1、二維數組可以看成是由多個一維數組構成的一維數組。
第5講 二維數組的應用(上)隨堂測驗
1、矩陣的運算可以借助二維數組來實現。
第6講 二維數組的應用(下)隨堂測驗
1、在C語言中,二維數組是按照行序為主序進行存儲的。
第7講 字符數組的概念隨堂測驗
1、字符數組可以用來處理字符串問題。
第8講 字符串處理函數隨堂測驗
1、strcopy函數多用來進行字符串的賦初值。
第9講 字符串的應用隨堂測驗
1、二維字符數組可以處理多個字符串的應用問題。
第10講 指針和一維數組隨堂測驗
1、數組名是該數組首元素的起始地址,是一個地址常量。
第11講 折半查找隨堂測驗
1、折半查找要求是待查記錄是有序排列的。
第12講 冒泡排序隨堂測驗
1、冒泡排序是穩定性排序方法。
第5章單元測驗
1、若定義以下變量和數組: int i; int a[3][3]={1,2,3,4,5,6,7,8,9}; 則下列語句的輸出結果是( )。 for(i=0;i<3;i++) printf("%d ",a[i][2-i]);
A、1 5 9
B、1 4 7
C、3 5 7
D、3 6 9
2、以下程序執行后的輸出結果是( )。 #include void main() { int i,j,s=0; int a[4][4]={1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0}; for(j=0;j<4;j++) { i=j; if(i>2) i=3-j; s+=a[i][j]; } printf("%d\n",s); }
A、12
B、11
C、18
D、16
3、設有定義語句int a[2][4];則以下敘述不正確的是( )。
A、a數組可以看成是由a[0]、a[1]兩個元素組成的一維數組
B、a[0]代表一個地址常量
C、元素a[0]是由4個整型元素組成的一維數組
D、可以用a[0]=5;的形式給數組元素賦值
4、假設a、b均為字符數組,則以下正確的輸入語句是( )。
A、gets(a,b);
B、scanf("%s %s",a,b);
C、scanf("%s %s",&a,&b);
D、gets("a");gets("b");
5、下列描述正確的是( )。
A、兩個字符串所包含的字符個數相同時,才能比較字符串
B、字符個數多的字符串比字符個數少的字符串大
C、字符串"That"小于字符串"The"
D、字符串 "STOP " 與 "STOP" 相等
6、以下能對二維數組a進行正確初始化的是( )。
A、int a[][3]={{1,2,3},{4,5,6}};
B、int a[2][4]={1,2,3},{{4,5},{6}};
C、int a[2][]={{1,0,1},{5,2,3}};
D、int a[][3]={{1,0,1},{},{1,1}};
7、以下合法的數組定義是( )。
A、int a[]="Language";
B、int a[5]={0,1,2,3,4,5};
C、char a="C Program";
D、char a[]="C Program Language.";
8、在C語言中引用數組元素時,其數組下標的數據類型允許是( )。
A、整型常量
B、整型表達式
C、整型常量或整型表達式
D、任何類型的表達式
9、以下程序的輸出結果是( )。 #include #include void main() { char str[10]="Ch\nina"; printf("%d",strlen(str)); }
A、5
B、6
C、7
D、10
10、已知int a[3][2]={3,2,1};則表達式“a[0][0]/a[0][1]/a[1][0]”的值是( )。
A、0
B、1
C、0.16667
D、錯誤的表達式
11、下列說法錯誤的是( )。
A、C語言中的二維數組在內存中是按列優先存儲的。
B、C語言中數組的下標都是從0開始的。
C、C語言中不帶下標的數組名代表數組的首地址。
D、C語言中,靜態數組的大小不能使用變量進行定義。
12、若int A[5]={1,2,3};則A[2]的值是( )。
A、1
B、2
C、3
D、0
13、判斷字符串S1是否大于字符串S2,應當使用( )。
A、if(S1>S2)
B、if(strcmp(S1,S2))
C、if(strcmp(S1,S2)>0)
D、if(strcmp(S2,S1)>0)
14、調用strlen("abcd\0ed\0g")的返回值為4。
15、當接受用戶輸入的含空格的字符串時,應使用getc函數。
16、數組名實際是該數組首元素的起始地址。
17、一個字符數組就是一個字符串。
18、指向數組元素的指針只能指向數組的首元素。
19、在C語言中,只有一維數組和二維數組( )。
20、int A[]={1,2,3,4};這種賦值方式是錯誤的。
第5章編程題目
1、最大值
2、數組排序。
第6章 函數和模塊設計
第1講 函數概念、定義及調用隨堂測驗
1、一個C源程序可以由多個函數組成。
第2講 函數參數傳遞隨堂測驗
1、當被調函數需要使用主調函數中的數據時,可以將主調函數中的這些數據作為參數傳遞給被調函數。
第3講 函數嵌套調用隨堂測驗
1、C語言中,函數允許嵌套調用但是不允許嵌套定義。
第4講 函數遞歸調用隨堂測驗
1、函數的遞歸調用比非遞歸實現系統代價要大。
第5講 變量的作用域隨堂測驗
1、全局變量如果未初始化,系統會自動賦初值為0
第6章單元測驗
1、以下說法正確的是( )。
A、實參和與其對應的形參各占用獨立的存儲單元
B、實參和與其對應的形參共享一個存儲單元
C、只有當形參和與其對用的實參同名時才共享存儲單元
D、形參是虛擬的,不占用存儲單元
2、C語言中,函數的數據類型是指( )。
A、函數返回值的數據類型
B、函數形參的數據類型
C、調用該函數時的實參的數據類型
D、任意指定的數據類型
3、以下敘述正確的是( )。
A、全局變量的作用域一定比局部變量的作用域范圍大
B、靜態類型變量的生存期貫穿于整個程序的運行期間
C、函數的形參都屬于全局變量
D、未在定義語句中賦值的auto變量和static變量的初值都是隨機值
4、以下說法不正確的是( )。
A、在不同的函數中可以有相同名字的變量
B、在一個函數內定義的變量只能在本函數內有效
C、函數的形式參數是局部變量
D、在一個函數內的復合語句中定義的變量在本函數內有效
5、下列程序的輸出結果是( )。 #include void f(int x,int y,int z) { z=x+y; } void main() { int a; f(5,6,a); printf("%d\n",a); }
A、1
B、11
C、12
D、不確定的值
6、以下程序的輸出結果是( )。 #include int func(int a,int b) { return(a+b); } void main() { int x=6,y=7,z=8,r; r=func(func(x,y),z--); printf("%d\n",r); }
A、15
B、20
C、21
D、31
7、以下程序的輸出結果是( )。 #include double f(int n) { int i; double s=0; for(i=1;i<=n;i++) s+=1/i; return s; } void main() { int i,m=3; float a=0.0; for(i=0;i<=m;i++) a=a+f(i); printf("%f\n",a); }
A、5.5000000
B、3.000000
C、4.000000
D、8.25
8、以下程序的輸出結果是( )。 #include int f(int a) { int b=0; static int c=3; a=c++,b++; return a; } void main() { int a,i,t; a=3; for(i=0;i<3;i++) t=f(a++); printf("%d\n",t); }
A、3
B、4
C、5
D、6
9、以下程序的執行結果是( )。 #include long ff(int n) { if (n>3) return (ff(n-1)+ff(n-2)); else return(3); } void main() { printf("%d\n",ff(4)); }
A、5
B、6
C、7
D、8
10、以下程序的執行結果是( )。 #include int k=1; void fun(int m) { m+=k; k+=m; { char k='B'; printf("%d,",k-'A'); } printf("%d,%d",m,k); } void main() { int i=4; fun(i); printf("%d,%d",i,k); }
A、1,5,64,6
B、2,5,64,6
C、1,6,64,6
D、1,5,63,6
11、下列函數調用語句中含有5個實參。 fun((a1,a2),(a3,a4,a5));
12、為提高程序的運行速度,在函數中對于自動變量和形參可用register型的變量。
13、凡在函數中未指定存儲類別的變量,其隱含的存儲類別是void類型。
14、C語言中的函數可以嵌套調用,但不可以嵌套定義。
15、若調用一個函數,且此函數中沒有return語句,則該函數沒有返回值 。
第7章 指針基礎
第1講 指針基礎(上)隨堂測驗
1、指針實質就是地址。
第2講 指針基礎(下)隨堂測驗
1、指針提供了間接訪問變量的作用。
第3講 指針與數組隨堂測驗
1、數組名是該數組首元素的起始地址,是一個地址常量。
第7章 單元測驗
1、以下程序的運行結果是( )。 #include void main() { int k=1,j=2,*p,*q,*t; p=&k; q=&j; t=p; p=q; q=t; printf("%d,%d",*p,*q); }
A、2,1
B、1,2
C、1,1
D、2,2
2、關于指針變量,以下描述不正確的是( )。
A、在沒有對指針變量賦值時,指針變量的值是不確定的
B、基類型相同的指針變量可以進行相減運算
C、在使用沒有賦值的指針變量時,不會出現問題
D、可以通過指針變量來取得它指向的變量值
3、下列關于指針說法正確的是 ( )。
A、指針是用來存儲變量值的類型
B、指針類型只有一種
C、指針變量可以與整數進行相加或相減運算
D、指針變量的存儲空間與其基類型有關
4、下列運算中,不屬于指針變量p的常用運算的是( )。
A、p++
B、p*1
C、p--
D、p+2
5、下列選項中,()是取值運算符。
A、*
B、&
C、#
D、!
6、指針變量所占用的內存空間和其基類型無關。
7、指針變量用來存儲某一個變量的地址。
8、指針變量和指針所指向的變量是一樣的。
9、指針變量有間接訪問另外一個變量的作用。
10、指針變量的基類型可以是任何一種基本數據類型。