1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
3. 编程实现输入两个4X5矩阵和5X3矩阵,定义函数并在主函数中调用计算它们的积。
4.编程计算S[n]=1!+21+3!+...n!。要求定义两个函数,一个计算n!,一个计算s[n],在后一个函数中调用前一个函数。然后在主程序中输入数n的值,然后调用定义函数输出结果。
5.编写一个函数,输入一个十六进制数,输出相应的十进制数。
习题2
#include<iostream>
using namespace std;
long intPower(int base,int exponent);
int main()
{
long n;
int base,int exponent;
cout<<"请输入基数和幂";
cin>>base>>exponent;
n=intPower(base,exponent);
cout<<base<<"的"<<exponent<<"次幂是"<<n<<endl;
}
long intPower(int base,int exponent)
{
long result=1;
int i;
if(exponent!=0)
for(i=0;i<exponent;i++)
result*=base;
return result;
}
习题3
#include<iostream>
using namespace std;
int fun(int n);
int main()
{
int num;
cout<<"请输入一个正整数";
cin>>num;
if(num<=1)
{
cout<<"输入有误,请重新输入:";
cin>>num;
return 0;}
if(fun(num))
cout<<num<<"是素数"<<endl;
else
cout<<num<<"不是素数"<<endl;
return 0;
}
int fun(int n)
{
int flag=1,i;
for(i=2;i<n/2&&flag==1;i++)
if(n%i==0)
flag=0;
return flag;
}
习题4
#include<iostream>
#include<iomanip>
using namespace std;
int fun(int);
int main()
{
int num,result;
cout<<"请输入一个十进制的正整数";
cin>>num;
result=fun(num);
cout<<num<<"的逆序数是"<<result<<endl;
return 0;
}
int fun(int n)
{
int i,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;
}
习题5
#include<iostream>
using namespace std;
char grade(int);
int main()
{
int score;
cout<<"请输入百分制成绩:";
cin>>score;
char ch=grade(score);
cout<<score<<"对应的等级为:"<<ch<<endl;
return 0;
}
char grade(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;
}
习题6
#include<iostream>
using namespace std;
float average();
int main()
{
float pj=average();
cout<<"这十个学生的平均成绩为:"<<pj<<endl;
return 0;
}
float average()
{
float a[10],sum=0,average;
int i;
cout<<"请输入十个学生的成绩:"<<endl;
for(i=0;i<10;i++)
{
cin>>a[i];
sum+=a[i];
}
average=sum/10;
return average;
}
习题7
#include<iostream>
using namespace std;
int max(int m,int n);
int min(int m,int n,int k);
int main()
{
int m,n,k,l;
cout<<"请输入两个数:"<<endl;
cin>>m>>n;
k=max(m,n);
l=min(m,n,k);
cout<<m<<"和"<<n<<"的最大公约数是:"<<k<<endl;
cout<<m<<"和"<<n<<"的最小公倍数是:"<<l<<endl;
return 0;
}
int max(int m,int n)
{
int temp,r;
if(m>n)
{
temp=m;
m=n;
n=temp;
}
while((r=n%m)!=0)
{
n=m;
m=r;
}
return m;
}
int min(int m,int n,int k)
{
return m*n/k;
}
习题8
#include<iostream>
using namespace std;
void fun1();
void fun2();
void fun3();
int main()
{
fun1();
cout<<endl;
fun2();
cout<<endl;
fun3();
cout<<endl;
return 0;
}
void fun1()
{
cout<<"九九乘法表一:"<<endl;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
cout<<j<<"*"<<i<<"="<<i*j<<'\t';
cout<<endl;
}
}
void fun2()
{
cout<<"九九乘法表二:"<<endl;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
cout<<j<<"*"<<i<<"="<<i*j<<'\t';
cout<<endl;
}
}
void fun3()
{
cout<<"九九乘法表三:"<<endl;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
if(j<i)
cout<<'\t';
else
cout<<j<<"*"<<i<<"="<<i*j<<'\t';
cout<<endl;
}
}
9
/*****************
**方法一:值调用**
******************/
#include<iostream>
using namespace std;
int max(int,int,int);
int min(int,int,int);
float average(int,int,int);
int main()
{
int a,b,c;
cout<<"请输入三个数:"<<endl;
cin>>a>>b>>c;
cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max(a,b,c)<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min(a,b,c)<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average(a,b,c)<<endl;
return 0;
}
int max(int a,int b,int c)
{
int max=a;
if(b>a&&b>>c)
max=b;
else if(c>a&&c>b)
max=c;
return max;
}
int min(int a,int b,int c)
{
int min=a;
if(b<a&&b<c)
min=b;
else if(c<a&&c<b)
min=c;
return min;
}
float average(int a,int b,int c)
{
return (a+b+c)/3.0;;
}
/*******************
**方法二:引用调用**
********************/
#include<iostream>
using namespace std;
int max(int&,int&,int&);
int min(int&,int&,int&);
float average(int&,int&,int&);
int main()
{
int a,b,c;
cout<<"请输入三个数:"<<endl;
cin>>a>>b>>c;
cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max(a,b,c)<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min(a,b,c)<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average(a,b,c)<<endl;
return 0;
}
int max(int& a,int& b,int& c)
{
int max=a;
if(b>a&&b>>c)
max=b;
else if(c>a&&c>b)
max=c;
return max;
}
int min(int& a,int& b,int& c)
{
int min=a;
if(b<a&&b<c)
min=b;
else if(c<a&&c<b)
min=c;
return min;
}
float average(int& a,int& b,int& c)
{
return (a+b+c)/3.0;;
}
/*******************
**方法三:全局变量**
********************/
#include<iostream>
using namespace std;
int a,b,c;
int max();
int min();
float average();
int main()
{
cout<<"请输入三个数:"<<endl;
cin>>a>>b>>c;
cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max()<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min()<<endl;
cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average()<<endl;
return 0;
}
int max()
{
int max=a;
if(b>a&&b>>c)
max=b;
else if(c>a&&c>b)
max=c;
return max;
}
int min()
{
int min=a;
if(b<a&&b<c)
min=b;
else if(c<a&&c<b)
min=c;
return min;
}
float average()
{
return (a+b+c)/3.0;;
}
3
#include<iostream>
#include<iomanip>
using namespace std;
int i,j,a[4][5],b[5][3],c[4][3]={0},k;
void fun();
int main()
{
fun();
cout<<endl;
return 0;
}
void fun()
{
cout<<"请输入20个数:\n";
for(i=0;i<4;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"请输入15个数:\n";
for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=0;k<5;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
cout<<"相乘后的数组c[i][j]为:\n";
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<c[i][j];
cout<<endl;
}
}
4.
#include<iostream>
using namespace std;
int n;
double fun1(int k)
{
int m=1,i;
for(i=1;i<=k;i++)
m *=i;
return m;
}
int main()
{
int s=0,i,n;
cin>>n;
for(i=1;i<=n;i++)
s+=fun1(i);
cout<<"s[n]="<<s<<endl;
return 0;
}
5