嵌入式(shi)學習(xi)筆記:C基礎(chu)高級測試(shi)題總結(jie)
時(shi)間(jian):2018-09-07 來源:未(wei)知
學習C語言,最重要的(de)(de)就是(shi)要讓(rang)理論與(yu)實踐(jian)相結(jie)合(he),這樣(yang)才能學的(de)(de)扎實而不迷茫,在這里總結(jie)出來一些(xie)c基礎高級(ji)測試題,讓(rang)你對你學的(de)(de)知識來進(jin)行一個鞏固。都(dou)是(shi)很(hen)常見的(de)(de)題型,快快看看吧。
一、選擇題
1.下列四組選項中,均不是C語言鍵字的(de)選項是 A
A)define , IF, type B) getc, char, printf C) include, scanf, case D) if, struct, type
2.若(ruo)有定義(yi)int i=2,a[10],*p=&a[i];則與*p++ 等(deng)價的是 A 。
A、a[i++] B、a[i]++ C、a[i] D、a[++i]
3.若有語句int*point,a=4;和ponit=&a; 下面均代(dai)表(biao)地址的一組選項是____D____.
A) a,point,*&a B) &*a,&a,*point C) *&point,*point,&a D) &a,&*point,point
4.以(yi)下程序的運行結果是 B 。
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{int I=10,j=15,k;
k=10*MIN(I,j); 10*10 < 15 ? 10:15
printf(“%d\n”,k);
}
A)10 B)15 C)100 D)150
5.以下能對(dui)二維數(shu)組a進行正確初始化的語(yu)句是_B_D__。
A) int a[2][ ]={{1,0,1},{5,2,3,}}; B)int a[ ][3]={{1,2,3},{4}};
C)int a[2][4]={1,2,3,},{4,5},{6}}; D)int a[3][3]={{1,0,4},{1,1}};
6.以下(xia)程序的運行結果是 C 。
main()
{int m=5;
if(m++>5)printf(“%d\n”,m);
else
printf(“%d\n”,m --);6
}
A)4 B)5 C)6 D)7
7.在(zai)C語言中,要(yao)求(qiu)運算數(shu)必須是整(zheng)型的運算符是( D)。
A) / B) ++ C) != D) %
8.下(xia)面函數(shu)的功能是( A )。
int fun (char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
A) 求字(zi)符(fu)串的長(chang)度 B) 比較兩個字(zi)符(fu)串的大小(xiao)
C) 將字符(fu)(fu)串(chuan)x復制到(dao)字符(fu)(fu)串(chuan)y D) 將字符(fu)(fu)串(chuan)x連接到(dao)字符(fu)(fu)串(chuan)y后(hou)面(mian)
9.執(zhi)行(xing)下面語句后的輸出結果為( D )。
int i = -1;
if (i < =0)
printf(“****\n”);
i = 2;
else
printf(“%%%%\n”);
A) **** B) %% C) %%%% D) 有(you)語法(fa)錯誤(wu)。不能正確執行(xing)
10.下面的程序運行結果為( B )。
int main(void)
{
int x = 3, y = 1, z = 0;
if(x = y + z)
printf(“****”);
else
printf(“####”);
}
A) 語法有錯誤,不能(neng)編譯(yi) B) **** C) #### D) 能(neng)編譯(yi),不能(neng)連接
11.下述程序的輸出結果是( C )。
int main(void)
{
int Y=100;
while(Y- -);
printf(“Y=%d”,Y);
}
A) Y=0 B) Y=1 C) Y=-1 D) Y=隨機(ji)數
12.下面這段程序的輸(shu)出是()
void e(int );
main()
{
int a;
a=3;
e(a);
}
void e(int n)
{
if(n>0)
{
e(--n);
printf("%d" , n);
e(--n);
}
}
A) 0 1 2 0 B) 0 1 2 1 C) 1 2 0 1 D) 0 2 1 1
13.在一個C源(yuan)程序文(wen)件中(zhong),若要(yao)定義一個只允許本(ben)源(yuan)文(wen)件中(zhong)所有函數使用的(de)(de)全局變量(liang),則該變量(liang)需要(yao)使用的(de)(de)存儲類別是( D)。
A) extern B) register C) auto D) static
14.以下程序的運(yun)行結果為( B )。
void sub(int x, int y, int *z)
{ *z = y – x ; }
int main(void)
{
int a,b,c ;
sub(10, 5, &a) ; a = -5
sub(7, a, &b) ; b = -12
sub(a, b, &c) ; c = -7
printf( “%4d,%4d, %4d\n”,a,b,c);}
A) 5, 2, 3 B) -5, -12, -7 C) -5, -12, -17 D) 5, -2, -7
15.#define ADD(x) x+x
main()
{
int m=1,n=2,k=3;
int sum=ADD(m+n)*k; m+n+m+n*k 1+2+1+2*3
printf(“sum=%d”,sum);
}
上(shang)面程序的運行結果(guo)是 B 。
A) sum=9 B) sum=10 C) sum=12 D) sum=18
二、填空題
1.設二進(jin)制數(shu)(shu)x的值是11001101,若想通過x&y 運算使x中(zhong)的低4位不(bu)變(bian),高(gao)4位清零(ling),則y的二進(jin)制 數(shu)(shu)為( 00001111 )。
2. 若有(you)以下定義和(he)語句,則*p[0]引用的(de)是(shi)a數組元(yuan)(yuan)素(su)中(zhong)(zhong)的(de)( a[0] ),*(p[1]+1)引用的(de)是(shi)a數組元(yuan)(yuan)素(su)中(zhong)(zhong)的(de)( a[3] )。&a[2] int * &a[3]
int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i]; &a[0] &a[2] &a[4]
3. 若(ruo)有以下輸入(代表回車(che)換行符),則下面程(cheng)序的(de)運行結果為(wei)( 7 )。p[1][2]
1,2
int main(void)
{
int a[3][4] = {1,2,3,4 ,5,6,7,8, 9,10,11,12};
p = a;
scanf(“%d,%d”,&i,&j);
printf(“%d\n”, *(*(p+i)+j));
return 0;
}
4.下(xia)面(mian)程序段中循環體的執行(xing)次數是( 3 )。 2 6 4 0
a =10;
b =0;
do { b+=2; a-=2+b;} while(a>=0);
5.已知(zhi)一(yi)個函(han)數(shu)原型為 char *fun(int,int (*)(int)),請寫出指(zhi)向這個函(han)數(shu)的指(zhi)針(zhen)( char* (*p)(int,int(*)(int)) )
6.請寫出(chu)一個(ge)(ge)數組(zu)原型,里面(mian)有3個(ge)(ge)元素(su),每(mei)個(ge)(ge)元素(su)都(dou)是數組(zu)指針(zhen)(zhen),而且(qie)數組(zu)指針(zhen)(zhen)指向的二維數組(zu)都(dou)有4
列并且(qie)內部元素都是(shi)char類型(xing)。( char(*a[3])[4] )
三、編程題
1.編寫程序(xu)實現功能(neng):輸入一個(ge)日(ri)期(qi),判斷這(zhe)個(ge)日(ri)期(qi)是這(zhe)一年的(de)第(di)幾天,輸出結果;
2.設(she)計(ji)將數組s[N]中所有奇數移到所有偶數之前的算法(fa)。注意:不(bu)另增(zeng)加存儲空間(jian).
3.寫一(yi)個(ge)(ge)函(han)數,統計一(yi)個(ge)(ge)int類型(xing)的二(er)進制(zhi)值中有(you)多少位為1。
4.請實現(xian)一個函數(shu),實現(xian)字符串拷貝函數(shu)(strcpy)的功能
這些(xie)都是(shi)學(xue)(xue)習C語(yu)言必須要學(xue)(xue)會的(de),雖然不是(shi)很全,但是(shi)對(dui)學(xue)(xue)習C語(yu)言還是(shi)很不錯的(de)。

