正文

07钱能的《C++程序设计教程》序列七:chapter7第三部分2005-08-09 00:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/3630.html

分享到:

声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。 这一序列说明: 1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999 2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。 3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以后这里的答案简称“网络版” 4.更多的学习和改进将在《The C++ programming language》答案序列中体现。 序列七:chapter7 7.4 为了比较直接在原程序上修改 //#include <iostream.h> #include<iostream> using namespace std; void bubble(int[],int); void main() {   //int array[]={55,2,6,4,32,12,9,73,26,37};   int array[]={2,4,6,32,12,9,73,26,37};//为了测验,把原数组修改了一下   int len=sizeof(array)/sizeof(int);    //元素个数   for(int i=0; i<len; i++)              //原始顺序输出     cout <<array[i] <<",";   cout <<endl<<endl;   bubble(array, len);      //调用排序函数 } void bubble(int a[],int size)    //冒泡排序 {   int i,temp;   int noswap=1;//设定一个标志,若有经过交换则令为0   for(int pass=1; pass<size; pass++){    //共比较size-1轮     for(i=0; i<size-pass; i++)           //比较一轮       if(a[i]>a[i+1]){         temp=a[i];         a[i]=a[i+1];         a[i+1]=temp;         noswap=0;       }     if(noswap)break;//没有经过交换,也就是已经排序完成了     else noswap=1;     for(i=0; i<size; i++)    //比较一轮后就输出       cout <<a[i] <<",";     cout <<endl;        } } 7.5 #include<iostream> using namespace std; void main() {     const int n=4;     int i,j,sum=0;     int array[n][n];     cout<<"请输入"<<n*n<<"个整数"<<endl;     for(i=0;i<n;i++)         for(j=0;j<n;j++)             cin>>array[i][j];     for(i=0;i<n;i++)//斜对角线             sum+=array[i][i];     for(i=0,j=n-1;i<n;i++,j--)//反斜杆对角线         sum+=array[i][j];     cout<<"所求的数值是:"<<sum<<endl; } 7.6 这题不难但是比较繁琐,不知道我对题目的意思是否正确 #include<iostream> using namespace std; int FindHightest(int n,int j); int FindFailure(int i,int m); double Average(int n,int j); int student[5][4]={{88,95,92,91},                    {61,65,37,77},                    {92,81,73,80},                    {51,55,60,60},                    {77,63,70,80}}; void main() {          char *course[4]={"math","English","physical","computer"};     int i,j,temp;     for(i=0;i<4;i++)     {         temp=FindHightest(5,i);         cout<<"课程"<<course[i]<<"成绩最高的学生号是:"<<temp<<endl;     }     for(i=0;i<5;i++)     {         temp=FindFailure(i,4);         if(temp==0)         {             cout<<"学生号是:"<<i<<"的学生有不及格课程,"                 <<"其各课成绩分别是:";                 for(j=0;j<4;j++)                     cout<<course[j]<<":"<<student[i][j]<<",";                 cout<<endl;         }     }     for(i=0;i<4;i++)     {     cout<<course[i]<<"的平均成绩是:"<<Average(5,i)<<endl;     } }     int FindHightest(int n,int j)//找出这个课程成绩最高的学生号 {     int i,temp=0;     for(i=0;i<n;i++)         if(student[i][j]>student[temp][j])temp=i;         return temp; } int FindFailure(int i,int m) {     int j;     for(j=0;j<m;j++)         if(student[i][j]<60)return 0;         return 1; } double Average(int n,int j) {     int i;     double sum=0;     for(i=0;i<n;i++)         sum+=student[i][j];     return sum/n; } 7.7这题应该是很容易的 #include <iostream> using namespace std; int a[3][3]={{5,7,8},{2,-2,4},{1,1,1}}; int b[3][3]={{4,-2,3},{3,9,4},{8,-1,2}}; int c[3][3]; void main() {     int i,j;     for(i=0; i<3; i++)     {         for(j=0; j<3; j++)         {             c[i][j]=a[i][j]+b[i][j];             cout <<c[i][j] <<" ";         }         cout <<endl;     } }

阅读(4234) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册