08-09学年第1学期《C语言程序设计》 补考试卷

更新时间:2023-03-08 08:11:20 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华侨大学08-09学年第1学期 《C语言程序设计》 补考试卷

专业(班级) ____________________ 考试时间 2 0 0 9 年 2 月 15 日 学 号 ________________________ 姓名___________ 成绩______ 注意:请将所有答案写在答卷上! 一、选择题(60分,每题2分) (1)下列叙述中错误的是()。

A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行

(2)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。 A)大写字母 B)连接符 C)数字字符 D)下划线 (3)以下叙述中错误的是()。

A)C语言是一种结构化程序设计语言

B)结构化程序有顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法

(4)对于一个正常运行的C程序,以下叙述中正确的是()。 A)程序的执行总是从main函数开始,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 (5)若有代数式 ,(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( )。 A) sqrt(abs(n^x+e^x))

B) sqrt(fabs(pow(n,x)+pow(x,e))) C) sqrt(fabs(pow(n,x)+exp(x))) D) sqrt(fabs(pow(x,n)+exp(x)))

(6) 设有定义:int k=0; ,以下选项的四个表达式中与其他三个表达式的值不相同的是( )。 A)k++ B)k+=1 C)++k D)k+1 (7)有以下程序,其中%u表示按无符号整数输出( )。 #include void main(void) {

unsigned int x=0xFFFF; printf(“%u\\n”,x); }

程序运行后的输出结果是

A)-1 B)65535 C)32767 D)0xFFFF (8)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。 A) if(x++); B) if(x>y&&y!=0); C) if(x>y) x-- D) if(y<0) {;} else y++;

(9)以下选项中,当x为大于1的奇数时,值为0的表达式( )。 A) x%2==1 B)x/2 C) x%2!=0 D) x%2==0

(10)以下叙述中正确的是( )。

A)break语句只能用于switch语句体中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C)break 语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同 (11) 有以下程序 #include void main(void) {

int k=5,n=0; do {

switch(k){

case 1:

case 3: n+=1; break; default: n=0; k--; case 2:

case 4: n+=2; k--; break; }

printf(\}while( k>0&&n<5); }

程序运行后的输出结果是( )。

A)2345 B)0235 C)02356 D)2356 (12) 有以下程序 #include void mian(void) { int i,j;

for(i=1;i<4;i++) {

for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j); printf(“\\n”); } }

程序运行后的输出结果是( )。

A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*2=4 2*3=6 3*1=3 3*3=9 C) 1*1=1 D) 1*1=1

1*2=2 2*2=4 2*1=2 2*2=4

1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 (13) 以下合法的字符型常量是()。

A)”\\x13” B)”\\018” C)”65” D)”\\n” (14)在C语言中,函数返回值的类型最终取决于()。

3*3=9 A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型

C)调用函数时主函数所传递的实参类型 D)函数定义时形参的类型

(15)已知大写字母‘A’的ASCII码是65,小写字母‘a’的ASCII码是97,以下不能将变量c中存储的大写字母转换为对应小写字母的语句是()。

A)c=c-32 B)c=c+32 C)c=c-?A?+?a? D)c=(?A?+c)-?a?+1 (16)有以下函数 int fun(char *s) { char *t=s;

while(*t++); return(t-s); }

该函数的功能是()。

A)比较两个字符的大小

B)计算s所指字符串占用内存字节的个数 C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中

(17)设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是()。 A)float *p=1024; B)int *p=(float x); C)float p=&x; D)float *P=&x; (18)有以下程序

#include void main(void) {

int n,*p=NULL; *p=&n;

printf(“Input n:”);

scanf(“%d”,&p); printf(“output n:”); printf(“%d\\n”,p); }

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,其中正确的语句是()。

A)int n,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\\n”,p);

(19) 以下程序中函数f的功能是:当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。 #include

void f(int b[], int n,int flag) {

int i,j,t;

for(i=0;ib[j]:b[i]

} }

void main(void) {

int a[10]={5,4,3,2,1,6,7,8,9,10},i; f(&a[2],5,0); f(a,5,1);

for(i=0;i<10;i++) printf(\}

程序运行后的输出结果是()。

A)1,2,3,4,5,6,7,8,9,10, B)3,4,5,6,7,2,1,8,9,10, C)5,4,3,2,1,6,7,8,9,10, D)10,9,8,7,6,5,4,3,2,1, (20)有以下程序 void f(int b[]) { int i;

for(i=2;i<6;i++) b[i]*=2; }

