void fun(void ){
static int a=0; }
void main(void){
int i; } A. 1 2
B. 0 0
C. 1 1
D. 0 1
for(i=1;i<=2;i++)
fun();
a++;
printf(\
15.若已定义:int a[4]={0,1,2,3}, *p=a; 则以下( )不能表示数组元素a[1]。 A.p[1]
B.*(p+1)
C.*p+1
D.*(a+1)
16.以下程序的输出结果是( )。 #include
int i; } A. ABCD ABC AB
B. AB ABC ABCD
C. CD BCD ABCD
D. ABCD BCD CD
char *s=\
for(i=0;i<3;i++) printf(\
17.若已定义:int a[][2]={1,2,3,4,5,6},(*p)[2]; p=a; 则*(*(p+1)+1)的值为( )。 A.6
B.3
C.4
D.5
18.以下各语句或语句组中,正确的是( )。 A.char s[4]=\C.char *s; s=\A.一个字符
B.一个地址
B.char *s; gets(s);
D.char s[5];scanf(\ C.一个字符串
D.不确定
19.若有定义:char *lan[]={\VA\ 则lan[1]的值是( )。
20.C语言中,数组名作为函数调用的实参时,下面叙述正确的是( )。 A.传递给形参的是数组元素的个数 B.传递给形参的是数组中全部元素的值 C.传递给形参的是数组第一个元素的值
D.形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化 21.若有以下定义,则下面叙述错误的是( )。 struct person{
int num;
char name[10]; }student;
A.num、name都是结构体变量student的成员 B.student是结构体类型名
C.struct是定义结构体类型的关键字
D.struct person是用户定义的结构体类型名
22.若有以下定义,则表达式sizeof(s)的值是( )。 union U_type{
int x; }s; A.11
B. 8
C.12
D.10
float y[2]; char z;
23.定义枚举类型的关键字是( )。 A.enum
B.define
C.typedef
D.include
24.若有宏定义:#define F 2+4,则表达式F*F的值为( )。 A. 36
B. 12
C. 16
D. 14
25.C语言中,对文件操作的一般步骤是( )。 A.打开文件,定义文件指针,读写文件,关闭文件 B.操作文件,定义文件指针,修改文件,关闭文件按 C.定义文件指针,打开文件,读写文件,关闭文件 D.定义文件指针,读文件,写文件,关闭文件 二、填空题(26分,每空2分) 1.下面程序的功能是计算n!。 #include \void main(void) { }
2.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。 #include \void main(void) {
float x,max,min; scanf(\max=x; }
printf(\
min=x;
while( ( 3 ) ){
if(x>max) max=x; if( ( 4 ) ) min=x; ( 5 ) ; int i,n; long p;
printf(\scanf(\p= ( 1 ); for(i=2;i<=n;i++) printf(\
( 2 ) ;
}
3.以下定义的函数fun的功能是:将p2所指字符串复制到p1所指内存空间。 #include \
void fun( ( 6 ) ,const char *p2){ }
4.以下程序中的函数reverse的功能是将数组a中的n个元素进行倒置。下面程序运行结果为: 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 #include
void main(void){
int b[10]={0,1,2,3,4,5,6,7,8,9},i; }
5.以下程序的功能是输出以下图形: A BBB CCCCC DDDDDDD
#include
char ch='A';
for( ( 11 ) ; i<=ROW; i++) {
for(j=1; j<=ROW-i; j++) printf(\for(j=1; ( 12 ) ; j++) printf(\ ( 13 ) ; printf(\
for(i=0;i<10;i++) printf(\printf(\
reverse( ( 10 ) ,10); for(i=0;i<10;i++) printf(\int i,temp;
for(i=0; ( 8 ) ;i++){ }
temp=a[i]; ( 9 ) ; a[n-1-i]=temp;
while((*p1= ( 7 ) )!='\\0'){ }
p1++; p2++;
}
}
三、编程题(24分,第1题10分,第2题14分)
1.完成以下程序中的函数fun,该函数的数学表达式为:
?sinx(x?10)?y??x(5?x?10)
?xx?5?
#include \#include
void main(void){
printf(\ printf(\ printf(\ }
2.完成下列程序中的函数BubbleSort(),函数的功能是采用冒泡排序算法,实现对数组a存储的n个元素中的前5个元素按升序排序,其它元素不变。该程序运行结果为: -5 -2 -1 3 4 6 7 -8 9 0 11 -12 13 14 -15 #include
#define NUM 5 /* 需要排序的前NUM个元素 */
void BubbleSort(int a[],int n){ /* 对存储在数组a中的n个元素中的前NUM个元素按升序排序,其他元素
不变。设n>NUM */
}
void main(void){
}
BubbleSort(a,size); for(i=0;i printf(\ int i, a[15]={-1,-2,3,4,-5,6,7,-8,9,0,11,-12,13,14,-15}; int size=sizeof(a)/sizeof(int); ? 华侨大学2009-2010学年第2学期《C语言程序设计》 补考试卷 参考答案 一、选择题(50分,每题2分) 1-5 B C B A A 16-20 D C C B D 6-10 D D C A A 21-25 B B A D C 11-15 C D B A C 二、填空题(26分,每空2分) ( 1 )1 ( 3 )x>=0 ( 6 )char *p1 ( 8 )i ( 2 )p=p*i 或p*=i ( 4 )x ( 9 )a[i]=a[n-1-i] 或 *(a+i)=*(a+n-1-i) ( 12 )j<=2*i-1 ( 5 )scanf(\ ( 10 )b ( 13 )ch++ 或 ++ch 三、编程题(24分,第1题10分,第2题14分) 1. double fun(float x){ double y; if(x>=10) y=sin(x); else if(x>5 && x<10 ) y=sqrt(x); else y=fabs(x); return y; } 2. void BubbleSort(int a[],int n){ /* 对存储于数组a的n个元素中的前NUM个元素用冒泡算 法进行升序排序,其他元素不变。设n>NUM */ int pass,i,t; for(pass=1;pass<=NUM-1;pass++) for(i=0;i<=NUM-pass-1;i++) if(a[i]>a[i+1]) t=a[i],a[i]=a[i+1],a[i+1]=t; } 华侨大学09-10学年第2学期《C语言程序设计》重修班试卷 专业(班级) ____________________ 考试时间 2 0 1 0 年 5 月 22 日 学 号 ________________________ 姓名___________ 成绩______ 注意:请将所有答案写在答卷上,试卷和答卷一并提交!