学习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语言还是很不错的。