当前位置:文档之家› 厦门大学《C语言》模拟试卷(10级)

厦门大学《C语言》模拟试卷(10级)

《C 语言程序设计》试题A 答案

考 生 信 息 栏 经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________

装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

一、单项选择题(每题2分,共60分) 注意:答案纸不能当草稿,请保持整洁!

二、简答题 (13题,1~12题每题3分,第13题4分,共40分)

1. 三种基本结构: 顺序、选择、 循环

2.① y 能被4 整除, 但不能被100整除; 或 y 能被 400 整除。 ② 2008 是闰年 1997 不是闰年

3. 输入的数据为: 任意负奇数

4. ① 作用: 原型说明 ② 输入: 3#8

5. ① 语句: t=*a ; *a=*b ; *b=t ; ② swap (&x , &y );

6. ① 当某趟已排好序时,控制排序结束,不必执行后面趟数 ② 参数: sort ( d , 5 );

7. ① printf ( " %3c", a[j][i] ) ② a 的内容

8. ① 条件:s < p ② 运行结果: H, ! 9. ① 运行结果: ABC ②

10.① m= sizeof (ss) / sizeof ( char * ); ② printf ("%s", * p ); 11.p0 = (struct node*) malloc (sizeof (struct node )) ; p0->data=1003 ; p0->next = NULL;

12. ① printf (" %6d ", p -> data ) ② p = p -> next ; 13. 运行结果: 101 102 104

C

F

厦门大学答题卷纸

考 生 信 息 栏 ______学院______系______ 专业 ______年级 姓名______ 学号____________ 装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

考试课程:_________ 考试地点:_________ 考试时间:_________ 试卷(请打√):A 卷( )B 卷( )

遵章守纪考试诚信承诺书

《C 语言程序设计》试题A 答题纸

考 生 信 息 栏 经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________

装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

一、单项选择题(每题2分,共60分) 注意:答案纸不能当草稿,请保持整洁!

二、简答题 (13题,1~12题每题3分,第13题4分,共40分)

1. 三种基本结构:

2.① ② 2008 , 1997 。

3. 输入的数据为:

4. ① 作用: ② 输入:

5. ① 语句: ; ; ; ② swap ( , );

6. ① ② 参数: sort ( , );

7. ① printf (" %3c", ) ② a 的内容 8. ① 条件: ② 运行结果: 9. ① 运行结果: ②

10.① m= ; ② printf ("%s", ); 11.p0 = ; ; ; 12. ① printf (" %6d ", ) ② ; 13. 运行结果:

注意:答案填入答题纸中,答案纸不能当草稿,草稿可以写在试卷纸上。考完后试卷和答案纸都得交上。

一、单项选择题(30题,每题2分,共60分)

1.下列叙述中错误的是:

A) C语言源程序是文本文件B) 目标程序不是二进制文件

C) 目标程序不是文本文件D) 可执行程序是二进制文件

2.表达式(int) ((double) (5/2)+2.5) 的值是:

A) 4.5 B) 4 C) 5 D) 5.0

3.设x和y均为int 型变量,则以下语句:x += y; y = x-y; x -= y; 的功能是:

A) 交换x和y中的值B) 把x和y按从小到大排列

C) x和y中的值不变D) 把x 和y按从大到小排列

4.若已定义int a = 3, b = 3, x =1, y = 2; 表达式( a= y>x) && ( x= b>a) 的值是:

A) 6 B) 1 C) 9 D) 0

5.以下叙述中错误的是

A) C语言是一种结构化程序设计语言B) 结构化程序有顺序、分支、循环三种基本结构组成

C)结构化程序设计提倡模块化的设计方法D) 使用三种基本结构构成的程序只能解决简单问题

6.使以下程序中t的输出结果为3,则输入a和b应满足的条件是:

main ()

{ int s = 1, t = 1, a, b;

scanf (" %d %d ", &a, &b );

if ( a > 0 ) s += 1;

if ( a>b ) t = s + t;

else if ( a= =b ) t = 5;

else t = 2 * s;

printf ( "%d \n ", t );

}

A) a>0并且a0并且a>b D) a<0并且a>b

7.以下叙述中正确的是:

A) C程序的基本组成单位是语句B) C程序中的每一行只能写一条语句

C) 简单C语句必须以分号结束D) C语句必须在一行内写完

8.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:

A) 函数调用可以作为独立的语句存在B) 函数调用可以作为一个函数的实参

C) 函数调用可以出现在表达式中D) 函数调用可以作为一个函数的形参

9.若定义int a[ ][3] = { 1, 2, 3, 4, 5, 6, 7 };则a数组中行的大小是:

A) 2 B) 3 C) 4 D) 无确定值

10.若有定义语句:char s[ ] = "123450\0\0" ; ,则sizeof (s) 的值是:

A) 7 B) 8 C) 9 D) 10

11.运行以下程序段:char a[5]="work"; char *p=a; 则表达式*(p++)的值为:

A) 'w' B) 存放'w' 的地址C) 'o' D) 存放'o' 的地址

