⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter6.htm

📁 为清华大学出版社 C++课后答案
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>




<style type="text/css">
<!--
.style2 {
	font-family: "宋体";
	font-size: 16px;
	font-weight: bold;
	font-style: italic;
	color: #00FF00;
}
.style3 {
	font-family: "宋体";
	color: #FF0000;
}
.style4 {font-size: 14px}
-->
</style>
</head>

<body>
<p class="style2"><span 
      class=style3>第 六 章 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数组、指针与字符串</span><br>
</p>
<p><span class="style4"><strong>6-1 数组A[10][5][15]一共有多少个元素?</strong><br>
</span></span></p>
<p class="style4">解: <br>
  10×5×15 = 750 个元素<br>
  1-2 在数组A[20]中第一个元素和最后一个元素是哪一个?<br>
  解: <br>
  第一个元素是A[0],最后一个元素是A[19]。<br>
</span></p>
<p class="style4"><strong>6-3 用一条语句定义一个有五个元素的整型数组,并依次赋予1~5的初值。</strong><br>
</span></p>
<p class="style4">解: <br>
  源程序:<br>
  int IntegerArray[5] = { 1, 2, 3, 4, 5 };<br>
  或:int IntegerArray[] = { 1, 2, 3, 4, 5 };<br>
</span></p>
<p class="style4"><strong>6-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数</strong>。<br>
</span></p>
<p class="style4">解: <br>
  源程序:<br>
  nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]);<br>
</span></p>
<p class="style4"><strong>6-5 用一条语句定义一个有5×3个元素的二维整型数组,并依次赋予1~15的初值</strong>。<br>
</span></p>
<p class="style4">解: <br>
  源程序:<br>
  int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };<br>
  或:int theArray[5][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12},{13,14,15} };<br>
</span></p>
<p class="style4"><strong>6-6 运算符*和&amp;的作用是什么?</strong><br>
</span></p>
<p class="style4">解: <br>
  *称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&amp;称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。<br>
  <br>
  <strong>6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?</strong><br>
</span></p>
<p class="style4">解: <br>
  指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。<br>
</span></p>
<p class="style4"><strong>6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间。</strong><br>
</span></p>
<p class="style4">解: <br>
  源程序:<br>
  int *pInteger = new int[10];<br>
</span></p>
<p class="style4"><strong>6-9 在字符串”Hello,world!”中结束符是什么</strong>?<br>
</span></p>
<p class="style4">解: <br>
  是NULL字符。<br>
</span></p>
<p class="style4"><strong>6-10 定义一个有五个元素的整型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。</strong><br>
</span></p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt; </span></p>
<p class="style4">int main()<br>
  {<br>
  int myArray[5];<br>
  int i;<br>
  for ( i=0; i&lt;5; i++) <br>
  {<br>
  cout &lt;&lt; "Value for myArray[" &lt;&lt; i &lt;&lt; "]: ";<br>
  cin &gt;&gt; myArray[i];<br>
  }<br>
  for (i = 0; i&lt;5; i++)<br>
  cout &lt;&lt; i &lt;&lt; ": " &lt;&lt; myArray[i] &lt;&lt; "\n";<br>
  return 0;<br>
  }<br>
  程序运行输出:<br>
  Value for myArray[0]: 2<br>
  Value for myArray[1]: 5<br>
  Value for myArray[2]: 7<br>
  Value for myArray[3]: 8<br>
  Value for myArray[4]: 3<br>
  0: 2<br>
  1: 5<br>
  2: 7<br>
  3: 8<br>
  4: 3<br>
</p>
<p class="style4"><strong>6-11 引用和指针有何区别?何时只能使用指针而不能使用引用?</strong><br>
</p>
<p class="style4">解: <br>
  引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。<br>
</p>
<p class="style4"><strong>6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pString和struct customer型的指针prec。</strong><br>
</p>
<p class="style4">解: <br>
  float *pfloat;<br>
  char *pString;<br>
  struct customer *prec;<br>
</p>
<p class="style4"><strong>6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句</strong>。<br>
</p>
<p class="style4">解: <br>
  cout &lt;&lt; "Value == " &lt;&lt; *fp;<br>
