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