void main(void) {

int a[10]={1,2,3,4,5,6,7,8,9,10},i; f(a);

for(i=0;i<10;i++) printf(“%d,”,a[i]); }

程序运行后的输出结果是()。

A)1,2,3,4,5,6,7,8,9,10, B)1,2,6,8,10,12,7,8,9,10

C)1,2,3,4,10,12,14,16,9,10, D)1,2,6,8,10,12,14,16,9,10, (21)有以下程序 #include

typedef struct{int b, p;}A; void f(A c) {

int j; c.b+=1; c.p+=2; }

void main(void) { int i;

A a={1,2}; f(a);

printf(“%d,%d\\n”,a.b,a.p); }

程序运行后的输出结果是()。

A)2,3 B)2,4 C)1,4 D)1,2

(22) 有以下程序 #include void f(int *q) { int i=0; for(;i<5;i++) (*q)++; }

void main(void) { int a[5]={1,2,3,4,5},i; f(a);

for(i=0;i<5;i++) printf(\}

程序运行后的输出结果是()。

A)2,2,3,4,5, B)6,2,3,4,5, C)1,2,3,4,5, D) 2,3,4,5,6, (23) 有以下程序 #include #include void main(void) {

char p[20]={?a?,?b?,?c?,?d?},q[]=”abc”, r[]=”abcde”; strcpy(p+strlen(q),r); strcat(p,q);

printf(“%d%d\\n”,sizeof(p),strlen(p)); }

程序运行后的输出结果是()。

A)20 9 B)9 9 C)20 11 D)11 11 (24) 有以下程序 #include #include void main(void)

void f(char p[][10], int n ) { char t[10]; int i,j; for(i=0; i

if(strcmp(p[i],p[j])>0){

strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); } }

void main(void) {

char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”}; f(p,5);

printf(“%d\\n”, strlen(p[0])); }

程序运行后的输出结果是( )。 A) 2 B) 4 C) 6 D) 3 (25) 有以下程序 #include

void main( int argc, char *argv[] ) {

int n=0,i;

for(i=1; i

编译连接后生成可执行文件tt.exe,若运行时输入以下命令行 tt 12 345 678

程序运行后的输出结果是()。

A) 12 B) 12345 C)12345678 D)136 (26) 有以下程序 #include int a=4; int f(int n) { int t=0; static int a=5; if(n%2) { int a=6; t+=a++; } else {int a=7; t+=a++;} return t+a++; }

void main(void) { int s=a,i=0;

for(;i<2;i++) s+=f(i); printf (\}

程序运行后的输出结果是( )。

A)24 B)28 C)32 D)36

(27) 有一个名为init.txt的文件,内容如下: #define HDY(A,B) A/B

# define PRINT(Y) printf(“y=%d\\n”,Y) 有以下程序

#include “init.txt” void main(void) {

int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); }

下面针对该程序的叙述正确的是()。

A)编译有错 B)运行出错 C)运行结果为 y=0 D) 运行结果为 y=6 (28) 有以下程序

struct S {int n; int a[20];}; void f(struct S *P) {

int i,j,t;

for(i=0;i

if(p->a[i]>p->a[j]){ t=p->a[i]; p->a[i]=p->a[j]; p->a[j]=t; } }

void main(void) {

int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}}; f(&s);

for(i=0;i

程序运行后的输出结果是()。

A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)2,3,1,6,8,7,5,4,10,9, D)10,9,8,7,6,1,2,3,4,5, (29)有以下程序 void main(void) {

unsigned char a=2,b=4,c=5,d;

d=a|b; d&=c; printf(“%d\\n”,d); }

程序运行后的输出结果是()。

A)3 B)4 C)5 D)6 (30) 有以下程序 #include void main (void) {

FILE *fp;

int i,a[6]={1,2,3,4,5,6}; fp=fopen(\ fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);

/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i<6;i++) printf(\}

程序运行后的输出结果是( )。

A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1, 二、填空题(16分,每小题8分)

(1)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输

出。请填空。 #include void main(void) {

int x[10],a[9],i;

for (i=0;i<10;i++) scanf(“%d”,(a)); for( (b) ;i<10;i++) a[i-1]=x[i]+ (c) ;

for(i=0;i<9;i++) printf(“%d”,a[i]); printf(“\\n”); }

(2)以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上,请填空: #include void main(void) {

