一、選擇題(1—14每題1分,15-18每題1.5分,共20分)
1.可選作用戶標識符的一組標識符是( )
A void B c5_b8 C For D 3a
Define _53 -ab DO
WORD IF Case int
2.在C語言中,非法的八進位是:( )
A.018 B.016 C.017 D.0257
3.在TC中,基本int a[4]類型變量所佔的字節數是( )
A.1 B.2 C.4 D.8
4.設x,y,z,k都是int型變量,則執行表達式:x=(y=4,z=16,k=32)後,x的值為( )
A.4 B.16 C.32 D.52
5.設int型變量a為5,使b不為2的表達式是( )
A.b=a/2 B.b=6-(-a) C.b=a%2 D.b=a>3?2:1
6.一個C程序的執行是從( )
A.main()函數開始,直到main()函數結束。
B.第一個函數開始,最後一個函數結束。
C.第一個語句開始,最後一個語句結束。
D.main()函數開始,直到最後一個函數。
7.C語言中用於結構化程序設計的三種基本結構是( )
A.if、switch、break
B.if while for
C.while do- while for
D.順序結構、選擇結構、循環結構
8.以下敘述中不正確的是( )
A.在不同的函數中可以使用相同名字的變量。
B.函數中的形式參數是局部變量。
C.在一個函數內的符合語句中定義變量在本函數範圍內有效。
D.在一個函數內定義的變量只在本函數範圍內有效。
9.若k為int 類型,且k的值為3,執行語句k+=k-=k*k後,k的值為( )
A.-3 B.6 C.-9 D.-12
10.有以下程序
main()
{int x=3,y=3,z=3;
printf(「%d %d\n」(++x,y++),++z);} 輸出結果( )
A.3 3 B.3 4
C.4 2 D.4 3
11.若有定義和語句:int a=21,b=021; printf(「%x,%d \n」,a,b);輸出結果( )
A.17,15 B.16,18
C.17,19 D.15,17
12.已有定義語句:int x=3,y=4,z=5;則值為0的表達式是( )
A.x>y++ B.x<=++y
C.x!=y+z>y-z D.y%z>=y-z
13.能正確表達邏輯關係「a≥10或a≤0」的C語言表達式是( )
A.a>=10 or a<=0 B.a>=10||a<=0
C.a>=10&&a<=0 D.a>=10|a<=0
14.n為整型常量,且n=2;while(n——);printf(「%d」,n);執行後的結果是:( )
A.2 B.1 C.-1 D.0
15.若有以下定義和賦值double *q,a=5.5; int *p,i=1; double *q,a=5.5;int *p,i=1; p=&i; q=&a; 以下對賦值語句敘述錯誤的是( )。
A)*p=*q 變i中的值。
B)p=oxffd0;將改變p的值,使p指向地址為ffd0的存儲單元。
C)*q=*p;等同於a=i;
D)*p=*q;是取q所指變量的值放在p所指的存儲單元
16.若有以下定義語句double a[8],*p=a; int i=5; 對數組元素錯誤的引用是( )
A)*a B) *a[5] C)*(p+i) D)p[8]
17.以下選項中不能使指針正確指向字符串的是( )
A)char *ch;*ch=「hello」
B)char *ch=「hello」
C)char *ch=「hello」;ch=「bye」
D)char *ch「;ch=」hello「
18.若有以下說明和定義語句:union uti {int n;double g;char ch[9];}
struct srt{float xy;union uti uv;}aa;則變量aa所佔內存的字節數是( )
A) 9 B) 8 C) 13 D) 17
二、填空題(每空1分,共12分)
1.C語言源程序文件的擴展名是 (1) ,經過編譯後,生成文件的擴展名是 (2) ,經過連接後,生成文件的擴展名是 (3).
2.把a,b定義成長整型變量的定義語句是 (4)
3.設x和y均為整型變量,且x=3,y=2,則1.0*x/y表達式的值為 (5)
4.已有定義:float x=5.5;則表達式:x=(int)x+2的值為 (6)
5.已有定義:int x=0,y=0;則表達式:(x+=2,y=x+3/2,y+5)後,變量x的值為 (7),變量y的值為 (8),表達式的值為 (9) .
6.執行以下for(i=1;i++<=5)語句後,變量i的值為(10).
7.數組是表示類型相同的數據,而結構體則是若干 (11)數據項的集合。
8.C語言中文件是指 (12) .
三、程序補充題(每空3分,共24分)
1.從鍵盤上輸入若干個學生成績,統計並輸出最高成績和最低成績,當輸入負數時結束輸入。
main()
{ float s,gmax,gmin;
scanf(「%f,」&s);
gmax=s;gmin=s;
while (1)
{if(s>gmax)gmax=s;
if (2) gmin=s;
scanf(「%f」,&s);}
printf(「gmax=%f\ngmin=%f\n」gmax,gmin);}
2.求任意兩個正整數的最大公約數和最小公倍數
#include 「stdio.h」
main()
{int r,m,n,temp,gcd,lcm;
printf(「enter two number please:」);
scanf(「 (3) 」,&m,&n);
lcm=m*n;
while(m%n!=0)
{r=m%n;(4);n=r;}
gcd=n;lcm=lcm/n;
printf(「gcd=%d\nlcm=%d\n」,gcd,lcm);}
3.求y的x次方。
Double fun1(double y,int x)
main(){int i;
double z=1.0;
for(i=1;i (5) ;i++)
z= (6) ;
return z;}
4.對輸入一個整數進行判斷,若是偶數,輸出even,否則輸出odd,在子函數fun2功能是判定整數是否為偶數,若是偶數,返回1,否則返回0.
int fun2(int x)
{if(x%2==0) (7) ;
return 0 ;}
main()
{int n;
scanf(「%d」,&n);
if (8) printf(「even\n」);
else printf(「odd\n」);}
四、按格式寫出程序運行結果(每題4分共20分)
1. main()
{int a=1,c=65,d=97;
printf(「a8=%o,a16=%x\n」,a,a);
printf(「c10=%d,c8=%o,c16=%x,cc=%c\n」c,c,c,c);
d++;
printf(「d10=%d,dc=%c\n」d,d);}
程序運行結果為:
2.有以下程序
void f(int x,int y)
{int t;
if(x<y){t=x;x=y;y=t;}}
main()
{int a=4,b=3;c=5;
f(a,b); f(a,c); f(b,c);
printf(「%d,%d,%d」,a,b,c);} 執行後的結果是:( )
3.程序執行的結果是( )
main()
{int i=0,a=2;
if(i==0)printf(「**」);
else printf(「$$」);
printf(「*」);}
4.有以下程序
main()
{int sum=0,n;
scanf(「%d」,&n);
while(n<=5)
{sum+=n;
n++;}
printf(「sum=%d」,sum);}
當輸入:1 程序運行的結果為( )
5.執行以下程序段,輸出的結果為( )
main()
{ int a[2][3]={{3,2,7},{4,8,6}};
int *p,m;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
printf(「m=%d」,m);}
五、按題目要求寫出可運行程序:(24分)
1.模擬計算器功能,編寫程序,根據用戶輸入的運算符,對兩個數進行運算。(用switch語句) ()
2.求3~100之間的全部素數,並統計素數個數。