當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:C基礎(chǔ)高級(jí)測試題總結(jié)
學(xué)習(xí)C語言,最重要的就是要讓理論與實(shí)踐相結(jié)合,這樣才能學(xué)的扎實(shí)而不迷茫,在這里總結(jié)出來一些c基礎(chǔ)高級(jí)測試題,讓你對(duì)你學(xué)的知識(shí)來進(jìn)行一個(gè)鞏固。都是很常見的題型,快快看看吧。
一、選擇題
1.下列四組選項(xiàng)中,均不是C語言鍵字的選項(xiàng)是 A
A)define , IF, type B) getc, char, printf C) include, scanf, case D) if, struct, type
2.若有定義int i=2,a[10],*p=&a[i];則與*p++ 等價(jià)的是 A 。
A、a[i++] B、a[i]++ C、a[i] D、a[++i]
3.若有語句int*point,a=4;和ponit=&a; 下面均代表地址的一組選項(xiàng)是____D____.
A) a,point,*&a B) &*a,&a,*point C) *&point,*point,&a D) &a,&*point,point
4.以下程序的運(yùn)行結(jié)果是 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.以下能對(duì)二維數(shù)組a進(jìn)行正確初始化的語句是_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.以下程序的運(yùn)行結(jié)果是 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.在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是( D)。
A) / B) ++ C) != D) %
8.下面函數(shù)的功能是( A )。
int fun (char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
A) 求字符串的長度 B) 比較兩個(gè)字符串的大小
C) 將字符串x復(fù)制到字符串y D) 將字符串x連接到字符串y后面
9.執(zhí)行下面語句后的輸出結(jié)果為( D )。
int i = -1;
if (i < =0)
printf(“****\n”);
i = 2;
else
printf(“%%%%\n”);
A) **** B) %% C) %%%% D) 有語法錯(cuò)誤。不能正確執(zhí)行
10.下面的程序運(yùn)行結(jié)果為( B )。
int main(void)
{
int x = 3, y = 1, z = 0;
if(x = y + z)
printf(“****”);
else
printf(“####”);
}
A) 語法有錯(cuò)誤,不能編譯 B) **** C) #### D) 能編譯,不能連接
11.下述程序的輸出結(jié)果是( C )。
int main(void)
{
int Y=100;
while(Y- -);
printf(“Y=%d”,Y);
}
A) Y=0 B) Y=1 C) Y=-1 D) Y=隨機(jī)數(shù)
12.下面這段程序的輸出是()
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.在一個(gè)C源程序文件中,若要定義一個(gè)只允許本源文件中所有函數(shù)使用的全局變量,則該變量需要使用的存儲(chǔ)類別是( D)。
A) extern B) register C) auto D) static
14.以下程序的運(yùn)行結(jié)果為( 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);
}
上面程序的運(yùn)行結(jié)果是 B 。
A) sum=9 B) sum=10 C) sum=12 D) sum=18
二、填空題
1.設(shè)二進(jìn)制數(shù)x的值是11001101,若想通過x&y 運(yùn)算使x中的低4位不變,高4位清零,則y的二進(jìn)制 數(shù)為( 00001111 )。
2. 若有以下定義和語句,則*p[0]引用的是a數(shù)組元素中的( a[0] ),*(p[1]+1)引用的是a數(shù)組元素中的( 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. 若有以下輸入(代表回車換行符),則下面程序的運(yùn)行結(jié)果為( 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.下面程序段中循環(huán)體的執(zhí)行次數(shù)是( 3 )。 2 6 4 0
a =10;
b =0;
do { b+=2; a-=2+b;} while(a>=0);
5.已知一個(gè)函數(shù)原型為 char *fun(int,int (*)(int)),請(qǐng)寫出指向這個(gè)函數(shù)的指針( char* (*p)(int,int(*)(int)) )
6.請(qǐng)寫出一個(gè)數(shù)組原型,里面有3個(gè)元素,每個(gè)元素都是數(shù)組指針,而且數(shù)組指針指向的二維數(shù)組都有4
列并且內(nèi)部元素都是char類型。( char(*a[3])[4] )
三、編程題
1.編寫程序?qū)崿F(xiàn)功能:輸入一個(gè)日期,判斷這個(gè)日期是這一年的第幾天,輸出結(jié)果;
2.設(shè)計(jì)將數(shù)組s[N]中所有奇數(shù)移到所有偶數(shù)之前的算法。注意:不另增加存儲(chǔ)空間.
3.寫一個(gè)函數(shù),統(tǒng)計(jì)一個(gè)int類型的二進(jìn)制值中有多少位為1。
4.請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),實(shí)現(xiàn)字符串拷貝函數(shù)(strcpy)的功能
這些都是學(xué)習(xí)C語言必須要學(xué)會(huì)的,雖然不是很全,但是對(duì)學(xué)習(xí)C語言還是很不錯(cuò)的。