四川大学2001年攻读硕士学位研究生入学考试试题 及 答案
查看(1257) 回复(0) |
|
lyh2006
|
发表于 2010-09-15 00:16
楼主
1.2.1第2001年――C语言程序设计 题目
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题1分,共计6分) 1、‘ ’表示什么? ①字符串常数 ②标识符 ③变量 ④字符常量 答案:④ 2、对宏定义不正确的描述是哪一个? ①在进行宏定义时,可以引用已经定义的宏名,可以层层置换 //可以引用已经定义了的宏名,可以层层置换 ②宏名的有效范围包括本文件的任何位置 //宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域 ③宠定义不是语句,不必在行末加分号 //是预处理定义语句 ④对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换 3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少? ①20 ②9 ③8 ④19 //strlen函数计算char*型字符串的长度的时候,并不包含末尾的 ; 4、以下哪一个表达式取值是正确的? ①6>5结果为6 ②6&&5结果为7 ③6||5结果为7 ④6<5结果为0 5、如定义 enum weekday {one, two, thr, fou, fiv}; enum weekday working; 以下哪个是不正确的枚举变量的使用? ①working = thr; ②working =2; ③working = (enum weekday)2; ④working = (enum weekday) (5-3); //不能对其赋值 6、下列说法中正确的是哪一个? ①sizeof (char) 是结果为整型的表达式 ②sizeof (char) 是一个不合法的表示形式 ③sizeof (char) 是一种函数调用 ④sizeof (char) 是结果为实型的表达式 二、阅读程序,并回答问题(共12分) 1、下列程序的输出是什么?(3分) # include <stdio. h> void main () ﹛ char * aplha [6] = ﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜; char **p; int i; p = aplha; for (i = 0; i<4; i++) printf (“%s”, p); printf (“ ”); ﹜ //输出结果 ABCDEFGHIJKL 刚好是字符串数组里面的前四个元素的内容连接起来 2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?(6分) # include <stdio.h> void swap (int x, int y) ﹛ int t = x; x = y; y = t; ﹜ void main () ﹛ int a, b, c; scanf (“%d, %d, %d”, &a, &b, &c); if (a>b) swap (a, b); if (a>c) swap (a, c); if (b>c) swap (b, c); printf (“%d, %d, %d”, a, b, c); ﹜ //函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将值传递改成指针传递就可以了。 C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换,但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b(或a或c,或b和c)的值是根本达不到目的的。 修改: (1)(2分) void swap (int *x, int*y) ﹛ int t = *x; *x = *y; *y = t; ﹜ (2)(2分)主函数 if(a>b) swap(&a,&b); if(a>c) swap(&a,&c); if(b>c) swap(&b,&c); 3、假设系统为基本整型量分配2个字节,为字符型量分配1个字节。下列程序完成的功能是什么?(3分) # include <stdio. h> union ﹛ int n; char ch [2]; ﹜u; void main () ﹛ int m; scanf (“%d”,&m); u.n = m; printf (“ %u, %u”,u.ch[0], u.ch[1]); ﹜ //该程序的功能,取用户输入的整数值的高字节和低字节,并按照任意整数的低字节和高字节分别输出。 三、程序设计题(12分) 假设一个文本文件中保存着100个整数,请将这100个整数按从小到大的顺序写到另一个文本文件中去,并且在新文件中每10个整数占一行。源文件名和目标文件名通过命令行参数获取。 分数分配: 变量定义 2分 命令行参数处理 1分 文件打开 1分 文件读 2分 排序 3分 文件写 2分 文件关闭 1分 # include <stdio. h> void main(int argc, char *argv[]) ﹛ FILE *fin, *fout; Int a [100], i, j, t; if(argc!=3) ﹛ printf (“ You forgot to enter a filename ”); return; ﹜ fin = fopen (argv[1], “r”); fout = fopen (argv[2], “w”); for (i = 0; i<100; i++) fscanf (fin, “%d”, &a); for (i = 0; i<99; i++) for (i = 0; i<99-i; i++) if (a[j]>a[j+1]) ﹛t = a[j]; a[j] = a[j+1]; a[j+1]=t;﹜ for (i = 0; i<100; i++) ﹛ if (i%10 = 0) fprintf (fout, “%s”, “ ”); fprintf (fout, “%d”, a); ﹜ fclose (fin); fclose (fout); ﹜ |
回复话题 |
||
上传/修改头像 |
|
|