电子科大计算机学院2012届保研复试—笔试部分
(回忆版,无答案)
考试时间:2011年10月14日8:30-10:30
(总分:100)
一. 程序改错:说明程序的错误原因并改正.(共20分)
1. 下面程序段的功能是交换两个字符数组的内容(每个字符串字符数均不超过100).(8分)
voidStrSwap(char *pa,char *pb)
{ char *temp;
temp = pa;
pa = pb;
pb = temp;
}
该程序中pa,pb两个字符指针变量只是形式参数,刚开始pa指向数组pa[100]的的首元素,指向pb[100]首元素;交换后pa指向数组pb[100]的的首元素,指向pa[100]首元素;而且该程序段运行结束后pa,pb两个变量由内存回收,因此最后两个字符数组的内容没有改变。 改正:
void copy(char *pa,char *pb)
{
while(*pb!=0)
{
*pa=*pb;
pa++;
pb++;
}
*pa=0;
}
voidStrSwap(char *pa,char *pb)
{
char temp[100];
copy(temp,pa);
copy(pa,pb);
copy(pb,temp);
}
2. 程序段如下.(12分)
char a[] = “House”;
char *b = “House”;
//b[2] = ‘r’; //不能对字符常量赋值