四川大学 - 话题

四川大学2001年攻读硕士学位研究生入学考试试题 及 答案
查看(1257) 回复(0)
lyh2006
  • 积分:1982
  • 注册于:2010-08-01
发表于 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);


回复话题
上传/修改头像

数字30和50哪个大?

考研论坛提示:
1、请勿发布个人联系方式或询问他人联系方式,包括QQ和手机等。
2、未经允许不得发布任何资料出售、招生中介等广告信息。
3、如果发布了涉及以上内容的话题或跟帖,您在考研网的注册账户可能被禁用。

网站介绍 | 关于我们 | 联系方式 | 广告业务 | 帮助信息
©1998-2015 ChinaKaoyan.com Network Studio. All Rights Reserved.

中国考研网-联系地址:上海市邮政信箱088-014号 邮编:200092 Tel & Fax:021 - 5589 1949 沪ICP备12018245号