资源描述
《C语言程序设计》试题A答案
考 生 信 息 栏
经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________
装 订 线
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
一、单项选择题(每题2分,共60分) 注意:答案纸不能当草稿,请保持整洁!
1
B
2
B
3
A
4
B
5
D
16
D
17
B
18
B
19
D
20
C
6
C
7
C
8
D
9
B
10
C
21
B
22
D
23
A
24
D
25
C
11
A
12
B
13
B
14
B
15
A
26
B
27
B
28
B
29
C
30
C
二、简答题 (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. ① 当某趟已排好序时,控制排序结束,不必执行后面趟数
A
B
C
D
E
F
G
\0
\0
② 参数: sort ( d , 5 );
7. ① printf ( " %3c", a[j][i] ) ② a的内容à
8. ① 条件:s < p ② 运行结果: H, !
A
B
C
\0
5
\0
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
13. ① 参数:puts (name[i] ) ② name的情况:
厦门大学答题卷纸
考 生 信 息 栏
______学院______系______ 专业 ______年级 姓名______ 学号____________
装 订 线
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
题号
分数
一
二
三
四
五
六
七
八
九
十
十一
十二
十三
十四
十五
总分
阅卷人
考试课程:_________
考试地点:_________
考试时间:_________
试卷(请打√):A卷( )B卷( )
注意事项
1. 学生的学院、系别、专业、年级、姓名、学号必须写在考生信息栏内指定的位置。
2. 学生在考试之前必须填写考试课程名称、考试时间和地点、A/B卷。
3. 所有的答案必须写在答卷纸上,做在草稿纸或试卷纸上无效。
4. 字迹要清楚,保持卷面清洁。试卷、草稿纸随答卷纸一起交回。
自强不息止于至善
遵章守纪考试诚信承诺书
在我填写考生信息之后,表示我已阅读和理解《厦门大学考场纪律及违纪处分办法》[厦大教(2003)32号]有关规定,承诺在考试中自觉遵守该规定,如有违反将接受处理;我保证在本科目考试中,本人所提供的个人信息是真实、准确的。
《C语言程序设计》试题A答题纸
考 生 信 息 栏
经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________
装 订 线
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
一、单项选择题(每题2分,共60分) 注意:答案纸不能当草稿,请保持整洁!
1
2
3
4
5
16
17
18
19
20
7
8
9
10
21
22
23
24
25
11
12
13
14
15
26
27
28
29
30
二、简答题 (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. 运行结果:
厦门大学《C语言程序设计》课程试卷
经济学院计划统计系2012级各专业
主考教师: 试卷类型:(A卷)
注意:答案填入答题纸中,答案纸不能当草稿,草稿可以写在试卷纸上。考完后试卷和答案纸都得交上。
一、单项选择题 (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并且a<b B) a<0并且a<b C) a>0并且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<i<3,0<j<5), 则a[i][j] 对应的地址不正确表示是:
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};
l 以下 (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 <y ) { t = x; x = y; y = t; }
}
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 <stdlib.h>
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 <stdio.h>
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] );
A D G
B E
C F
}
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 <stdio.h>
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);
}
10. 利用以下程序中已经定义的变量和数组, 根据要求完成程序:
① 填入适当表达式,使得m能自动计算字符串个数;
② 在 printf( ) 中填入正确的参数,使得程序输出字符串数组中的所有字符串。
main ()
{ char * ss [ ] = { "cat", "dog", "bird", … , "mouse" }, ** p ;
int m ;
m = ; /* ① 自动计算字符串个数 */
for ( p = ss; p < ss+m; p++ )
printf ("%s ", ); /* 填入正确的参数 */
}
1003
NULL
P0
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. 续上题,假定已建立如下链表结构, 给出下面程序运行的结果。
data next
104
NULL
head
101
102
103
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); /* 调用上题的函数,显示链表各结点数据 */
}
展开阅读全文