大一c语言期末考试题库
1,不属于C语言基本数据类型的是()。
a、指针类型b、整数
c,字符型d,实型
2.Set: int a=3,b= 4,c= 5,x,y;表达式0 &;& amp(x = a)amp;& amp(y=b)的值是()。
a、1 B、0 C、3 D、4
3,有一个语句int a = 3;然后执行语句a+= 6;之后,变量a的值是()。
a、18 B、3 C、9 D、12
4.执行下面的程序段后,输出的y值是()。
void main()
{ int a[]={2,4,6,8,10 };
int y,* p;
p = & ampa[0];
y = * p;printf("%d ",y);
}
a、2 B、4 C、6 D、8
5.有一个定义的语句:float a[4];分配给数组A的内存空间是()字节。
a、20 B、12 C、16 C、10
6、下列描述错误的是()。
一、break语句可以用在while语句中。
b、break语句和continue语句功能相同。
C.在循环语句中使用break语句的目的是跳出循环,提前结束循环。
D.在loop语句中使用continue语句的目的是在不终止整个循环的情况下结束此循环。
7.C语言中规定,在if语句的嵌套结构中,else总是()。
a、与最近的if配对,与第一个if配对。
c .由具有相同缩进位置的if配对D,并与最近的未配对if配对。
8.解释语句" int(* p)();"的意思是()。
a和p是指向一维数组的指针变量。
b和p是指向整数数据的指针变量。
c和p是指向返回int数据的函数的指针。
d、以上都不正确。
9.关于二维数组c,下列说法正确的是()。
a、int c[3][];b、int c(3,4);
c、int c(2)(2);d、int c[3][2];
10,下列程序段的输出结果是()。
int x=100,y = 200
printf ("% d ",(x,y));
a,100 B,200 C,100,200 D,编译错误。
二、填空题(***7题,* * 10空,每空1分,* * 10分。将答案填在问题中的横线上)
1和C语言提供的三个逻辑运算符是&;& amp|||还有!;
2.函数的返回值是通过函数中的return语句获得的。
3.In "int a [] [3] = {{1},{3,2},{4,5,6},{ 0 } };"定义后,a[2][2]的值为_ 6 _ _;
4.for " int * pa[5];"Pa是一个有五个元素的_ array pointer _,每个元素是一个int变量的_ _ pointer _ _
5.单向链表尾节点的下一个指针应该赋值_ _ null _ _
6.在语句for (x = 1,y = 3;x & gty;Y++)循环体执行的次数为0。
7、int a[5];数组A的第一个地址是2000,所以元素a[1]的地址是2002,元素a[2]的地址是2004。
三、填空题(***2题,* * 5空,每空4分,***20分)
1,下面的程序完成1-1/2+1/3-1/4+1/5+的前n项之和的计算...请填空。
# include & ltstdio.h & gt
int main()
{ int i,n,flag
浮动总和;
scanf("%d ",& ampn);
flag = 1;
sum = 0;
for(I = 1;我& lt= n;i++)
{ sum+=(float)标志/I;
flag =-flag;
}
printf("%.3f\n ",sum);
}
2.下面这个程序的作用是从键盘输入n个整数,统计正数、0和负数的个数。请填空。
# include & ltstdio.h & gt
void main()
{int a,I,count1,count2,count3
count 1 = count 2 = count 3 = 0;
for(I = 1;我& lt= n;i++)
{ scanf("%d ",& ampa);
如果(a & gt0)count 1++;
else if(a = = 0)count 2++;
else count 3++;
}
Printf("正数:&;d,零:%d,负:%d \ n”,count1,count2,count 3);
}
四、运行程序结果(***4题,每题6分,***24分)
1,写程序运行结果。
void main()
{ int x=1,y=2,t;
int *p1,* p2
p 1 = & amp;x;p2 = & ampy;
t = * p 1;* p 1 = * p2;* p2 = t;
printf("x=%d,y=%d\n ",x,y);
}
运行结果如下:
程序有问题,所以无法运行!或者写:
x=2,y=1
2、写出程序运行结果。
# include & ltstdio.h & gt
int max(int a,int b)
{ int c;
c = a & gtb?甲:乙;
返回(c);
}
int min(int a,int b)
{ int c;
c = a & ltb?甲:乙;
返回(c);
}
void main()
{ int a=2,b = 6;
printf("max=%d\n ",max(a,b));
printf("min=%d\n ",min(a,b));
}
运行结果如下:
程序有问题,所以无法运行!或者写:
最大值=6
最小值=2
3、写出程序运行结果。
# include & ltstdio.h & gt
void main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9 };
int i,j,sum = 0;
for(I = 0;我& lt3;i++)
for(j = 0;j & lt3;j++)
if(I = = j)sum = sum+a[I][j];
printf("sum=%d\n ",sum);
}
运行结果如下:
程序有问题,所以无法运行!或者写:
sum=15
4.写出程序的运行结果。
void main()
{ int n,f;
n = 1;
while(n & lt;=10)
{ f = f * n;
n+= 2;
}
printf("f=%d\n ",& ampf);
}
运行结果如下:
程序有问题,所以无法运行!或者写:
F=不确定
五、编程题(***2题,每题13分,***26分)
1.以逆序存储数组,如元素1,2,3,4,5。逆序存储后,就是5,4,3,2,1。