int x,y,z,max,*px,*py,*pz,*pmax; scanf(“%d%d%d”,&x,&y,&z); px=&x; py=&y; pz=&z;

pmax=&max; (a) ;

if(*pmax<*py) *pmax=*py; if((b)) *pmax=*pz;

printf(“max=%d\\n”, (c)); }

三、编程题(24分,每小题12分)

(1)完成其中的函数fun2(int a[],int n,int b[],int c[])实现: 将数组a中大于-20的元素,依次存放到数组b中,将数组b中的元素按照从小到大的顺序存放到数组c中,函数返回数组b中的元素个数。 #include

int fun1(int a[],int n,int b[],int c[]) { ? }

void main(void) {

int n=10,i,nb;

int aa[10]={12,-30,22,20,15,-39,11,23,-46,100}; int bb[10],cc[10];

printf(\ printf(\

for(i=0;i

printf(\ printf(\

for(i=0;i

printf(\ printf(\

for(i=0;i

(2)完成其中函数fun(char *s),统计输入字符串中空格的个数。 #include

int fun2(char* s){ ? } void main() {

char str[255]; gets(str);

printf(\

}

华大08-09第1学期《C语言程序设计》 补考试卷参考答案

一、选择题(60分,每题2分)

(1)D)(2)B) (3)C) (4)A) (5)D) 6)A) (7)B) (8)C) (9)D) (10)C) (11)A) (12)B) (13)A) (14)A) (15)A) D) (16)B)(17)D) (18)A) (19)B)(20)B)(21)D) (22)B) (23)C) (24)C) (25)D) (26)B) (27)D) (28)A) (29) B) (30)A)

二、填空题(16分,每小题8分)

(1)(a)&x[i] (b)i=1 (c)x[i-1]

(2)(a) *pmax=*px(或*pmax=x) (b)*pmax<*pz或max<*pz (c) max或*pmax 三、编程题(24分)

(1)int fun1(int a[],int n,int b[],int c[])

{

int i,b_index=0,k,t; for(i=0;i-20){ b[b_index]=a[i]; b_index++; }

for(i=0;i

c[i]=b[i];

for(i=1;i

if(c[k]>c[k+1]){t=c[k];c[k]=c[k+1];c[k+1]=t;}

return b_index; }

(2)int fun2(char* s)

{

int i=0,count=0; while(s[i]!='\\0'){ if(s[i]==' ') count++; i++; }

return count;

}

华侨大学08-09学年第2学期《高级语言程序设计》重修试卷

专业(班级) ____________________ 考试时间 2 0 0 9 年 7 月 15 日 学 号 ________________________ 姓名___________ 成绩______ 注意:请将所有答案写在答卷上!

一、简答题(10分,每小题2分)

(1)若有int a=3,b=6; ,则表达式(a++) , (--b)的值是多少?

(2)若有int a; double d; char ch;,则表达式a+ch+d的类型是什么?

(3)若double x;,则应如何使用scanf函数输入值给变量x?如何使用printf函数输出变量x的值?

(4)简述结构化程序设计的三种基本结构。 (5)简述break语句使用的场合。

二、阅读下列程序,写出运行结果(25分,每小题5分)

(1)有以下程序:

#include void main(void) {

unsigned int x=0xFFFF;

printf(“%u\\n”,x); }

程序运行后的输出结果是?

(2)有以下程序:

#include void main(void) {

int k=5,n=0; switch(k){ case 1:

case 3: n+=1; break; default: n=0; k--; case 2:

case 4: n+=2; k--; break; }

printf(\}

程序运行后的输出结果是?

(3)有以下程序:

#include void mian(void) {

int i,j;

for(i=1;i<4;i++){

for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j); printf(“\\n”); } }

程序运行后的输出结果是?

(4) 有以下程序

#include #include void main(void)

void f(char p[][10], int n ) {

char t[10]; int i,j; for(i=0; i

if(strcmp(p[i],p[j])>0){

strcpy(t,p[i]);

strcpy(p[i],p[j]);

strcpy(p[i],t); }

}

void main(void) {

char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”}; f(p,5);

printf(“%d\\n”, strlen(p[0])); }

程序运行后的输出结果是?

(5) 有以下程序

#include #include void main(void) {

char p[20]=”abcde”,q[]=”xyz”, r[]=”lmnopq”; strcpy(p+1,r); strcat(p,q);

printf(“%d,%d\\n”,sizeof(p),strlen(p)); } 程序运行后的输出结果是? 三、编程题(65

分)

