声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。
这一序列说明:
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;
}
}
正文
07钱能的《C++程序设计教程》序列七:chapter7第三部分2005-08-09 00:41:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/xiangyu/3630.html
阅读(4107) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论