广州大学2011-2012学年第 2 学期考试卷
C 语言设计答案与评分标准
一、选择题(每题2分,共30分)
1.C语言程序的3种基本结构是顺序结构、选择结构和( C )结构
A、嵌套
B、递归
C、循环
D、转移
2.下列叙述中错误的是( D )
A、C语句必须以分号结束
B、复合语句在语法上被看做一条语句
C、赋值表达式末尾加分号就构成赋值语句
D、空语句出现在任何位置都不会影响程序运行
3.C语言中,运算对象必须是整型数的运算符是( B )
A、/
B、%
C、\
D、%和/
4.变量a、b、c已被定义为int型,有输入语句
“scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);”,为使变量a的值为1,b的值为3,c 的值为2,从键盘输入数据的正确形式是( D )
A、132
B、1,3,2
C、a=1 b=3 c=2
D、a=1,b=3,c=2
5.执行下列两条语句“int c1=1,c2=2,c3;c3=1.0/c2*c1;”后变量c3的值是( A )
A、0
B、0.5
C、1
D、2
6.若文本文件f1.txt中原有内容为good,则运行下列程序后文件f1.txt中的内容是
( B )
void main(void)
{ FILE *fp1;
fp1=fopen(“f1.txt” ,“ w”) ;
fprintf(fp1,“abc”);
fclose(fp1);
}
A、goodabc
B、abc
C、abcd
D、abcgood
7.若有以下定义“int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;”,则值为6的表达式是
( C )
A、*p+6
B、*(p+6)
C、*p+=5
D、p+5
8.设有数组定义char array []=”China”;,则数组array所占的空间是( C )
A、4个字节
B、5个字节
C、6个字节
D、7个字节
9.执行下面的程序后变量a的值是(A )
void main()
{ int a,b;
for(a=1,b=1;a<=100;a++)
{ if(b>10)break;
if(b%3==1) { b+=3;continue;}
b-=3;
}
}
A、5
B、6
C、7
D、8
10.如下程序
void main(void )
{ int x=1,a=0,b=0;
switch(x)
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是( A )
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2
11.设x和y均为int型变量,则语句“x+=y ; y=x-y ; x-=y ”的功能是( D )
A、把x和y按从大到小排列
B、把x和y按从小到大排列
C、无确定结果
D、交换机x和y 中的值
12.设有如下变量定义“int k=7,x=12;”,则能使值为3的表达式是( C )
A、x%=(k%=5)
B、x%=(k-k%5)
C、(x%=k)-(k%=5)
D、x%=k-k%5
13.以下函数的功能是( A )
void fun(char *p2,char *p1){ while ((*p2=*p1)!=?\0?){p1++;p2++;}}
A、将p1所指字符串复制到时p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2 两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串是否有?\0?
14.以下叙述中不正确的是( B )
A、实参可以是常量、变量或表达式
B、形参可以是常量、变量或表达式
C、实参可以为任意类型
D、形参应与其对应的实参类型一致
15.下列4行代码定义了求两数之和的函数,其中,行(A/D )是错误的。
A、void add (float a,float b)
B、{float c;
C、c=a+b;
D、return c; }
评分说明: D 和A答案等价,两个选项均可得 2 分;
二、填空题(每空2分,共20分)
1、下面程序可求出矩阵a的主对角线上的元素之和,请填空。
main()
{int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if( )sum=sum+ ; i==j a[i][j] ;各2分; printf("sum=%d\n",sum);
}
2、下列函数的功能是判断形参a是否为素数,若是函数返回1,否则返回0,请填空。 int primt(int a)
{int i;
for (i=2;i<=a/2;i++)
if(a%i==0)_____________; return 0;
___________________; } return 1; 各2分;
/ printf 0; printf 1 –各得 1分;
3、下面程序段的功能是:将输入的新数据,插入到原序中。请填空。
#include
#define N 9
void main(void)
{ int i,j,iInsert,iStu[N+1]={90,88,85,80,75,70,65,60,55};
scanf("%d",&iInsert);