1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
2.1
#include <iostream>
#include <cmath>
using namespace std;
double squ(double x);
int main()
{
double x;
cout<<"x=?"<<endl;
cin>>x;
cout<<"The square root of "<<x<<" is "<<squ(x)<<endl;
return 0;
}
double squ(double x)
{
double s1,s2;
s1=0.5*(1.0+x);
do
{
s2=s1;
s1=(s2+x/s2)*0.5;
}
while(fabs(s2-s1)>1.0E-6);
return s1;
}
程序运行结果
2.2
#include <iostream>
using namespace std;
long intPower(int x,int y);
int main()
{
long n;
int x,y;
cout<<"请输入基数及其幂:";
cin>>x>>y;
n=intPower(x,y);
cout<<x<<"的"<<y<<"次幂是"<<n<<endl;
return 0;
}
long intPower(int x,int y)
{
long s = 1;
int i;
if(y!=0)
for(i=1;i<=y;i++)
s *= x;
return s;
}
程序运行结果
2.3
#include <iostream>
using namespace std;
long fun(int x);
int main()
{
int a;
cout<<"请输入一个正整数";
cin>>a;
if(fun(a))
cout<<a<<" 是素数"<<endl;
else
cout<<a<<"不是素数"<<endl;
return 0;
}
long fun(int x)
{
int b=1,i;
for(i=2;i<x/2&&b==1;i++)
if(x%i==0)
b=0;
return b;
}
程序运行结果
2.4
#include <iostream>
#include <iomanip>
using namespace std;
int fun(int);
int main()
{
int a,b;
cout<<"请输入一个十进制点正整数"<<endl;
cin>>a;
b=fun(a);
cout<<a<<"的逆序数为:"<<b<<endl;
return 0;
}
int fun(int n)
{
int i,b,m=n;
for(i=1;;)
{
m/=10;
if(m==0) break;
i*=10;
}
if(i==1) return n;
int temp=i;
int j,a[10];
for(j=0;temp!=0;j++)
{
a[j]=n/temp;
n=n-a[j]*temp;
temp/=10;
}
for(j=j-1;j>=0;j--)
{
n+=a[j]*i;
i/=10;
}
return n;
}
程序运行结果
2.5
#include <iostream>
using namespace std;
char fun(int);
int main()
{
int score;
cout<<"请输入一个百分制成绩"<<endl;
cin>>score;
char ch=fun(score);
cout<<score<<"对应得等级为:"<<ch<<endl;
return 0;
}
char fun(int n)
{
char ch;
if(n>=90&&n<=100) ch='A';
else if(n>=80) ch='B';
else if(n>=70) ch='C';
else if(n>=60) ch='D';
else ch='E';
return ch;
}
程序运行结果
2.6
#include <iostream>
using namespace std;
float fun();
int main()
{
float p=fun();
cout<<"这10个学生平均成绩为:"<<p<<endl;
return 0;
}
float fun()
{
float a[10],sum=0,p;
cout<<"请输入10个学生的成绩:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
sum=sum+a[i];
}
p=sum/10;
return p;
}
程序运行结果
2.7
#include <iostream>
using namespace std;
int gys(int x,int y);
int gbs(int x,int y,int z);
int main()
{
int x,y,z,g;
cout<<"请输入两个数:"<<endl;
cin>>x>>y;
z=gys(x,y);
g=gbs(x,y,z);
cout<<x<<"和"<<y<<"的最大公约数为:"<<z<<endl
<<x<<"合"<<y<<"的最小公倍数为:"<<g<<endl;
return 0;
}
int gys(int x,int y)
{
int t,s;
if(x>y)
{
t=x;
x=y;
y=t;
}
while((s=y%x)!=0)
{
y=x;
x=s;
}
return x;
}
int gbs(int x,int y,int z)
{
return x*y/z;
}
程序运行结果
2.8
#include <iostream>
using namespace std;
void cf1();
void cf2();
void cf3();
int main()
{
cout<<"乘法表1"<<endl;
cf1();
cout<<endl;
cout<<"乘法表2"<<endl;
cf2();
cout<<endl;
cout<<"乘法表3"<<endl;
cf3();
cout<<endl;
return 0;
}
void cf1()
{
for(int i=1;i<10;i++)
{
for(int j=1;j<10;j++)
cout<<j<<"*"<<i<<"="<<j*i<<'\t';
cout<<endl;
}
}
void cf2()
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
cout<<j<<"*"<<i<<"="<<i*j<<'\t';
cout<<endl;
}
}
void cf3()
{
for(int i=1;i<10;i++)
{
for(int j=1;j<10;j++)
if(j<i)
cout<<'\t';
else
cout<<j<<"*"<<i<<"="<<i*j<<'\t';
cout<<endl;
}
}
程序运行结果
2.9
#include <iostream>
using namespace std;
int max(int x,int y,int z);
int min(int x,int y,int z);
int average(int x,int y,int z);
int main()
{
int x,y,z;
cout<<"请输入三个数"<<endl;
cin>>x>>y>>z;
cout<<x<<"、"<<y<<"、"<<z<<"的最大值为:"<<max(x,y,z)<<endl
<<x<<"、"<<y<<"、"<<z<<"的最小值为:"<<min(x,y,z)<<endl
<<x<<"、"<<y<<"、"<<z<<"的平均值为:"<<average(x,y,z)<<endl;
return 0;
}
int max(int x,int y,int z)
{
int a=x;
if(y>x&&y>z)
a=y;
else if(z>x&&z>y)
a=z;
return a;
}
int min(int x,int y,int z)
{
int b=x;
if(y<x&&y<z)
b=y;
else if(z<x&&z<y)
b=z;
return b;
}
int average(int x,int y,int z)
{
int c;
c=(x+y+z)/3;
return c;
}
程序结果
3. 编程实现输入两个4X5矩阵和5X3矩阵,定义函数并在主函数中调用计算它们的积。
#include<iostream>
using namespace std;
void juzhen();
int main()
{
cout<<"计算矩阵a[4][5]与矩阵b[5][3]的积"<<endl;
juzhen();
return 0;
}
void juzhen()
{
int a[4][5],b[5][3],c[4][3],i,j,k;
cout<<"请输入矩阵a[4][5]的元素"<<endl;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"请输入矩阵b[5][3]的元素"<<endl;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
cout<<"矩阵a[4][5]为:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
cout<<a[i][j]<<'\t';
cout<<endl;
}
cout<<"矩阵b[5][3]为:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
cout<<b[i][j]<<'\t';
cout<<endl;
}
cout<<"由c[4][3]=a[4][5]*b[5][3]"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
c[i][j]=0;
for(i=0;i<4;i++)
for(k=0;k<3;k++)
for(j=0;j<5;j++)
c[i][k]+=a[i][j]*b[j][k];
cout<<"矩阵c[4][3]为:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<c[i][j]<<'\t';
cout<<endl;
}
}
程序运行结果
4.编程计算S[n]=1!+21+3!+...n!。要求定义两个函数,一个计算n!,一个计算s[n],在后一个函数中调用前一个函数。然后在主程序中输入数n的值,然后调用定义函数输出结果。
#include <iostream>
using namespace std;
int sum(int x,int y);
int jieshen(int n);
int main()
{
int m,n;
cout<<"S[n]=1!+2!+3!+.....+n!"<<endl;
cout<<"请输入n的值"<<endl;
cin>>n;
m= jieshen( n );
cout<<"S["<<n<<"] = "<<m<<endl;
return 0;
}
int sum(int x,int y)
{
int temp;
temp=x+y;
return temp;
}
int jieshen(int n)
{
int s=0;
for(int i=1;i<=n;i++)
{
int a=1;
for(int j=1;j<=i;j++)
a=a*j;
s=sum(s,a);
}
return s;
}
程序运行结果
5.编写一个函数,输入一个十六进制数,输出相应的十进制数。
#include<iostream>
#include<iomanip>
using namespace std;
void zhuanhuan();
int main()
{
zhuanhuan();
return 0;
}
void zhuanhuan()
{
int n;
cout<<"请输入一个16进制的数!"<<endl;
cin>>hex>>n; //hex 是16进制,oct是8进制,dec是10进制(如下)
cout<<"转化为10进制为:"<<endl;
cout<<dec<<n<<endl;
}