C语言自我检测试题
引导语:检测自己的C语言学习程度,做一下相关的练习题就见分晓了,以下是小编整理的C语言自我检测试题,欢迎参考阅读!
一、填空题:(24分每空1.5分)
1.已知:int *p,a; 则语句 p=&a;中的运算符&的含义是( 1 )。
2.凡在函数体内没有明显存储类别说明的变量是( 2 )。
3.已知:
struct
{ int k;
char c;
floata;}test;
则sizeof(test)的值是(3 )。
4.程序填空:
(1)下面的程序是main函数利用函数abcd来交换main中的两个变量的值。
# include
main()
{floatx=10,y=20;
abcd( 4 );
printf("%f,%f",x,y);
}
abcd(x,y)
( 5 );
{
floattemp;
temp=( 6 );
( 7);
( 8);
}
(2)下面的程序是使用冒泡法对输入的10个数据从小到大排序。排好序的10个数分两行输出。
#include
main()
{
( 9);
int j,k;
printf(" input 10 numbers please
");
for(j=0;( 10 );j++)
scanf("%f",&a[j]);
printf("
");
for(j=0;( 11 );j++)
for(k=0;( 12 );k++)
if( 13 )
{ x=a[k];
( 14 );
a[k+1]=x;
}
printf("The sorted 10 numbers:
");
for(j=0;( 15 );j++)
{ if( 16 )
printf("
");
printf("%f ",a[j]);
}
printf("
");
}
二、单项选择题:(20分每题2分)
1.C语言中基本数据类型包括( )。
A. 整型、实型、逻辑型
B. 整型、实型、字符型
C. 整型、字符型、逻辑型
D. 整型、实型、逻辑型、实型
2.已知int i,a;执行语句”i=(a=2*3,a*5),a+6;”后,变量a的值是()。
A.6
B.12
C. 30
D. 36
3.C语言中规定函数的返回值的类型是由()。
A. return语句中的表达式类型所决定
B. 调用该函数时的主调用函数类型所决定
C. 调用该函数时系统临时决定
D. 在定义该函数时所指定的函数类型所决定
4.不能进行++和--运算的数据类型是()。
A. 指针
B. double
C. int
D. long
5.为了判断两个字符串s1和s2是否相等,应当使用( )。
A.if(s1==s2)
B. if(s1=s2)
C. if(strcpy(s1,s2))
Dif (strcmp(s1,s2))
6.若有以下说明和语句:
struct stu
{
int no;
char *name;}student,*p=&student;
则以下引用方法不正确的是( )。
A.student.no
B. (*p).no
C. p->no
D. student->no
7.以下不是死循环的语句为( )。
A.for(; ; x+=k);
B.while(1){x++};
C.for(k=10; ;k--)sum+=k;
D.for(;(c=get))!=’
’;)printf(“%c”,c);
8.以下错误的描述是( )。
A. 不同的.函数中可以使用相同的变量名
B. 形式参数是局部变量
C. 一个函数内部定义的变量只能在本函数范围内有效
D. 在一个函数内部的复合语句中定义的变量可以在 本函数范围内有效
9.若用数组名作为函数调用时实参,则实际上传递给形参的是()。
A.数组首地址
B. 数组的第一个元素值
C.数组中全部元素的值
D. 数组元素的个数
10.已知 int a,*p=&a; 则为了得到变量a的值,下列错误的表达式是()。
A.*&p
B.*p
C.p[0]
D.*&a
三、判断下列问题描述及语句正确与否,正确的打“√”。(16分每题2分)
1.C的关键字都是小写的。
2.一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。
3.# definePI=3.14159
4.局部变量在进入代码块时生成,退出代码块时消失。
5.inta=123456;
6.函数可以嵌套定义,也可嵌套调用。
7. switch与if不同,switch只能测试是否相等,而if中还能测试关系和逻辑表达式。
8.break和continue语句都可用于选择结构和循环结构中。
四、读程序,写出运行结果:(20分每题5分)
1.
main()
{ int a=5,b=4,x,y;
x=a++*a++*a++;
printf("a=%d,x=%d
",a,x);
y=--b*--b*--b;
printf("b=%d,y=%d
",b,y);
}
2.
#include
main()
{
struct s1
{char c[4],*s;}s1={"abc","def"};
struct s2
{char *cp;
struct s1ss1;}s2={"ghi",{"jkl","mno"}};
printf("%c%c
",s1.c[0],*s1.s);
printf("%s%s
",s1.c,s1.s);
printf("%s%s
",s2.cp,s2.ss1.s);
printf("%s%s
",++s2.cp,++s2.ss1.s);
}
3.
#include
func(int b[])
{ int j;
for(j=0;j<4;j++)
b[j]=j;
}
main()
{int a[4],k;
func(a);
for(k=0;k<4;k++)
printf("%d
",a[k]);
}
4.
voidfun()
{ static int a=5;
a++;
printf("a=%d
",a);
}
main()
{
int m;
for(m=0;m<=1;m++)
fun();
}
五、编程(20分)
1.有一个3*4的矩阵,找出最大值及该值所在位置。(10分)
2.写一个函数,计算x的n次方。(10分)