2012电子科大复试C

2012电子科大复试C

ID:37969112

大小:56.33 KB

页数:17页

时间:2019-06-04

2012电子科大复试C_第1页
2012电子科大复试C_第2页
2012电子科大复试C_第3页
2012电子科大复试C_第4页
2012电子科大复试C_第5页
资源描述:

《2012电子科大复试C》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、指出程序段中的错误:分析错误的原因,并进行修改。(每个5分,共10分)1、函数swap将两个字符串(字符数组作实参,长度不超过100)的内容进行交换。Voidswap(char*pa,char*pb){char*temp;temp=pa;pa=pb;pb=temp;}//指针temp没有指向一个确定的内存单元,改正:Voidchange(char*p1,char*p2)    {      Char*temp;          Charstr[80];  //编译器会给str开辟内存的          Temp=str;      Temp=p1;   

2、   P1=p2;            P2=temp;    }千万要注意不可写成这个样子:Voidchange(char*p1,char*p2){Charstr[80];//编译器会给str开辟内存的Str=p1;P1=p2;P2=str;}以上的一些写于成都,为什么不写了呢?我想一些高人们可能也看出我的水平来了,我的第一个题就做错了。其实char*temp;这句没有任何问题,他在考察的是值传递。指针传过去也是值传递。所谓的地址传递其实是将实参中的指针所指向的内容由形参(即被调用函数)来改变。还是谭浩强的那个经典的例子,这里说一句:谭浩强的哪本书真的很好啊

3、,很好,王道!下面将这个例子描述如下:#includevoidmain(){voidswap(int*p1,int*p2);inta,b;a=3;b=5;printf("交换前a=%d,b=%d",a,b);swap(&a,&b);printf("交换后a=%d,b=%d",a,b);}voidswap(int*p1,int*p2){      inttemp;      temp=*p1;17      *p1=*p2;      *p2=temp;}这个程序都见过吧,这个里面到底发生了什么,自己去谭浩强课本中看吧。。这个电大的第一道

4、题是让你写一个程序将两个字符串交换,这个就不难了哈,我是耍小聪明了,唉~~第一个题写了很多,下面的就少写点了哈。。。//方法1:voidswap(char**pa,char**pb){char*temp;temp=*pa;*pa=*pb;*pb=temp;}方法2:voidswap(char*pa,char*pb){chartemp[100];//题目说明最大为100字节strcpy(temp,pa);strcpy(pa,pb);strcpy(pb,temp);}//答:1.函数类型大小写错误。2.交换形参指针地址不能修改实参的值。修改:voidswap(cha

5、r*pa,char*pb){chartemp[MAX];inti;for(i=0;pa[i]!='';++i)temp[i]=pa[i];temp[i]=pa[i];for(i=0;pb[i]!='';++i)pa[i]=pb[i];pa[i]=pb[i];for(i=0;temp[i]!='';++i)pb[i]=temp[i];17pb[i]=temp[i];}或使用库函数:voidswap(char*pa,char*pb){chartemp[MAX];inti;strcpy(temp,pa);strcpy(pa,pb);strcpy(pb,te

6、mp);}2、程序片段为:charpa[]=“ABCDE”;char*pb=“EFG”;pb[1]=‘A’;//pb指向的内容是常量,不能修改pb=pa;strcpy(pa,“ABCDEFGXYZ”);//pa指向内存空间不够pb=“D”;//.其实第二个我在第一题中有所描述,就是不能给数组名赋值的。如:charstr[50];  str="Ilove";是错误的,因为str是个常量。。//答:1.pb[1]='A'尝试修改常量,出错2.strcpy函数尝试将一个长度超过pa的字符串复制进pa修改代码。【我都没看出来这代码要干什么,怎么改?】二、简答题(共30分

7、)1、设arr为整型数组,num和item为整型变量,N=数组元素个数-1。需要查找item是否在数组中,如果程序片段为for(num=N;arr[num]!=item;num–);printf(“%d”,num);可能导致的异常结果是什么?为什么?(8分)//这里有越界的危险哈,有可能在数组中根本就没有给定的值,则i会一直在减1。//17结果可能是输出一个负值,因为item是个变量,分配了存储空间,arr[-2]也是可以输出的,因为arr只是个地址,经过测试会找到item,printf他的地址//答:可能的异常结果为出现一个随机负数。由于代码未检查数组是否越界

8、,若查找的item未在数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。