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

📄 xt4.htm

📁 有关C++程序设计的复习资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                      <TD>&nbsp;</TD></TR></TBODY></TABLE>
                  <P><SPAN class=s14><BR></SPAN><SPAN class=xt12>平均成绩 
                  <BR>解:<BR>#include &lt;iostream.h&gt;<BR>#include 
                  &lt;iomanip.h&gt;<BR>#define M 6<BR>#define N 5<BR>void 
                  main(void)<BR>{ float s[M][N],sum,ave;<BR> int 
                  i,j;<BR> cout&lt;&lt;"Input data:\n"; //输入数据<BR> for 
                  (i=0;i&lt;M-1;i++) //输入5个学生的学号与3门课成绩<BR> { for 
                  (j=0;j&lt;N-1;j++)<BR>  cin&gt;&gt;s[i][j];<BR> }<BR> for 
                  (i=0;i&lt;M;i++) //处理数据<BR> { sum=0.0;<BR>  for 
                  (j=1;j&lt;N-1;j++) 
                  //计算每个学生的总成绩<BR>   sum=sum+s[i][j];<BR>   s[i][N-1]=sum; 
                  //计算每个学生的总分<BR> }<BR> for (j=1;j&lt;N;j++) //处理数据<BR> { 
                  sum=0.0;<BR>  for (i=0;i&lt;M-1;i++) 
                  //计算每个学生的总成绩<BR>   sum=sum+s[i][j];<BR>   s[M-1][j]=sum/(M-1); 
                  //计算每门课程的平均分<BR> }<BR> cout&lt;&lt;setw(5)&lt;&lt;" Num. 
                  "&lt;&lt;" Math. Chin. Engl. Sum."&lt;&lt;endl; 
                  //输出数据<BR> cout&lt;&lt;"------------------------------\n";<BR> for 
                  (i=0;i&lt;M;i++)<BR> { for (j=0;j&lt;N;j++) 
                  //输出学号、3门课程的成绩与总分<BR>  if (i==M-1 &amp;&amp; j==0) 
                  cout&lt;&lt;setw(6)&lt;&lt;" ";<BR>  else 
                  cout&lt;&lt;setw(6)&lt;&lt;s[i][j];<BR> cout&lt;&lt;endl;<BR> } 
                  <BR> cout&lt;&lt;"------------------------------\n";<BR>}</SPAN></P>
                  <P class=xt12>4.21 
                  对4.21题中学生成绩表按总成绩排序后输出,并输出每门课程不及格学生的成绩信息。(习题课内容)<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define M 
                  6<BR>#define N 5<BR>void main(void)<BR>{ float 
                  s[M][N],sum,ave,temp;<BR> int i,j,k;<BR> cout&lt;&lt;"Input 
                  data:\n"; //输入数据<BR> for (i=0;i&lt;M-1;i++) 
                  //输入5个学生的学号与3门课成绩<BR> { for 
                  (j=0;j&lt;N-1;j++)<BR>  cin&gt;&gt;s[i][j];<BR> }<BR> for 
                  (i=0;i&lt;M;i++) //处理数据<BR> { sum=0.0;<BR>  for 
                  (j=1;j&lt;N-1;j++) 
                  //计算每个学生的总成绩<BR>  sum=sum+s[i][j];<BR>  s[i][N-1]=sum; 
                  //计算每个学生的总分<BR> }<BR> for (j=1;j&lt;N;j++) //处理数据<BR> { 
                  sum=0.0;<BR>  for (i=0;i&lt;M-1;i++) 
                  //计算每个学生的总成绩<BR>  sum=sum+s[i][j];<BR>  s[M-1][j]=sum/(M-1); 
                  //计算每门课程的平均分<BR> }<BR> for (i=0;i&lt;M-2;i++)<BR> { 
                  k=i;<BR>  for(j=i+1;j&lt;M-1;j++)<BR>  if (s[k][4]&lt;s[j][4]) 
                  k=j; <BR>  if (k!=i) <BR>  for (j=0;j&lt;N;j++)<BR>  { 
                  temp=s[i][j];s[i][j]=s[k][j];s[k][j]=temp;}<BR>  } 
                  <BR> cout&lt;&lt;setw(5)&lt;&lt;" Num. "&lt;&lt;" Math. Chin. 
                  Engl. Sum."&lt;&lt;endl; 
                  //输出数据<BR> cout&lt;&lt;"------------------------------\n";<BR> for 
                  (i=0;i&lt;M;i++)<BR> { for (j=0;j&lt;N;j++) 
                  //输出学号、3门课程的成绩与总分<BR>  if (i==M-1 &amp;&amp; j==0) 
                  cout&lt;&lt;setw(6)&lt;&lt;" ";<BR>  else 
                  cout&lt;&lt;setw(6)&lt;&lt;s[i][j];<BR>  cout&lt;&lt;endl;<BR> } 
                  <BR>cout&lt;&lt;"------------------------------\n";<BR>}</P>
                  <P class=xt12>4.22 
                  设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。m与n用define定义为常量,其值由用户自定义。<BR>解:<BR>#include 
                  &lt;iostream&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define M 
                  2<BR>#define N 2<BR>void main(void)<BR>{ int 
                  a[M][N],b[M][N],c[M][N],i,j;<BR> cout&lt;&lt;"Input 
                  a[M][N]:"&lt;&lt;endl;<BR> for (i=0;i&lt;M;i++)<BR> for 
                  (j=0;j&lt;N;j++)<BR>  cin&gt;&gt;a[i][j];<BR>  cout&lt;&lt;"Input 
                  b[M][N]:"&lt;&lt;endl;<BR> for (i=0;i&lt;M;i++)<BR> for 
                  (j=0;j&lt;N;j++)<BR>  cin&gt;&gt;b[i][j];<BR> for 
                  (i=0;i&lt;M;i++)<BR> for (j=0;j&lt;N;j++)<BR>  c[i][j]= 
                  a[i][j]+b[i][j];<BR> for (i=0;i&lt;M;i++)<BR> { for 
                  (j=0;j&lt;N;j++)<BR>  cout&lt;&lt;setw(4)&lt;&lt;c[i][j];<BR>  cout&lt;&lt;endl;<BR> }<BR>}</P>
                  <P><SPAN class=xt12>4.23 
                  设A为m行n列矩阵,B为n行k列矩阵,C为m行k列矩阵。设计矩阵乘法程序,能完成C=A*B的操作。m、n与k用define定义为常量,其值由用户自定义。<BR>解:<BR>#include 
                  &lt;iostream&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define M 
                  2<BR>#define N 3<BR>#define P 4<BR>void main(void)<BR>{ int 
                  a[M][N],b[N][P],c[M][P],i,j,k;<BR> cout&lt;&lt;"Input 
                  a["&lt;&lt;M&lt;&lt;"]["&lt;&lt;N&lt;&lt;"]:"&lt;&lt;endl;<BR> for 
                  (i=0;i&lt;M;i++)<BR>  for 
                  (j=0;j&lt;N;j++)<BR>   cin&gt;&gt;a[i][j];<BR>   cout&lt;&lt;"Input 
                  b["&lt;&lt;N&lt;&lt;"]["&lt;&lt;P&lt;&lt;"]:"&lt;&lt;endl;<BR>  for 
                  (i=0;i&lt;N;i++)<BR>   for 
                  (j=0;j&lt;P;j++)<BR>    cin&gt;&gt;b[i][j];<BR>  for 
                  (i=0;i&lt;M;i++)<BR>   for (j=0;j&lt;P;j++)<BR>   { 
                  c[i][j]=0;<BR>    for 
                  (k=0;k&lt;N;k++)<BR>    c[i][j]=c[i][j]+a[i][k]*b[k][j];<BR>   }<BR>  for 
                  (i=0;i&lt;M;i++)<BR>  { for 
                  (j=0;j&lt;P;j++)<BR>   cout&lt;&lt;setw(4)&lt;&lt;c[i][j];<BR>   cout&lt;&lt;endl;<BR>  }<BR>}</SPAN></P>
                  <P 
                  class=xt12>4.24什么叫指针?有哪些类型的指针?<BR>答:所谓指针就是变量、数组、函数等的内存地址。<BR>指针变量按定义格式大致可分为五种:指针变量、指针数组、指向一维数组的指针变量、返回指针值函数、函数指针变量。</P>
                  <P class=xt12>4.25 
                  指针变量按定义格式分为哪5类?每类指针变量如何定义?<BR>答:指针变量按定义格式大致可分为五种:指针变量、指针数组、指向一维数组的指针变量、返回指针值的函数、函数指针变量。<BR>(1)指针变量的定义格式如下:<BR>〔存储类型〕 
                  &lt;类型&gt; *&lt;指针变量名&gt; ;如: int b,a[10],* 
                  p;<BR>(2)指针数组的定义格式如下:<BR>〔存储类型〕 &lt;类型&gt; 
                  *&lt;数组名&gt;[&lt;数组长度&gt;];<BR>例如: char c[3 ][4]={ 
                  "ABC","DEF","GHI"};<BR>char *pc[3 
                  ]={c[0],c[1],c[2]};<BR>(3)指向一维数组的指针变量可用于处理二维数组的运算问题,其定义格式为:<BR>&lt;类型&gt; 
                  (*&lt;指针变量名&gt;)[&lt;数组列数&gt;]; <BR>如:int 
                  (*p)[3];<BR>(4)函数可返回一个指针值,该指针指向一个已定义好的任一类型的数据。定义返回指针值的函数格式为:&lt;类型&gt; 
                  *&lt;函数名&gt;(&lt;形参&gt;){&lt;函数体&gt;} <BR>如:float * f ( float 
                  x) {… } 定义了一个返回实型指针的函数f 
                  (),该函数的形参为实型的x。<BR>(5)函数指针变量是用于存放函数指针的变量,也即存放函数入口地址的变量。函数指针变量的定义格式为:<BR>&lt;类型&gt; 
                  (*&lt;变量名&gt;) (&lt;参数表&gt;);</P>
                  <P class=xt12>4.26 
                  定义一个整型指针变量pi,用什么方法,才能使pi指向整型变量i,指向整型一维数组a的首地址,指向整型二维数组b的首地址。<BR>答:<BR>pi=&amp;i;<BR>pi=a;(或者pi=&amp;a[0];)<BR>pi=&amp;a[0][0];(或者pi=a[0];)</P>
                  <P class=xt12>4.27 
                  叙述二维数组a的行地址、行首地址、元素地址的概念、作用及表示方法,写出元素a[i][j]值的表示方法。<BR>答:行首地址是第i行第0列的地址,第i行首地址表示方式有:*(a+i)、a[i]、&amp;a[i][0],用于指向数组元素的指针变量。<BR>行地址是第i行的地址,行地址表示方式有:a+i、&amp;a[i],用于指向一维数组的指针变量。注意,二维数组名a是表示第0行的行地址&amp;a[0],而不是第0行第0列的元素地址&amp;a[0][0]。<BR>第i行第j列元素a[i][j]地址的表示方式有:a[i]+j 
                  、*(a+i)+j 
                  、&amp;a[i][0]+j、&amp;a[i][j]。<BR>第i行第j列元素值的表示方式有:*(a[i]+j) 、 
                  *(*(a+i)+j) 、 *(&amp;a[i][0]+j)、a[i][j]。</P>
                  <P 
                  class=xt12>4.28引用类型变量与其相关变量有何关系?引用类型变量主要用于什么场合?<BR>答:引用类型变量与其相关的变量使用相同的内存空间。<BR>在C++中引入引用类型的主要目的是为了函数参数传送提供方便。由于引用类型变量与相关变量使用相同的内存空间,所以用引用类型变量作为函数形参时,形参与实参变量使用相同的内存,在函数内对形参的运算就是对实参的运算,因此可通过参数返回函数运算结果。</P>
                  <P class=xt12>4.29 
                  对字符串指针变量,能否用cin、cout对其输入/输出字符串?能否对字符串指针变量进行赋值运算?字符串指针变量能否作为字符串处理函数的参数?<BR>答:不能将字符串用cin直接输入指针变量。但可将指针变量所指字符串用直接输出。<BR>可以对字符串指针变量进行赋值运算。<BR>字符串指针变量能作为字符串处理函数的参数。</P>
                  <P class=xt12>4.30 读下列程序,并写出程序运行结果。<BR>(1)<BR># include 
                  &lt;iostream.h&gt;<BR>void main (void)<BR>{ float 
                  x=1.5,y=2.5,z;<BR> float 
                  *px,*py;<BR> px=&amp;x;<BR> py=&amp;y;<BR> z= * px + 
                  *py;<BR> cout&lt;&lt;"x="&lt;&lt;*px&lt;&lt;'\t'&lt;&lt;"y="&lt;&lt;*py&lt;&lt;"z="&lt;&lt;z&lt;&lt;'\n';<BR>}<BR>程序运行结果是:<BR>x=1.5 
                  y=2.5z=4<BR>(2)<BR># include &lt;iostream.h&gt;<BR>void main( 
                  void)<BR>{ int a[5]={10,20,30,40,50};<BR> int *p=&amp;a[0]; 
                  <BR> p++;<BR> cout&lt;&lt; *p&lt;&lt;'\t'; <BR> p+=3; 
                  <BR> cout&lt;&lt; *p&lt;&lt;'\t'; <BR> cout&lt;&lt; 
                  *p--&lt;&lt;'\t'; <BR> cout&lt;&lt;++ *p&lt;&lt;'\n'; 
                  <BR>}<BR>程序运行结果是:<BR>20 50 50 41</P>
                  <P class=xt12>4.31 
                  编写程序,用4种方式求整型一维数组的和。4种方式是指4种不同的数组元素表达方式。<BR>解:<BR># include 
                  &lt;iostream.h&gt;<BR>void main( void)<BR>{ int 
                  a[5],i,j,*p,n=5,sum;<BR> p=a;<BR> cout 
                  &lt;&lt;"请输入一维数组的五个数据值"&lt;&lt;endl;<BR> for 
                  (i=0;i&lt;n;i++)<BR> cin&gt;&gt;a[i]; 
                  <BR> cout&lt;&lt;endl;<BR> sum=0;<BR> for (i=0;i&lt;n;i++) 
                  //第一种方式<BR> sum=sum+a[i];<BR> cout&lt;&lt;"数组元素的和为:"&lt;&lt;sum&lt;&lt;endl;<BR>  sum=0;<BR>  p=a; 
                  //第二种方式<BR> for (i=0;i&lt;n;i++)<BR>  sum=sum+*(p+i); 
                  <BR>  cout&lt;&lt;"数组元素的和为:"&lt;&lt;sum&lt;&lt;endl;<BR>  sum=0; 
                  <BR> for (i=0;i&lt;n;i++) 
                  //第三种方式<BR>  sum=sum+*(a+i);<BR>  cout&lt;&lt;"数组元素的和为:"&lt;&lt;sum&lt;&lt;endl;<BR> sum=0;<BR> for 
                  (i=0;i&lt;n;i++) 
                  //第四种方式<BR>  sum=sum+p[i];<BR> cout&lt;&lt;"数组元素的和为:"&lt;&lt;sum&lt;&lt;endl;<BR>}<BR>程序运行结果为:<BR>请输入一维数组的五个数据值</P>
                  <P 
                  class=xt12>数组元素的和为:15<BR>数组元素的和为:15<BR>数组元素的和为:15<BR>数组元素的和为:15</P>
                  <P class=xt12>4.32编写程序,用以下二种方法求实型二维数组a[3][4]的最大值。<BR>(1)用指针变量 
                  (2)用表7.1中的数组元素表示法中的第三种 <BR>解:<BR># include 
                  &lt;iostream.h&gt;<BR>void main(void)<BR>{ int 
                  a[3][3]={{1,2,3},{4,5,6},{7,8,9}};<BR> int 
                  *p=&amp;a[0][0],max;<BR> max=*p; //将二维数组首地址赋给指针变量p<BR> for 
                  (int i=0;i&lt;9;i++) <BR> { if(max&lt;*p)max=*p; 
                  //输出二维数组中第i个元素值<BR>  p++; 
                  //指针变量p加1,指向下一个元素<BR> }<BR> cout&lt;&lt;"数组的最大值为:"&lt;&lt;max&lt;&lt;endl;<BR> max=*(&amp;a[0][0]+0);<BR> for(i=0;i&lt;3;i++) 
                  //利用元素地址进行求解<BR> for(int 
                  j=1;j&lt;3;j++)<BR> if(max&lt;*(&amp;a[i][0]+j)) 
                  max=*(&amp;a[i][0]+j);<BR> cout&lt;&lt;"数组的最大值为:"&lt;&lt;max&lt;&lt;endl;<BR>}<BR>程序输出结果为:<BR>数组的最大值为:9<BR>数组的最大值为:9</P>
                  <P class=xt12>4.33 
                  用指针变量编写下列字符串处理函数:<BR>(1)字符串拼接函数<BR>(2)字符串比较函数<BR>(3)取字符串长度函数<BR>在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。然后将两个字符串进行拼接,输出拼接后的字符串及其长度。<BR>解:<BR># 
                  include &lt;iostream.h&gt;<BR>int scmp(char *p1,char *p2)<BR>{ 
                  while(*p1==*p2)<BR> { p1++;<BR>  p2++;<BR>  }<BR>if 
                  (*p1&gt;*p2) <BR>return 1;<BR>else if (*p1==*p2)<BR> return 
                  0;<BR>else<BR> return -1;<BR>}<BR>void scat(char *p1,char 
                  *p2)<BR>{ 
                  while(*p1!=0)<BR> p1++;<BR> while(*p2!=0)<BR> *p1++=*p2++;<BR> *p1=0;<BR>}<BR>int 
                  slen(char *p)<BR>{ int l=0;<BR> while(*p!=0)<BR> { 
                  p++;<BR>  l++;<BR> }<BR> return l;<BR>}<BR>void 
                  main(void)<BR>{ char s1[40],s2[20];<BR> cout&lt;&lt;"Input 
                  String1:";<BR> cin&gt;&gt;s1;<BR> cout&lt;&lt;"Input 
                  String2:";<BR> cin&gt;&gt;s2;<BR> if 
                  (scmp(s1,s2)==1)<BR>  cout&lt;&lt;"String1&gt;String2"&lt;&lt;endl;<BR> else 
                  if 
                  (scmp(s1,s2)==-1)<BR>  cout&lt;&lt;"String2&gt;String1"&lt;&lt;endl;<BR> else<BR>  cout&lt;&lt;"String1=String2"&lt;&lt;endl;<BR> scat(s1,s2);<BR>  cout&lt;&lt;"String1+String2="&lt;&lt;s1&lt;&lt;endl;<BR> cout&lt;&lt;"Length="&lt;&lt;slen(s1)&lt;&lt;endl;<BR>}<BR><BR>4.34 
                  定义一个二维字符数组c[5][80],用cin.getline 
                  输入5个字符串到二维数组5行中,然后用c[0]~c[4]表示5行字符串,对字符串进行升序排列,最后输出排序后的结果。<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR># include &lt;string.h&gt;<BR>void 
                  main(void)<BR>{ char c[5][80];<BR> char 
                  *p[5]={c[0],c[1],c[2],c[3],c[4]};<BR> char *pc;<BR> int 
                  i,j;<BR> cout&lt;&lt;"Input 5 String:"&lt;&lt;endl;<BR> for 
                  (i=0;i&lt;5;i++)<BR> cin&gt;&gt;p[i];<BR> for 
                  (i=0;i&lt;4;i++)<BR> { for (j=i+1;j&lt;5;j++)<BR>  if (strcmp 
                  (p[i],p[j])&gt;0) <BR>  { 
                  pc=p[i];p[i]=p[j];p[j]=pc;<BR>  }<BR> }<BR> for ( 
                  i=0;i&lt;5;i++) cout&lt;&lt;p[i]&lt;&lt;endl;<BR>}</P>
                  <P class=xt12>4.35 
                  输入一个二维数组a[6][6],设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大值和最小值,并输出。<BR>解:<BR># 

⌨️ 快捷键说明

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