</p>
<p class="style4"><strong>6-14 程序中定义一个double类型变量的指针。分别显示指针占了多少字节和指针所指的变量占了多少字节。</strong><br>
</p>
<p class="style4">解: <br>
  double *counter;<br>
  cout &lt;&lt; "\nSize of pointer == "sizeof(counter);<br>
  cout &lt;&lt; '\nSize of addressed value == "&lt;&lt;sizeof(*counter);<br>
</p>
<p class="style4"><strong>6-15 const int * p1 和 int * const p2的区别是什么?</strong><br>
</p>
<p class="style4">解: <br>
  const int * p1 声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int * const p2声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。<br>
</p>
<p class="style4"><strong>6-16 定义一个整型变量a,一个整型指针p,一个引用r,通过p把a的值改为10,通过r把a的值改为5</strong><br>
</p>
<p class="style4">解: <br>
  void main()<br>
  {<br>
  int a;<br>
  int *p = &amp;a;<br>
  int &amp;r = a;<br>
  *p = 10;<br>
  r = 5;<br>
  }<br>
</p>
<p class="style4"><strong>6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。</strong><br>
    <strong>#include &lt;iostream.h&gt;<br>
  int main()<br>
  {<br>
  int *p;<br>
  *pInt = 9;<br>
  cout &lt;&lt; "The value at p: " &lt;&lt; *p;<br>
  return 0;</strong><br>
  <strong>}</strong><br>
</p>
<p class="style4">解: <br>
  指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。<br>
  <strong>6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。</strong><br>
  <strong>#include &lt;iostream.h&gt;<br>
  int Fn1();<br>
  int main()<br>
  {<br>
  int a = Fn1();<br>
  cout &lt;&lt; "the value of a is: " &lt;&lt; a;<br>
  return 0;<br>
  }</strong></p>
<p class="style4"><strong>int Fn1()<br>
  {<br>
  int * p = new int (5);<br>
  return *p;<br>
  }</strong><br>
</p>
<p class="style4">解: <br>
  此程序中给*p分配的内存没有被释放掉。<br>
  改正:<br>
  #include &lt;iostream.h&gt;<br>
  int* Fn1();<br>
  int main()<br>
  {<br>
  int *a = Fn1();<br>
  cout &lt;&lt; "the value of a is: " &lt;&lt; *a;<br>
  delete a;<br>
  return 0;<br>
  }</p>
<p class="style4">int* Fn1()<br>
  {<br>
  int * p = new int (5);<br>
  return p;<br>
  }<br>
</p>
<p class="style4"><strong>6-19 声明一个参数为整型,返回值为长整型的函数指针;声明类A的一个成员函数指针,其参数为整型,返回值长整型。</strong><br>
</p>
<p class="style4">解: <br>
  long (* p_fn1)(int);<br>
  long ( A::*p_fn2)(int);<br>
</p>
<p class="style4"><strong>6-20 实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。</strong><br>
</p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt;</p>
<p class="style4">class SimpleCircle<br>
  {<br>
  public:<br>
  SimpleCircle();<br>
  SimpleCircle(int);<br>
  SimpleCircle(const SimpleCircle &amp;);<br>
  ~SimpleCircle() {}<br>
  <br>
  void SetRadius(int);<br>
  int GetRadius()const;<br>
  <br>
  private:<br>
  int *itsRadius;<br>
  };</p>
<p class="style4">SimpleCircle::SimpleCircle()<br>
  {<br>
  itsRadius = new int(5);<br>
  }</p>
<p class="style4">SimpleCircle::SimpleCircle(int radius)<br>
  {<br>
  itsRadius = new int(radius);<br>
  }</p>
<p class="style4">SimpleCircle::SimpleCircle(const SimpleCircle &amp; rhs)<br>
  {<br>
  int val = rhs.GetRadius();<br>
  itsRadius = new int(val);<br>
  }</p>
<p class="style4">int SimpleCircle::GetRadius() const<br>
  {<br>
  return *itsRadius;<br>
  }<br>
  int main()<br>
  {<br>
  SimpleCircle CircleOne, CircleTwo(9);<br>
  cout &lt;&lt; "CircleOne: " &lt;&lt; CircleOne.GetRadius() &lt;&lt; endl;<br>
  cout &lt;&lt; "CircleTwo: " &lt;&lt; CircleTwo.GetRadius() &lt;&lt; endl;<br>
  return 0;<br>
  }程序运行输出:<br>
  CircleOne: 5<br>
  CircleTwo: 9<br>