(1)(13分)编写程序,计算数列1,1,2,3,5,8,13,21,??,的前20项之和。 (2)(12分)随机输入10个正整数,统计其中素数的个数。所谓素数,指该数只能被1和它本身整除。 (3)(12分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 (4)(15分)完成递归函数void Output(int a[],int n){ ? }的定义,实现将数组a中的n个元素逆向输出。即输出a[n-1],a[n-2],a[n-3],...,a[1],a[0]。 (5)(13分)完成函数int fun(char *s){ ? },函数返回字符串s中所含空格的个数。

08-09学年第2学期《高级语言程序设计》重修试卷 参考答案

一、简答题(10分,每小题2分)

(1)5

(2)double

(3)scanf(“%lf”,&x);或scanf(“%le”,&x);

printf(“%f”,x);或printf(“%lf”,x);或printf(“%e”,x);或printf(“%E”,x);或printf(“%g”,x);或printf(“%G”,x);

(4)顺序、分支和循环

(5)可用于switch语句中的case子句中,也可以用于循环体中。

二、阅读下列程序,写出运行结果(25分,每小题5分)

(1)结果:65535

(2)结果:n=2,k=3 (3)结果:

1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 (4) 结果:6 (5) 结果:20,10

三、编程题(65分)

(1)(13分)编写程序,计算数列1,1,2,3,5,8,13,21,??,的前20项之和。

#include void main(void) {

int a=1,b=1,c,i; long s=2;

for(i=3;i<=20;i++){ c=a+b; s+=c; a=b;b=c; }

printf(“s=%ld\\n”,s); } (2)(12分)随机输入10个正整数,统计其中素数的个数。所谓素数,指该数只能被1和它本身整除。

#include void main(void) {