12.若有定义int a[3][5],i,j;(且0

A) *a+i*5+j B) (*(a+i))[j] C) *(a+i)+j D) a[i]+j

13.设有以下语句:typedef struct S { int g;char h;} T;则下面叙述中正确的是:

A) 可用S定义结构体变量B) 可以用T 定义结构体变量

C) S是struct 类型的变量D) T 是struct S 类型的变量

14.设有定义:struct complex { int real, unreal; } data1={1,8}, data2; 则以下赋值语句中错误的是:

A) data2=data1; B) data2=(2,6); C) data2.real=data1.real; D) data2.real=data1.unreal;

15.对枚举类型的定义错误的是:

A) enum b{1, 2, 3}; B) enum a{A, B, C}; C) enum c{D=3, E, F}; D) enum d{X=0, Y=5, Z=9}; 以下(16 ~ 30题) 为:阅读程序, 选择正确的输出的结果。

16.main ()

{ int a=65; char c='A'; /* 'A' 的ASCII为65 */

printf("%d+%c=%d\n" ,a, c, a+c);

}

A) A+A=AA B) 65+A=65A C) 65+65=130 D) 65+A=130

17.main( )

{ int sum = 0, item = 0;

while (item++ < 5)

{ if (item == 2) continue;

sum += item;

}

printf("%d\n",sum);

}

A) 10 B) 13 C) 15 D) 1

18.main ( )

{ int i, j;

for ( i = 1; i <= 3; i++ )

{ for ( j = 2; j >=1; j--) printf ( " %3d ", i * j );

printf ( " \n" );

}

}

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

2 4 4 2 2 4 6

3 2 1

1 2 6 3

19.void f (int x, int y)

{ int t;

if (x

}

main ( )

{ int a = 4, b = 3, c = 5;

f ( a, b ); f ( a, c ); f ( b, c );

printf ( " %d, %d, %d \n ", a, b, c);

}

A) 3, 4, 5 B) 5, 3, 4 C) 5, 4, 3 D) 4, 3, 5

20.int fun1( ) { static int m=0; return m++; }

int fun2( ) { int m=0; return m++; }

main( )

{ int i;

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

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

printf ("%d %d", fun1( ), fun2( ));

}

A) 0 ,0 B) 4, 4 C) 4 ,0 D) 5,1

21.int a, b;

void fun()

{ a=100; b=200; }

main()

{ int a=5, b=7;

fun( ); printf ( "%d %d \n", a, b);

}

A) 100 200 B) 5 7 C) 200 100 D) 7,5

22.void fun(int a[ ])

{ a[0]=a[1];}

main()

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

for ( i=2; i>=0; i--) fun (&a[i]);

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

printf ("\n");

}

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

23.void fun (int array[ ][3], int k)

{ int j;

for ( j=0; j<3; j++ ) array[k][j]++;

}

main( )

{ int j, a[ ][3] = {1,2,3,4,5,6,7,8};

fun(a,1);

for( j=0; j<3; j++) printf ( "%2d", a[1][j] );

}

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

24.main ( )

{ int a[ ] = {2, 4, 6, 8, 10 }, y = 0, x, *p;

p=&a[2];

fo r (x = 1; x<3; x++) y += p[x];

printf ( "% d \n ", y );

}

A) 6 B) 10 C) 14 D) 18

25.main ( )

{ char str[] = "xyz", *ps = str;

while ( *ps ) ps++;

for ( ps--; ps-str >=0; ps-- ) puts ( ps );

}

A) yz<回车>xyz B) z<回车>yz C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz

26.main( )

{ char *a[] = {"1357", "24", "68", "123" }; int i;

for ( i=0; i<4; i++) printf ( "%c", *a[i]+1 );

}

A) 1261 B) 2372 C) 3482 D) 3574823

27.main()

{ int a[] ={1, 2, 3, 4, 5, 6}, *k[3], i=0;

while (i<3)

{ k[i] = &a[2*i]; printf ("%d", *k[i++] ); }

}

A) 2 4 6 B) 1 3 5 C) 0 2 4 D) 4 5 6

28.struct ord { int x, y; } dt[2]={1,2,3,4};

main()

{ struct ord *p = dt;

printf ( "%d,", ++p->x); printf ( "%d\n", ++p->y );

}

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

29.typedef struct { int num; double s } REC;

void fun1( REC x ) { x.num=34; x.s=88.5; }

void fun2( REC * x ) { x->num=56; x->s=53.5; }

main()

{ REC a={12, 90.0 };

fun1(a); printf ( "%d, ", a.num );

fun2(&a); printf ( "%d\n ", a.num );

}

A) 34, 56 B) 12, 12 C) 12, 56 D) 34, 34

30.# include

struct NODE { int num; struct NODE *next; }

main ( )

{ struct NODE *p, q, r;

p = ( struct NODE *) malloc (sizeof (struct NODE) );

p->num = 10; q.num = 20; r.num = 30;

p->next = &q ; q.next =&r;

printf ( " %d \n ", p->num + p->next->num);

}

A) 10 B) 20 C) 30 D) 40

