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

📄 xt4.htm

📁 有关C++程序设计的复习资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                  <P 
                  class=xt12>4.11已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。(习题课)<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#define N 10<BR>void main(void)<BR>{ 
                  float a[N];<BR> int i,b,n,m;<BR> cout&lt;&lt;"Input sort array 
                  a[9]:"&lt;&lt;endl;<BR> for(i=0;i&lt;N-1;i++)<BR> cin&gt;&gt;a[i];<BR> cout&lt;&lt;"Input 
                  number 
                  b:";<BR> cin&gt;&gt;b;<BR> i=0;<BR> n=N/2;<BR> m=n;<BR> while(m&gt;1)<BR> { 
                  if (b==a[n]) <BR>  break;<BR>  else if (b&gt;a[n]) n=n+m/2 
                  ;<BR>  else n=n-m/2;<BR>   m=m/2;<BR> }<BR> if (b==a[n]) 
                  <BR> cout&lt;&lt;b&lt;&lt;" is on 
                  "&lt;&lt;n+1;<BR> else<BR> cout&lt;&lt;"no find !";<BR>}</P>
                  <P class=xt12>4.12 输入一个5行5列的二维数组,编程实现:<BR>(1) 
                  求出其中的最大值和最小值及其对应的行列位置;<BR>(2) 
                  求出对角线上各元素之和。(提示参考例4.2)<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define N 
                  5<BR>void main(void)<BR>{ float a[N][N],max,min,sum;<BR> int 
                  i,j,r1,r2,c1,c2;<BR> cout&lt;&lt;"Input 
                  a[5][5]:"&lt;&lt;endl;<BR> for(i=0; i&lt;N;i++)<BR>  for(j=0; 
                  j&lt;N;j++)<BR>   cin&gt;&gt;a[i][j];<BR>   max=min=a[0][0];<BR>   sum=0;<BR> for(i=0; 
                  i&lt;N;i++)<BR>  for(j=0; j&lt;N;j++)<BR>  { if 
                  (a[i][j]&gt;max)<BR>   { max= 
                  a[i][j];<BR>    r1=i;c1=j;<BR>   }<BR>   else if 
                  (a[i][j]&lt;min)<BR>   { min= 
                  a[i][j];<BR>    r2=i;c2=j;<BR>   }<BR> if (i==j) 
                  sum+=a[i][j];<BR>  }<BR> cout&lt;&lt;"max="&lt;&lt;max&lt;&lt;'\t'&lt;&lt;"row1="&lt;&lt;r1&lt;&lt;'\t'&lt;&lt;"col1="&lt;&lt;c1&lt;&lt;endl;<BR> cout&lt;&lt;"min="&lt;&lt;min&lt;&lt;'\t'&lt;&lt;"row2="&lt;&lt;r2&lt;&lt;'\t'&lt;&lt;"col2="&lt;&lt;c2&lt;&lt;endl;<BR> cout&lt;&lt;"sum="&lt;&lt;sum&lt;&lt;endl;<BR>}</P>
                  <P class=xt12>4.13设计一个程序,打印杨辉三角形。(习题课)<BR>1<BR>1 1<BR>1 2 
                  1<BR>3 3 1<BR>4 6 4 1<BR>5 10 10 5 1<BR>6 15 20 15 6 1<BR>7 21 
                  35 35 21 7 1<BR>8 28 56 70 56 28 8 1<BR>1 9 36 84 126 126 84 
                  36 9 1<BR>解:方法一<BR>杨辉三角形第n行第m个元素值为多项式(1+x)n 的系数 
                  值。<BR>如第4行各元素值为:<BR><BR>所以只要计算出组合数 
                  即可得到第n行第m个元素值。<BR>用二重循环即可打印出杨辉三角形。<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define N 
                  11<BR>void main(void)<BR>{ int 
                  c[N][N],m,n,k,m1,n1,n_m;<BR> for(n=0; n&lt;N;n++)<BR> for(m=0; 
                  m&lt;=n;m++)<BR> { for(m1=1,k=1;k&lt;=m;k++) 
                  m1*=k;<BR>   for(n1=1,k=1;k&lt;=n;k++) 
                  n1*=k;<BR>    for(n_m=1,k=1;k&lt;=n-m;k++) 
                  n_m*=k;<BR>     c[n][m]=n1/(m1*n_m);<BR> }<BR> for(n=0;n&lt;N;n++)<BR> { 
                  for(m=0; 
                  m&lt;=n;m++)<BR>  cout&lt;&lt;setw(6)&lt;&lt;c[n][m];<BR>  cout&lt;&lt;endl;<BR> }<BR>}<BR>方法二<BR>从杨辉三角形各元素数值可以看出如下规律:<BR>(1)第一列和对角线元素值为1<BR>(2)其它其元素值为c[n][m]=c[n-1][m-1]+c[n-1][m]<BR>由此可编写程序如下:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define N 
                  11<BR>void main(void)<BR>{ int 
                  c[N][N],m,n,k,m1,n1,nm1;<BR> for(n=1;n&lt;N;n++)<BR> { 
                  c[n][n]=1;<BR>  c[n][1]=1;<BR> }<BR> for(n=3; 
                  n&lt;N;n++)<BR> for(m=2; 
                  m&lt;=n-1;m++)<BR> c[n][m]=c[n-1][m-1]+c[n-1][m];<BR> for(n=1; 
                  n&lt;N;n++)<BR> { 
                  for(m=1;m&lt;=n;m++)<BR>  cout&lt;&lt;setw(6)&lt;&lt;c[n][m];<BR>  cout&lt;&lt;endl;<BR> }<BR>}</P>
                  <P class=xt12>4.14 
                  输入一个字符串,求出字符串长度(不能用strlen函数),输出字符串及其长度。<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define N 
                  30<BR>void main(void)<BR>{ char str[N];<BR> int 
                  k,l,len;<BR> cout&lt;&lt;"Input a 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;str;<BR> len=0;<BR> k=0;<BR> while(str[k]!=0) 
                  <BR> { 
                  k++;<BR>  len++;<BR> }<BR> cout&lt;&lt;str&lt;&lt;endl;<BR> cout&lt;&lt;" 
                  Length of String:"&lt;&lt;len&lt;&lt;endl;<BR>}</P>
                  <P class=xt12>4.15 
                  输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。<BR>解:(提示:参考习题3.24)<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR>#define N 
                  30<BR>void main(void)<BR>{ char str[N];<BR> int 
                  f,i,k1,k2,k3,k4;<BR> cout&lt;&lt;"Input a 
                  String"&lt;&lt;endl;<BR> cin.getline(str,N);<BR> k1=0;<BR> k2=0;<BR> k3=0;<BR> k4=0;<BR> i=0;<BR> while(str[i]!=0)<BR>  { 
                  if ((str[i]&gt;=0x41) &amp;&amp; (str[i]&lt;=0x5a) || 
                  (str[i]&gt;=0x61) &amp;&amp;      (str[i]&lt;=0x7a)) 
                  k1++;<BR>   else if ((str[i]&gt;=0x30) &amp;&amp; 
                  (str[i]&lt;=0x39)) k2++;<BR>   else if (str[i]==0x20) 
                  k3++;<BR>   else 
                  k4++;<BR>   i++;<BR>  }<BR> cout&lt;&lt;"字母:"&lt;&lt;k1&lt;&lt;"个\t数字:"&lt;&lt;k2&lt;&lt;"个\t空格:"&lt;&lt;k3&lt;&lt;"个\t其它 :"&lt;&lt;k4&lt;&lt;"个"&lt;&lt;endl;<BR>}</P>
                  <P class=xt12>4.16 
                  编一程序,对从键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不同字符的ASCII码之差。例如:输入的两个字符串分别为“abcdef”和“abceef”,则第一个不同字符为“d”和“e”,输出为-1。<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;string.h&gt;<BR>#define N 
                  30<BR>void main(void)<BR>{ char s1[N],s2[N];<BR> int 
                  i,len;<BR> cout&lt;&lt;"Input first 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;s1;<BR> cout&lt;&lt;"Input 
                  second String"&lt;&lt;endl;<BR> cin&gt;&gt;s2;<BR> if 
                  (strlen(s1)&gt;strlen(s2)) len=strlen(s2);<BR> else 
                  len=strlen(s1);<BR>  i=0;<BR> while (i&lt;len &amp;&amp; 
                  s1[i]==s2[i]) i++;<BR>  if (i==len) 
                  <BR>   cout&lt;&lt;"s1=s2";<BR>  else<BR> cout&lt;&lt;"s1["&lt;&lt;i&lt;&lt;"]-s2["&lt;&lt;i&lt;&lt;"]="&lt;&lt;s1[i]-s2[i]&lt;&lt;endl;<BR>}<BR>4.17 
                  从键盘输入三个字符串,将其合并成一个字符串,并求出合并后字符串的长度。<BR>解:<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;string.h&gt;<BR>#define N 
                  30<BR>void main(void)<BR>{ char 
                  s1[N],s2[N],s3[N],s[3*N];<BR> cout&lt;&lt;"Input first 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;s1;<BR> cout&lt;&lt;"Input 
                  second 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;s2;<BR> cout&lt;&lt;"Input 
                  third 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;s3;<BR> strcpy(s,s1);<BR> strcat(s,s2);<BR> strcat(s,s3);<BR> cout&lt;&lt;"s="&lt;&lt;s&lt;&lt;endl;<BR>}<BR><BR>4.18 
                  编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。<BR>(1)用C++提供的字符串处理函数完成上述要求。<BR>(2)不用C++提供的字符串处理函数完成上述要求。<BR>解:解法一<BR>#include 
                  &lt;iostream.h&gt;<BR>#include &lt;string.h&gt;<BR>#define N 
                  30<BR>void main(void)<BR>{ char 
                  str1[N],str2[N],str[2*N];<BR> cout&lt;&lt;"Input first 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;str1;<BR> cout&lt;&lt;"Input 
                  second 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;str2;<BR> strcpy(str,str1);<BR> strcat(str,str2);<BR> cout&lt;&lt;"str="&lt;&lt;str&lt;&lt;endl;<BR>}<BR>解法二<BR>#include 
                  &lt;iostream.h&gt;<BR>#define N 30<BR>void main(void)<BR>{ 
                  char str1[N],str2[N],str[2*N];<BR> int 
                  i,j;<BR> cout&lt;&lt;"Input first 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;str1;<BR> cout&lt;&lt;"Input 
                  second 
                  String"&lt;&lt;endl;<BR> cin&gt;&gt;str2;<BR> i=0;<BR> while(str1[i]!=0) 
                  <BR> { 
                  str[i]=str1[i];<BR> i++;<BR> }<BR> j=0;<BR> while(str2[j]!=0) 
                  <BR> { 
                  str[i]=str2[j];<BR>  i++;<BR>  j++;<BR> }<BR> str[i]=0;<BR> cout&lt;&lt;"str="&lt;&lt;str&lt;&lt;endl;<BR>}</P>
                  <P class=xt12>4.19 
                  已知某运动会上男子百米赛跑决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括输出名次、运动员号码和成绩三项内容。<BR>解:<BR>用M行3列数组存放运动员号码、成绩与名次,对决赛成绩降序排序,最后按排序后的位置输入名次。<BR># 
                  include &lt;iostream.h&gt;<BR>#include &lt;iomanip.h&gt;<BR># 
                  define M 5<BR>void main(void)<BR>{ int 
                  a[M][3],i,j,k,temp;<BR> cout&lt;&lt;"Input No and final 
                  grade:";<BR> for 
                  (i=0;i&lt;M;i++)<BR> cin&gt;&gt;a[i][0]&gt;&gt;a[i][1]; 
                  <BR> for (i=0;i&lt;M-1;i++)<BR> { 
                  k=i;<BR>  for(j=i+1;j&lt;M;j++)<BR>  if (a[k][1]&lt;a[j][1]) 
                  k=j; <BR>  if (k!=i) <BR>  { 
                  temp=a[i][0];a[i][0]=a[k][0];a[k][0]=temp;<BR>   temp=a[i][1];a[i][1]=a[k][1];a[k][1]=temp;<BR>  }<BR> }<BR> for 
                  (i=0;i&lt;M;i++) 
                  a[i][2]=i+1;<BR> cout&lt;&lt;setw(6)&lt;&lt;"No." 
                  &lt;&lt;setw(6)&lt;&lt;"Grade" 
                  &lt;&lt;setw(6)&lt;&lt;"Order"&lt;&lt;endl;<BR> cout&lt;&lt;"-------------------------------------------------------------------"&lt;&lt;endl;<BR> for 
                  (i=0;i&lt;M;i++)<BR> { for (j=0;j&lt;3;j++) 
                  <BR>   cout&lt;&lt;setw(6)&lt;&lt;a[i][j];<BR>   cout&lt;&lt;endl;<BR> }<BR> cout&lt;&lt;"-------------------------------------------------------------------"&lt;&lt;endl;<BR>}</P>
                  <P class=s14><SPAN class=xt12>4.20 
                  某小组有5个学生,考了3门课程,他们的学号及成绩如表4.2所示,试编程求每个学生的总成绩及每门课的平均成绩,并按表格形式输出每个学生的学号、3门课程成绩、总成绩及各门课程的平均成绩。要求用一个6行5列的数组完成上述操作。<BR>表4.2 
                  学生成绩情况表<BR></SPAN></P>
                  <TABLE cellSpacing=1 cellPadding=1 width="75%" border=1>
                    <TBODY>
                    <TR>
                      <TD class=s14>学 号</TD>
                      <TD class=s14>数 学</TD>
                      <TD class=s14>语 文</TD>
                      <TD class=s14>外 语</TD>
                      <TD class=s14>总成绩</TD></TR>
                    <TR>
                      <TD class=s14>1001</TD>
                      <TD class=s14>90</TD>
                      <TD class=s14>80</TD>
                      <TD class=s14>85</TD>
                      <TD>&nbsp;</TD></TR>
                    <TR>
                      <TD class=s14>1002</TD>
                      <TD class=s14>70</TD>
                      <TD class=s14>75</TD>
                      <TD class=s14>80</TD>
                      <TD>&nbsp;</TD></TR>
                    <TR>
                      <TD class=s14>1003</TD>
                      <TD class=s14>65</TD>
                      <TD class=s14>70</TD>
                      <TD class=s14>75</TD>
                      <TD>&nbsp;</TD></TR>
                    <TR>
                      <TD class=s14>1004</TD>
                      <TD class=s14>85</TD>
                      <TD class=s14>50</TD>
                      <TD class=s14>60</TD>
                      <TD>&nbsp;</TD></TR>
                    <TR>
                      <TD class=s14>1005</TD>
                      <TD class=s14>80</TD>
                      <TD class=s14>90</TD>
                      <TD class=s14>70</TD>
                      <TD>&nbsp;</TD></TR>
                    <TR>
                      <TD class=s14>平均成绩</TD>
                      <TD>&nbsp;</TD>
                      <TD>&nbsp;</TD>
                      <TD>&nbsp;</TD>

⌨️ 快捷键说明

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