参考答案-作业━━第 4 章(3)━━指针与函数、指针与堆内存_第1页
参考答案-作业━━第 4 章(3)━━指针与函数、指针与堆内存_第2页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 4/4参考答案_作业第 4 章(3)指针与函数、指针与堆内存 参考答案指针与函数、指针与堆内存 【学习要点】 1掌握指针作为函数参数的作用和使用方法。 2掌握函数参数的传递方式值传递、引用传递、地址传递 3掌握指针作为函数返回值的作用和使用方法。 4掌握指向函数的指针变量的定义和使用方法。 5掌握C+的四个内存区域。 6掌握堆内存和动态存储分配。 7掌握new 与delete 运算符的使用方法。 8掌握常指针变量、指向常量的指针的定义和使用方法。 9掌握类型标识符的定义和使用方法。 【例题分析】 1为指针变量p赋初值,下面语句中不正确的是_。 Aint *p=0; Bfloat *p=(fl

2、oat*)50; Cint *p=new 50; Dfloat *p=new float50; 【答案】C 【解析】答案A给指针p 赋0值是正确的;答案B将整数50的单元类型强制转换为实型指针也是可以的;答案D 将指针p 指向在堆区上申请的具有50个元素的实型数组也是可以的;答案C错误,因为new运算符的运算对象是数据类型,而不能是常量。 2完善程序题,下面函数check( ) 的功能是检查所给定的字符串中左括号(?和右括号)?的使用是否合法。判断条件是:左括号(?的个数应与右括号)?的个数相同;右括号的个数在任何时候均不得超过左括号(?的个数;若字符串同时满足上述两个条件,函数返回值1,否则

3、返回值0。 #include int check ( char *s ) int lt=0, rt=0; while() if ( *s=( ) lt+; else if ( *s=?)? ) rt+; /A if ( ) return 0; (); return (); void main() char a 30 = “123+(3+5)/(6*(3+2-8)”; cout lt 【答案】s+ 【答案】lt=rt 【解析】 对于指针s所指向的字符串,while循环要将其中的每个字符都检查一次,一直检查到字符串的结束符0?为止。while(*s)或while(*s!=?0?)的意思是只要指针s

4、所指向的字符不是字符串的结束符,就继续循环。 函数中用变量lt表示左括号“(”的个数,用变量rt表示右括号“)”的个数。在检查时考虑每个字符有三种可能:左括号、右括号和其他字符。在A行处,rt+表示又增加了一个右括号,此时应检查右括号的数量是否多于左括号的数量,再结合题目要求中关于返回0指的含义,将第处填为:rtlt。 到了第处,就该换下一个字符了,使指针s要指向下一个字符,将第处填为:s+。 到了第处,左、右括号的数量已经统计完毕,而且右括号的数目也不比左括号的数量多,此时如果左括号多于右括号,就应该返回0,如果二者相等,就应该返回1。综合这两种可能,将第处填为:lt=rt。 3下面程序的运

5、行结果是_。 #include int take ( int *a, int *b, int n, void (*g) ( int*, int ) ) int i=0, j=n-1, s=0; while ( i void swap1 ( int p1 , int p2 ) int temp = p1 ; p1 = p2 ; p2 = temp ; void swap2 ( int p1 = p2 ; p2 = temp ; void swap3 ( int *p1 , int *p2 ) int temp = *p1 ; *p1 = *p2 ; *p2 = temp ; void swap4

6、 ( int *p1 , int *p2 ) int *temp = p1 ; p1 = p2 ; p2 = temp ; void main ( ) int a = 3 , b = 6 ; swap1( ) ; cout =0 /将该数字字符转换为一位数字 while ( (c=*p1+) /将这一串连续的数字字符转换为整数 p n = m ; /将这个转换好的整数存入数组 ; /提取出的整数个数增加1 return n ; void main( ) int i , n , a 20 ; char p 100 ; cout void invert ( char *a , int x , in

7、t y ) char t, *p, *q ; p = a+x ; q = a+y ; while ( p void main() static float score 4 = 60,70,80,90 , 50,89,67,88 , 34,78,90,66 , 80,90,99,70 ; float * seek( float (*pointer) 4 ) ; float *p ; int i, j ; for ( i=0; i char * stringcat ( char *s1, const char *s2 ) char *p = s1 ; while ( * s1 + ) ; s1 -

8、 ; while ( * s1 + = * s2 + ) ; return p ; void main ( ) char s1 20 , s2 20 ; cout int stringlen ( const char *s ) int num = 0 ; while ( * s+ ) num+; return num ; void main ( ) char s 100 ; cout char * reverse ( char *s ) char *p1 , *p2 , temp ; p1= p2 = s ; while ( *p2+ ) ; p2 -= 2 ; while ( p1 char * stringcpy ( char *s1, const char *s2 ) char *p = s1 ; while ( * s1 + = * s2 + ) ; return p ; void main ( ) char s1 20 , s2 20 ; cout “请输入一行字符:” ; cin.getline( s1 , 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论