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