二、简答题(13题,1~12题每题3分,第13题4分,共40分,答案填入答题纸中相应的位置!)

1.C语言中用于结构化程序设计的三种基本结构是什么?

2.判断某一年是闰年年的逻辑表达式为:(y%4==0 && y%100!=0)|| y%400 == 0

其中y 是表示年的整型变量(如:1980)

①用自然语言解释闰年的条件。

②判断2008和1997 是否闰年。

3.有以下程序段:int n, t = 1, s = 0;

scanf ( "%d", &n );

do { s = s+t; t = t-2;

} while (t != n);

为使此程序段不陷入死循环,从键盘输入的数据应该是:

4.①下面程序中第一行int add ( int, int ) 的作用是什么?

②要使程序运行结果为:x = 3,y = 5,z = 8 则应该从键盘输入什么?

int add ( int, int ); /* ①该句作用*/

main ( )

{ int x, y, z ;

scanf (" %d # %d ", &x, &y );/* ②从键盘输入什么*/

z = add ( x , y );

printf ( "x = %d, y = %d, z = %d", x, y, z );

}

int add ( int a , int b ) { return ( a + b ); }

5.下面为实现变量x与y内容交换程序。①填入实现交换的语句;②给出调用swap( ) 的实参。

# include

void swap (int *a , int *b )

{ int t;

t= ; ; ;

} /* ①填入实现交换的语句 */main ( )

{ int x =10, y = 20;;

swap ( , ) ; /* ②填入实参 */

printf ("x = %d, y = %d\n", x, y);

}

6.以下是冒泡排序法程序。①说明change的作用;②填入实参对d中所有数据进行正确排序。

void sort( int a[ ], int num )

{ int change = 1, t, i, j;

for ( i = num-1; i>0 && change; i--)/*change的作用*/

{ change=0;

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

if ( a[j] > a[j+1] ) { t = a[j]; a[j] = a[j+1]; a[j+1] = t;change = 1;} }

}

main ( )

{ int i, d[ ] = { 5, 1, 3, 2, 4 };

sort ( , );

for (i = 0; i < 5; i++ ) printf ( " %d ", d[i] ); }

7. ① 在 printf ( ) 中填入正确的参数,使得以下程序运行结果为:

② 给出以下程序初始化后a 的内容(所有元素的内容都得填上)。

main ( )

{ char a[ ][3] = {'A', 'B', 'C', 'D', 'E', 'F' , 'G'}; /* ② a 的内容 */ int i, j;

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

{ for ( j = 0; j < 3; j++ )

printf ( " %3c", ); /*① 填入正确的参数 */ printf ( "\n" ); }

}

8. 以下是实现字符串反转的程序(如把 “HELLO!” 变成 “!OLLEH ”)。回答下面问题:

① 写出循环条件, 实现字符串反转程序的功能两个字符? ② 给出程序运行结果。

main()

{ char str[ ] = "HELLO!" , *s=str, *p =s , c ;

while ( *p) p ++; p -- ; printf ( "%c, %c", *s, *p ) ;

while ( ) /* ① 写出循环条件 */ { c = *s; *s++ = *p; *p-- = c; } }

9. ① 给出以下程序运行结果 ② 运行后数组s2中的每个元素的内容。

# include

void fun( char * p, char q [ ] )

{ int i = 0;

while ( p[i] =q[i] ) i++; } main ( )

{ char * s1 = "ABC", s2 []= "12345";

fun ( s2 , s1); puts(s2); }

A D G

B E

C F

10. 利用以下程序中已经定义的变量和数组, 根据要求完成程序:

① 填入适当表达式,使得m 能自动计算字符串个数;

② 在 printf( ) 中填入正确的参数,使得程序输出字符串数组中的所有字符串。

main ()

{ char * ss [ ] = { "cat", "dog", "bird", … , "mouse" }, ** p ; int m ;

m = ; /* ① 自动计算字符串个数 */ for ( p = ss; p < ss+m; p++ )

printf ("%s ", ); /* 填入正确的参数 */

}

11. 设有一链表的结点结构及有关指针变量定义如下:

struct node { int data; struct node * next

} * p0 ;

写出动态产生右图p0结点的程序段。(包含:申请内存语句,产生节点内容语句)

12. 同上题的结点结构,以下函数print_llink (hd) 实现显示链表各结点数据,hd 为头指针,请完成该函数。

void print_link ( struct node *hd )

{ struct node * p =hd; while ( p != NULL )

{ printf (" %6d ", ); /* ① 显示结点数据 */ ; /* ② p 移到下一个结点 */ }

}

13. 续上题,假定已建立如下链表结构, 给出下面程序运行的结果。

struct node *creat_link (int n) /* 创建n 个结点的链表,内容略 */

{ …… }

main ( )

{ struct node * p, *head;

head=creat_link(4); /* 创建上图的4个结点的链表 */ p=head->next;

p-> next = p-> next -> next;

print_link (head); /* 调用上题的函数,显示链表各结点数据 */ }

data next

相关主题
文本预览
相关文档 最新文档