int a[10],i,k,num=0;

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++){

if(a[i]==1) { num++; continue;}

for(k=2;k

(3)(12分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 #include void main(void) {

int a[4][5],i,j,max,row,col; for(i=0;i<4;i++) for(j=0;j<5;j++)

scanf(“%d”,&a[i][j]); max=a[0][0];row=0;col=0; for(i=0;i<4;i++) for(j=0;j<5;j++)

if{a[i][j]>max}{max=a[i][j];row=i;col=j;} printf(“max=%d,order=%d\\n”,max,row*5+col+1); }

(4)(15分)完成递归函数void Output(int a[],int n){ ? }的定义,实现将数组a中的n个元素逆向输出。即输出a[n-1],a[n-2],a[n-3],...,a[1],a[0]。 void Output(int a[],int n) {

if(n==1) printf(“%d “,a[0]); else{

printf(“%d “,a[n-1]); Output(a,n-1); } }

(5)(13分)完成函数int fun(char *s){ ? },函数返回字符串s中所含空格的个数。

int fun(char *s) {

int num=0;

wile(*s!=’\\0’) {

if(*s==’ ’) num++; s++; }

return num; }

华侨大学2009-2010第2学期《C语言程序设计》 补考试卷

学号________________ 姓名___________ 班级___________ 成绩______ 注意:请将所有答案写在答卷上! 一、单项选择题(50分,每小题2分) 1.在一个可运行的C源程序中,( )。 A.可以有一个或多个主函数 C.可以没有主函数

2.以下定义语句中正确的是( )。 A.char a='A' b='B';

B.float a=b=10.0;

C.int a=10, *b=&a;

D.float *a, b=&a;

B.必须有且仅有一个主函数 D.必须有主函数和其他函数

3.以下选项中合法的字符常量是( )。 A.\

B.'\\101'

C.65

D.W

4.若有定义:int m=4,n=5; float k; 则以下符合C语言语法的表达式是( )。 A m=(n==5)

B k=float(n)/m

C n%2.5

D (m+n)*=k

5.若有定义: int x,y,z; 语句x=(y=z=3,++y,z+=y); 运行后,x的值为( )。 A. 7

B. 6

C. 3

D. 8

6.以下程序段运行后x的值为( )。

int a=3,b=6,x; x=(a==b)?a++:--b;

B. 3

C. 6

D. 5

A. 4

7.若有定义:int a=3,b=4,c=5; 则表达式 !(a-b)||(c-b) 的值为( )。 A. 3

B. 2

C. 0

D. 1

8.若有定义:int a=3,b=5; 要实现输出形式为:3*5=15 正确的printf( )函数调用语句为( )。 A. printf(\C. printf(\9.以下程序段的运行结果是( )。 int s=10;

switch(s/4){ }

B. C

C. B

D. BCD

case 2: case 3:

printf(\printf(\

case 1: printf(\

B. printf(\D. printf(\

default: printf(\A. BC

10.在下列数组定义、初始化或赋值语句中,正确的是( )。 A.int x[]={1,2,3,4,5,6}; C.int a[8]; a[8]=10;

11.以下程序段运行后,s的值是( )。

int a[3][3]={1,2,3,1,2,3,1,2,3}; int i,j,s=0; for(i=0;i<3;i++)

for(j=0;j<=i;j++)

s+=a[i][j];

B. 6

C. 10

D. 14

B.int x[5]={1,2,3,4,5,6}; D.int n=8; int score[n];

printf(\

A. 4

12.若已有定义:int i; char c[8]=\则下列语句中,不正确的是( )。 A.puts(c); C.printf(\

B.for(i=0;c[i]!='\\0';i++) printf(\D.for(i=0;c[i]!='\\0';i++) putchar(c);

13.设已定义:char str1[20]=\ \ str2[20]=\若要形成字符串\ World!\正确语句是( )。

A strcpy (str2,str1)

B strcat(str1,str2)

C strcpy (str1,str2)

D strcat(str2,str1)

14.以下程序的运行结果是( )。 #include

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 void main(void){

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 reverse(int a[], int n){ }

void main(void){

int b[10]={0,1,2,3,4,5,6,7,8,9},i; }

5.以下程序的功能是输出以下图形: A BBB CCCCC DDDDDDD

#include #define ROW 4 void main(void){ int i,j;

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 double fun(float x){ ? }

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 日 学 号 ________________________ 姓名___________ 成绩______ 注意:请将所有答案写在答卷上,试卷和答卷一并提交!

一、选择题(50分,每小题2分)

(1) C源程序经过编译、链接后,产生的可执行程序的扩展名为()。 (A) .exe (B).com (C).obj (D).dll (2) 以下非法的C语言常量是()。

(A)0xff (B)-80 (C)-8.5e-2 (D)081 (3) 以下非法的C标识符是()。

(A)For (B)_123 (C)INT (D)sizeof (4) 以下程序的输出结果为()。 #include void main(void){ char ch='1';

printf(\?0?); }

(A)0, (B) 2 (C)1 (D) -1 (5) 以下程序的输出结果为()。 #include void main(void) { int m=10;

printf(\

printf(\}

(A)10,20 (B)9,19 (C)10,18 (D)9,18 (6) 以下叙述中错误的是( )。

(A) break 语句只能用在循环体内和switch语句体内 (B) 数组名是一个指向数组首元素的指针 (C) 组成C程序的基本单位是函数 (D)sizeof不是C的运算符 (7) 以下程序的功能是()。 #include #define N 5

void main(void){ long result=0L; int i,k,m;

for(i=1;i<=N;i++){ m=1; for(k=1;k<=i;k++) m*=k; result+=m; }

printf(\}

(A)计算1!+2!+3!+…+N! (B)计算N! (C)计算1+2+3+…+N (8) 以下不合法的字符常量是()。

(A)?\\n? (B)?\\\\? (C)?\\0101? (D)”a”

(D) 以上都不对 (9) 运行以下程序的输出结果为()。 #include int fun(char *s){ int num=0; while(*s!='\\0'){ num++; s++; } return num; }

void main(void){

char* str=\ printf(\}

(A) 10 (B) 11 (C) 12 (D)13

(10)若包含预处理命令#include,定义char s[ ]=”Huaqiao”; ,则表达式sizeof(s)和strlen(s)的值分别为()。

(A) 7,7 (B) 7,8 (C) 8,7 (D)8,8 (11) 以下程序的运行结果为()。 #include #include void main(void){

char* str=\ strcpy(s,str+3);

printf(\}

(A) 3 (B) 4 (C) 7 (D)20 (12) 以下语句,错误的是()。

(A) int a, *p=&a; (B)int a[10], *p=a+1; (C) int a[2][3]; int *p=a[1]; (D) int* p; *p=10; (13) 若有int a[5]={1,2,3,4,5};,则表达式*(a+1)的值为()。 (A)2 (B)3 (C)4 (D)5

(14) 若有int a[2][3]={1,2,3,4,5,6};,则表达式*(*(a+1)+2)的值为()。 (A)3 (B)4 (C)5 (D)6

(15) 若有定义char a[]=\,以下叙述中错误的是()。 (A) 数组a存储的是一个字符串 (B) 数组b存储的是一个字符串 (C) 数组a缺省的长度为4 (D) 数组b缺省的长度为3 (16) 以下程序的输出结果是()。 void f(int *x,int *y) {

int t; t=*x; *x=*y; *y=t; }

void main(void) {

int a[]={1,2,3,4,5,6,7,8},i,*p,*q; p=a; q=a+7;

while(p

for(i=0;i

程序运行后

(A)8,2,3,4,5,6,7,1, (B)5,6,7,8,1,2,3,4, (C)1,2,3,4,5,6,7,8, (D)8,7,6,5,4,3,2,1, (17) 以下程序,若输入值3,则输出结果为()。 #include void main(void){ int n=10,*p=&n; scanf(\ (*p)++;

printf(\}

(A)3 (B) 10 (C) 4 (D)11 (18) 以下程序的输出结果为()。 #include #include struct student{ int num; char name[20];

}s[3]={{111,\void main(void){ int k; s->num+=10; strcpy((s+2)->name,\ for(k=0;k<3;k++) printf(\ }

(A) 111 liuming,112 sunlei,113 yuhua, (B) 121 liuming,112 sunlei,113 yuhua, (C) 121 liuming,112 sunlei,113 huanghua, (D) 111 liuming,112 sunlei,113 huanghua, (19) 以下叙述中错误的是()。

(A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 (B)数组名代表的是数组所占存储区的首地址,其值不可改变

(C)在编译源程序过程中,若数组元素的下标超出所定义的下标范围时,编译系统将给出\下标越界\的出错信息

(D)可以通过赋初值的方式确定数组元素的个数 (20) 有以下程序 #include

void main( int argc, char *argv[] ){

int n=0,i;

for(i=1; i

编译连接后生成可执行文件tt.exe,若运行时输入以下命令行: tt 12 345 678

程序运行后的输出结果是()。

(A) 12 (B) 12345 (C)12345678 (D)136

(21) 以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是()。 (A)feof(fp) (B)ftell(fp) (C)fgetc(fp) (D)rewind(fp) (22) 设有如下说明 typedef struct STUDENT { int num;

char name[20]; int score; }STU; STU s1;

则下面叙述中错误的是()。

(A)STU是结构类型名 (B) sizeof(s1)的值与sizeof(s1.name)相同 (C)struct STUDENT是结构体类型名 (D) s1是结构类型的变量名 (23) 下列函数的功能是()。 int fun(char *s){ int num=0;

while(*s!=?\\0?) {

if(*s==? ?) num++; s++; }

return num; }

(A)计算字符串s中所含空格的个数 (B) 计算字符串s的长度

(C) 统计字符串s中所含字母的个数 (D) 统计字符串s中所含数字字符的个数 (24) 下列函数的功能是()。

int fun(int n ){

if(n==1) return 1;

else return fun(n-1)+n; }

(A) 计算n! (B) 计算1+2+3+…+n (C) 计算1+2+3+…+n-1 (D) 计算(n-1)! (25) 下列函数的功能是()。

void fun(unsigned int n){ if(n<10) printf(\ else { printf(\ fun(n/10); } }

(A) 将组成数据n的各位输出(从低位到高位) (B) 将组成数据n的各位输出(从高位到低位) (C) 输出n除以10的余数 (D) 输出n除以10的商

二、程序填空题(16分,每小题8分)

1.以下程序输入10个正整数,存储于数组a中,将其中能被2整除的正整数,按序存储于数组b中,然后输出b中的数据。请填空完成程序。 #include void main(void){

unsigned int a[10],b[10]; (1)

printf(\请输入10个正整数:\\n\ for(k=0;k<10;k++) { scanf(\

if(a[k]%2==0) b[m++]=a[k]; }

for(k=0;k<= (2) ;k++) printf(\}

2.以下程序中,函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时, 函数返回值为1,否则函数返回值为0。主函数中输入一个字符串,如果该串为回文,则输出“yes”,否则输出“no”。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空完成程序。 #include (1)

int huiwen(char *str){

int i=0,j= (2) ; while(i<=j)

if(str[i]==str[j]){ (3) }

if(i>j) return 1; else return 0; }

void main(void){ char str[50];

printf(\ scanf(\

if( (4) ) printf(\ else printf(\ }

三、编程题(34分)

(1)(11分)编写程序,计算Fabinacci数列1,1,2,3,5,8,13,21,??,的前10项之和。 (2)(11分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 (3)(12分)完成函数int fun(char *s){ ? },函数返回字符串s中各个数字字符所组成的数。如,char *s=”a1bc2defg3h”,则函数返回值为整数123。并设计程序测

试之。

08-09学年第2学期《高级语言程序设计》重修试卷 参考答案

一、选择题(50分,每小题2分)

(1)A(2)D(3)D(4)B(5)C(6)D(7)A(8)D(9)B(10)C

(11)B(12)D(13)A(14)D(15)B(16)D(17)C(18)C(19)C (20)D (21)D(22)B(23)A(24)B(25)A

二、程序填空题(16分,每小题8分)

1.(1)int m=0,k; (2)m-1

2.(1)#include (2)strlen(str)-1(3)i++; j--; (4)huiwen(str)==1

三、编程题(34分)

(1)(11分)编写程序,计算数列1,1,2,3,5,8,13,21,??,的前20项之和。

#include #define N 10 void main(void) {

int a=1,b=1,c,i; long s=2;

for(i=3;i<=N;i++){ c=a+b; s+=c; a=b;b=c; }

printf(“s=%ld\\n”,s); } (2)(11分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 #include void main(void) {

int a[4][5],i,j,max,row,col; for(i=0;i<4;i++) for(j=0;j<5;j++)

scanf(“%d”,&a[i][j]); max=a[0][0];row=0;col=0; for(i=0;i<4;i++) for(j=0;j<5;j++)

if{a[i][j]>max}{max=a[i][j];row=i;col=j;} printf(“max=%d,order=%d\\n”,max,row*5+col+1);

}

(3)(12分)完成函数int fun(char *s){ ? },函数返回字符串s中各个数字字符所组成的数。如,char *s=”a1bc2defg3h”,则函数返回值为整数123。并设计程序测试之。

#include #include int fun(char* s){ int n=0; while(*s){

if(*s>='0'&&*s<='9') n=n*10+*s-'0'; s++; }

return n; }

void main(void){

char *str=(char*)malloc(80); puts(\ gets(str);

printf(\}

华侨大学10-11学年第1学期《C语言程序设计》重修班试卷

学号________________ 姓名___________ 班级___________ 成绩______ 注意:请将所有答案写在答卷上! 一、单项选择题(40分,每小题2分) 1.在一个可运行的C源程序中,( )。

A.可以有一个或多个main函数 C.可以没有main函数

B.必须有且仅有一个main函数 D.必须有main函数和其他函数 C.int a=10, *b=&a; C.65 C n%2.5 C. 3

D.float *a, b=&a; D.W

D m=-1&&(m>n) D. 8

2.以下定义语句中正确的是( )。

A.char a='A' b='B'; B.float a=b=10.0; A.\A m=(n==5) A. 7

B.'\\0x41' B m=sizeof(k) B. 6

3.以下选项中合法的字符常量是( )。

4.若有定义:int m=4,n=5; float k; 则以下不符合C语言语法的表达式是( )。 5.若有定义: int x,y,z; 语句x=(y=z=3,++y,z+=y); 运行后,x的值为( )。 6.以下程序段运行后x的值为( )。 int a=3,b=6,x; x=(a==b)?a++:--b;

A. 4 A. 3

B. 3 B. 2

C. 6 C. 0

D. 5 D. 1

7.若有定义:int a=3,b=4,c=5; 则表达式 !(a-b)||(c-b) 的值为( )。

8.若有定义:int a=3,b=5; 要实现输出形式为:3*5=15 正确的printf( )函数调用语句为( )。

A. printf(\

C. printf(\

B. printf(\

D. printf(\

9.以下程序段的运行结果是( )。

int s=10; switch(s/4){

case 1: printf(\

case 2: printf(\ case 3: printf(\ default: printf(\ } A. BC B. C A.int x[]={1,2,3,4,5,6}; C.int a[8]; a[8]=10;

C. B D. BCD

10.在下列数组定义、初始化或赋值语句中,正确的是( )。

B.int x[5]={1,2,3,4,5,6};

D.int n=8; int score[n];

11.以下程序段运行后,s的值是( )。 int a[3][3]={1,2,3,1,2,3,1,2,3}; int i,j,s=0;

for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf(\

A. 4

A.puts(str);

C.printf(\

B. 6

C. 10

D. 14

12.若已有定义:int i; char str[8]=\则下列语句中,不正确的是( )。

B.for(i=0;str[i]!='\\0';i++) printf(\

D.for(i=0;str[i]!='\\0';i++) putchar(str);

13.设已定义:char str1[20]=\ str2[20]=\若要形成字符串\正确语句是( )。

A strcpy (str2,str1) #include static int a=0;

void fun(void ){ a++; printf(\}

void main(void){

int i;

B strcat(str1,str2)

C strcpy (str1,str2)

D strcat(str2,str1)

14.以下程序的运行结果是( )。

for(i=1;i<=2;i++) fun(); }

A. 1 2 B. 0 0 C. 1 1 D. 0 1 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 void main(void){

int i; char *s=\ for(i=0;i<3;i++) printf(\} A. B.

C. D.

ABCD AB CD ABCD ABC ABC BCD BCD AB ABCD ABCD CD 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.C语言中,数组名作为函数调用的实参时,下面叙述正确的是( )。A.传递给形参的是数组元素的个数 B.传递给形参的是数组中全部元素的值 C.传递给形参的是数组第一个元素的值

D.形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化

19.若有以下定义,则表达式sizeof(s)的值是( )。

union U_type{

int x[10]; char z; }s; A.20 B. 10 C.2 D.1 20.若有宏定义:#define F 2+4,则表达式F*F的值为( )。 A. 36

B. 12

C. 16

D. 14

二、填空题(18分,每小题9分)

1.下面程序的功能是计算n!,请填空完成。

#include \void main(void) { long i, n, result; printf(\ scanf(\ result= ( 1 ); for(i=2;i<=n;i++) ( 2 ) ; printf(\( 3 ) \ }

。 )

2.以下程序中定义的函数fun的功能是:将p2所指字符串复制到p1所指内存空间。请完成程序。

#include \

void fun( ( 4 ) ,const char *p2){ while((*p1= ( 5 ) )!='\\0'){ p1++; p2++; } }

void main(void){ char str1[20];

const char *str2=\

fun( ( 6 ) ,str2); /* 将str2所指向的字符串复制到str1所指内存空间 */ printf(\}

三、改错题(18分,每小题9分)

1.以下程序中的函数reverse的功能是将数组a中的n个元素进行倒置。程序运行结果为:9 8 7 6 5 4 3 2 1 0

请修改“/**/”和“/**/”之间存在的错误,使程序正确。

#include

void reverse(int a[], int n){ int i,temp; for(i=0; /**/ i

void main(void){

int b[10]={0,1,2,3,4,5,6,7,8,9},i; for(i=0;i<10;i++) printf(\ printf(\ reverse(/**/ b[10] /**/ , sizeof(b)/sizeof(int) ); for(i=0;i<10;i++) printf(\}

2.以下程序的功能是输出以下图形:

A BBB CCCCC DDDDDDD

请修改“/**/”和“/**/”之间存在的错误,使程序正确。

#include #define ROW 4 void main(void){ int i,j; char ch='A' ; for( i=1 ; i<=ROW; i++) { for(j=1; j<=ROW-i; j++) /**/ printf(\ /**/; for(j=1;/**/ j<=2*i /**/; j++) printf(\ /**/ ch-- /**/; printf(\ } }

四、编程题(24分)

1.(10分)完成以下程序中的函数fun,该函数的数学表达式为:

?sinx(x?10)?y??x(5?x?10)

?xx?5?#include \#include double fun(float x){ ? }

void main(void){

printf(\ printf(\ printf(\ }

2.(14分)完成下列程序中的函数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){

}

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); BubbleSort(a,size);

for(i=0;i

华侨大学2010-2011学年第1学期《C语言程序设计》

重修班试卷 参考答案

一、选择题(40分,每小题2 分)

1-5 B C B C A 16-20 D C D A D

6-10 D D C A A

11-15 C D B A C

二、填空题(18分,每小题9分)

( 1 )1或1L或1l ( 4 )char *p1

( 2 )result= result *i

或result *=i

( 4 )*p2

( 3 )%ld或%ld\\n ( 6 )str1或&str1[0]

三、改错题(18分,每小题9分)

1. i

2., printf(\改为:printf(\\,j<=2*i改为 :j<=2*i-1,ch--;改为:ch++ 三、编程题(24分) 1.(10分)

double fun(float x){ double y; if(x>=10) y=sin(x); else

if(x>5) y=sqrt(x); else y=fabs(x); return y; }

2.(14分)

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;

本文来源:https://www.bwwdw.com/article/tcw3.html

Top