大一c语言期末考试题库

一、选择题(* * 10题,每题2分,***20分。从可供选择的答案中选择最佳答案。多选、错选、不选、不得分)

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。