(完整版)广州大学C语言程序设计期末考试试卷含答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考答案
广州大学2009-2010 学年第 1 学期考试卷课程程序设计1 考试形式(闭卷,考试)
一、单项选择题(每小题 2 分,共40 分)
1.十六进制数CDE 转换成八制数是(A )
A) 6336 B) 6363 C) 7337 D) 7373
2.以下所列的C语言常量中,错误的是( B )
A) 1UL B) e0.5 C) “A”D) '\b'
3.已知字母c的ASCII码为十进制的99,下面程序的输出是( A )
int main()
{
char c=’c’;
printf ("%d,%c\n",c+2,c+3);
}
A) 101, f B) 99, f C) 101, e D) 101, 102
4.表达式5-3/2-1 的值是(B )
A) 0 B) 3 C) 2.5 D) 2
5.设x、z均为int型变量,x 的值为1, 则求值表达式z=x--, ++x 后,x, z的值分别为( C )
A) 0, 1 B) 1, 0 C) 1,1 D) 0, 0
6.设x、z均为int型变量,x 的值为1, 则求值表达式z=x--||x++ 后,x, z的值分别为( A )
A) 0, 1 B) 1, 0 C) 1,1 D) 0, 0
7.若函数f 为
int f (int x)
{
return -(x<0)+(x>0);
则f(2009), f(-2008) 和f(0) 的值分别为( C )
A) 0 1 2 B) 1 1 0 C) 1 -1 0 D) -1 1 0
8.下面函数的输出为:(B)
int x=1;
int main()
{
int x=2;
{
extern int x;
printf (“%d ”, x);
}
printf(“%d\n”, x);
}
A) 1 1 B) 1 2 B) 2 1 D) 2 2
9.下列程序的输出为:(A)
int main()
{
char *p=”hello”, *q;
for (q=p; *q; q++);
printf (“%d\n”, (int)(q-p));
}
A) 5 B) 4 C) 6 D) 不是一个确定的值
10.想要表示若x 既不能被3 整除,又不能被5 整除,则把S 的值加x,下面哪条语句
是错的?( B )
A) if ((x%3)*(x%5)) S+=x;
B) if ((x%3==0)+(x%5==0)-(x%15==0)) S+=x;
C) if ((x%3)==0||!(x%5)); else S+=x;
D) if ((x%3)!=0) if ((x%5)!=0) S+=x;
11.下列程序段的输出结果是( C )
void fun(int * x, int * y)
{
printf("%d %d ", *x, *y);
*x=3, *y=4;
}
int main()
int x=1,y=2;
fun(&x,&y);
printf("%d %d\n",x, y);
}
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
12.若有定义: float x;int a,b; 则正确的switch 语句是( C )
A) B)
switch(x) switch(x)
{ {
case 1.0:printf("*\n"); case 1,2:printf("*\n");
case 2.0:printf("**\n"); case 3:printf("**\n");
} }
C) D)
switch (a+b) switch (a+b);
{ {
case 1:printf("\n"); case 1:printf("*\n");
case 1+2:printf("**\n"); case (int)x: printf("**\n");
} }
13.以下程序的输出结果是( C )
int main()
{
int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[2-i][i]);
}
A) 9,5,3 B) 7,4,3 C) 7,5,3 D)9,6,1
14.以下程序输出的结果是(D )
int main()
{
char w[][5]={"ABCD","EFGH","IJKL","MNOP"};
int k;
for (k=1; k<3; k++)
printf("%s\n", w[k]+k);
}
A) B) C) D)
ABCD JKL EFG FGH
FGH OP JK KL
15.以下程序的输出结果是(B )
#define Zero(X) X-X
int main()
{
printf("%d\n",2*Zero(2-3));
}
A) -6 B) -4 C) -2 D) -0
16.若有代码
struct point {int x; int y;} pt, *p;
p = & pt;
现要输出pt 的成员x,错误的语句为: ( D )
A) printf (“%d\n”, p->x); B) printf (“%d\n”, p[0].x);
C) printf (“%d\n”, *p.x); D) printf (“%d\n”, *p->x);
17.下列代码的输出为:(D)
printf (“%s\n”, “HelloWorld”+4);
A) Hello B) HelloWorld C) World D) oWorld
18.下列语句的输出结果是( B )
putchar (putchar (‘a’))
A) a B) aa C) A D) ab
19.下面代码的输出是( B )
char foo[]=“Hello World”;
printf (“%d %d”, strlen(foo), sizeof(foo));
A) 11 11 B) 11 12 C) 12 11 D) 12 12
20.有如下代码
main ()
{
___ int x=1;
printf (“%d\n”, int);
}
横线出不可填入的关键词为( C )
A) auto B) register
C) extern D) static
二、填空题(每空 2 分,共20 分)
1.若想通过以下输入语句给a赋于1,给b赋于2,
int a,b;
scanf("%d%d”,&a,&b);