1、 《C语言程序设计》试题A答案 考 生 信 息 栏 经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________ 装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 一、单项选择题(每题2分,共60分) 注意:答案纸不能当草稿,请保持整洁! 1 B 2 B 3 A 4 B 5 D 16 D 17 B
2、 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. 输
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
4、\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. ① 参数
5、puts (name[i] ) ② name的情况: 厦门大学答题卷纸 考 生 信 息 栏 ______学院______系______ 专业 ______年级 姓名______ 学号____________ 装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 题号 分数 一 二 三 四 五 六 七 八 九 十 十一
6、 十二 十三 十四 十五 总分 阅卷人 考试课程:_________ 考试地点:_________ 考试时间:_________ 试卷(请打√):A卷( )B卷( ) 注意事项 1. 学生的学院、系别、专业、年级、姓名、学号必须写在考生信息栏内指定的位置。 2. 学生在考试之前必须填写考试课程名称、考试时间和地点、A/B卷。 3. 所有的答案必须写在答卷纸上,做在草稿纸或试卷纸上无效。 4. 字迹要清楚,保持卷面清洁。试卷、草稿纸随答卷纸一起交回。 自强不息止于至善 遵章守纪考试诚信承诺书 在我填写
7、考生信息之后,表示我已阅读和理解《厦门大学考场纪律及违纪处分办法》[厦大教(2003)32号]有关规定,承诺在考试中自觉遵守该规定,如有违反将接受处理;我保证在本科目考试中,本人所提供的个人信息是真实、准确的。 《C语言程序设计》试题A答题纸 考 生 信 息 栏 经济 学院 计统 系 专业 2010 年级 姓名______ 学号_______________ 装 订 线 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
8、┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 一、单项选择题(每题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. 三种基本结构:
9、 2.① ② 2008 , 1997 。 3. 输入的数据为: 4. ① 作用: ② 输入: 5. ① 语句: ; ; ; ② swap ( , ); 6. ①
10、 ② 参数: sort ( , ); 7. ① printf (" %3c", ) ② a的内容à 8. ① 条件: ② 运行结果: 9. ① 运行结果: ② 10.① m= ; ② printf ("%s", ); 11.p0 = ; ;
11、 ; 12. ① printf (" %6d ", ) ② ; 13. 运行结果: 厦门大学《C语言程序设计》课程试卷 经济学院计划统计系2012级各专业 主考教师: 试卷类型:(A卷) 注意:答案填入答题纸中,答案纸不能当草稿,草稿可以写在试卷纸上。考完后试卷和答案纸都得交上。 一、单项选择题 (30题,每题2分,共60分) 1. 下列叙述中错误的是: A) C语言源程序是文本文件 B) 目标程
12、序不是二进制文件 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; 表达式
13、 ( 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
14、 > 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. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:
15、 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
16、 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
17、]+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) d
18、ata2.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
19、 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
20、 = 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 21、 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 22、) 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) 23、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 24、 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 25、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 = st 26、r;
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 27、 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 * 28、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); print 29、f ( "%d, ", a.num );
fun2(&a); printf ( "%d\n ", a.num );
}
A) 34, 56 B) 12, 12 C) 12, 56 D) 34, 34
30. # include 30、DE) );
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% 31、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 ) 的作用是什么?
② 要使程序运行结果 32、为: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内容交换程 33、序。① 填入实现交换的语句;② 给出调用swap( ) 的实参。
# include 34、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, 35、 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; 36、 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 -- ; 37、
printf ( "%c, %c", *s, *p ) ;
while ( ) /* ① 写出循环条件 */
{ c = *s; *s++ = *p; *p-- = c; }
}
9. ① 给出以下程序运行结果 ② 运行后数组s2中的每个元素的内容。
# include 38、 s1 = "ABC", s2 []= "12345";
fun ( s2 , s1);
puts(s2);
}
10. 利用以下程序中已经定义的变量和数组, 根据要求完成程序:
① 填入适当表达式,使得m能自动计算字符串个数;
② 在 printf( ) 中填入正确的参数,使得程序输出字符串数组中的所有字符串。
main ()
{ char * ss [ ] = { "cat", "dog", "bird", … , "mouse" }, ** p ;
int m ;
m = 39、 ; /* ① 自动计算字符串个数 */
for ( p = ss; p < ss+m; p++ )
printf ("%s ", ); /* 填入正确的参数 */
}
1003
NULL
P0
11. 设有一链表的结点结构及有关指针变量定义如下:
struct node { int data;
struct node * next
} * p0 ;
写出动态产生右图p0结点的程序段。(包 40、含:申请内存语句,产生节点内容语句)
12. 同上题的结点结构,以下函数print_llink (hd) 实现显示链表各结点数据,hd为头指针,请完成该函数。
void print_link ( struct node *hd )
{ struct node * p =hd;
while ( p != NULL )
{ printf (" %6d ", ); /* ① 显示结点数据 */
; /* ② p 移到下一个结点 */
}
}
13. 续上题,假定已建立如下链表结 41、构, 给出下面程序运行的结果。
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); /* 调用上题的函数,显示链表各结点数据 */
}