</p>
<p class="style4"><strong>6-21 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。</strong><br>
</p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt;<br>
  #include &lt;stdio.h&gt;</p>
<p class="style4">int count(char *str)<br>
  {<br>
  int i,num=0;<br>
  for (i=0; str[i]; i++)<br>
  {<br>
  if ( (str[i]&gt;='a' &amp;&amp; str[i]&lt;='z') || (str[i]&gt;='A' &amp;&amp; str[i]&lt;='Z') )<br>
  num++;<br>
  }<br>
  return num;<br>
  }</p>
<p class="style4">void main()<br>
  {<br>
  char text[100];<br>
  cout &lt;&lt; "输入一个英语句子:" &lt;&lt; endl;<br>
  gets(text);<br>
  cout &lt;&lt; "这个句子里有" &lt;&lt; count(text) &lt;&lt; "个字母。" &lt;&lt; endl;<br>
  }</p>
<p class="style4">程序运行输出:<br>
  输入一个英语句子:<br>
  It is very interesting!<br>
  这个句子里有19个字母。<br>
</p>
<p class="style4"><strong>6-22 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的位置,如果在s中没有与t匹配的子串,就返回-1。</strong><br>
</p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt;</p>
<p class="style4">int index( char *s, char *t)<br>
  {<br>
  int i,j,k;<br>
  for(i = 0; s[i] != '\0'; i++)<br>
  {<br>
  for(j = i, k = 0; t[k] != '\0' &amp;&amp; s[j] == t[k]; j++, k++)<br>
  ;<br>
  if (t[k] =='\0')<br>
  return i;<br>
  }<br>
  return -1;<br>
  }</p>
<p class="style4">void main()<br>
  {<br>
  int n;<br>
  char str1[20],str2[20];<br>
  cout &lt;&lt; "输入一个英语单词:";<br>
  cin &gt;&gt; str1;<br>
  cout &lt;&lt; "输入另一个英语单词:";<br>
  cin &gt;&gt; str2;<br>
  n = index(str1,str2);<br>
  if (n &gt; 0)<br>
  cout &lt;&lt; str2 &lt;&lt; "在" &lt;&lt; str1 &lt;&lt; "中左起第" &lt;&lt; n+1 <br>
&lt;&lt; "个位置。"&lt;&lt;endl;<br>
  else<br>
  cout &lt;&lt; str2 &lt;&lt; "不在" &lt;&lt; str1 &lt;&lt; "中。" &lt;&lt; endl;<br>
  }<br>
  程序运行输出:<br>
  输入一个英语单词:abcdefgh<br>
  输入另一个英语单词:de<br>
  de在abcdefghijk中左起第4个位置。</p>
<p class="style4"><strong>6-23 编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。</strong><br>
</p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt;<br>
  #include &lt;string.h&gt;</p>
<p class="style4">void reverse(char *s, char *t)<br>
  {<br>
  char c;<br>
  if (s &lt; t)<br>
  {<br>
  c = *s;<br>
  *s = *t;<br>
  *t = c;<br>
  reverse(++s, --t);<br>
  }<br>
  }</p>
<p class="style4">void reverse( char *s)<br>
  {<br>
  reverse(s, s + strlen(s) - 1);<br>
  }</p>
<p class="style4">void main()<br>
  {<br>
  char str1[20];<br>
  cout &lt;&lt; "输入一个字符串:";<br>
  cin &gt;&gt; str1;<br>
  cout &lt;&lt; "原字符串为:" &lt;&lt; str1 &lt;&lt; endl;<br>
  reverse(str1);<br>
  cout &lt;&lt; "倒序反转后为:" &lt;&lt; str1 &lt;&lt; endl;<br>
  }<br>
  程序运行输出:<br>
  输入一个字符串:abcdefghijk<br>
  原字符串为:abcdefghijk<br>
  倒序反转后为:kjihgfedcba<br>
</p>
<p class="style4"><strong>6-24 设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。</strong><br>
</p>
<p class="style4">解: <br>
  源程序:<br>
  #include &lt;iostream.h&gt;<br>
  #include &lt;string.h&gt;</p>
<p class="style4">#define N 8</p>
<p class="style4">float grades[N]; //存放成绩的数组</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -