习题5.2
#include<iostream>
using namespace std;
long intpower(int base,int exponent)
{
int BASE=base;
for(int i=1;i<exponent;i++)
base*=BASE;
return base;
}
int main()
{
int base,exponent;
int num;
cout<<"输入base=";
cin>>base;
cout<<"输入exponent=";
cin>>exponent;
num=intpower(base,exponent);
cout<<"base的exponent次幂="<<num<<endl;
return 0;
}
习题5.3
#include<iostream>
using namespace std;
int distinguish(int num)
{
int pn=0;
for(int i=2;i<=num-1;i++)
{
if(num%i==0)
pn++;
}
return pn;
}
int main() //prime number=pn
{
int num,pn;
cout<<"输入正整数:";//当然要除去1
cin>>num;
pn=distinguish(num);
if(pn==0)
cout<<"该数为质数"<<endl;
else
cout<<"该数不为质数"<<endl;
return 0;
}
习题5.4
#include<iostream>
using namespace std;
int antitone(int num)
{
int NUM;
NUM=num%10;
return NUM;
}
int main()
{
int num;
int ant_num;
cout<<"输入一串数字";
cin>>num;
cout<<endl<<"反序后为";
do
{
ant_num=antitone(num);
cout<<ant_num;
num=num/10;
}while(num%10);
cout<<endl;
return 0;
}
习题5.5
#include<iostream>
using namespace std;
int classify(int num)
{
char NUM;
if(num>=90)
NUM='A';
else if(num>=75&&num<90)
NUM='B';
else if(num>=60&&num<75)
NUM='C';
else
NUM='N';
return NUM;
}
int main()
{
int num;
char level;
cout<<"输入一百分制分数:";
cin>>num;
level=classify(num);
cout<<"分数等级:"<<level<<endl;
return 0;
}
习题5.6
#include<iostream>
using namespace std;
int MEAN(int a)
{
double sum=0;
for(int i=1;i<=10;i++)
{
cout<<"输入第"<<i<<"位学生成绩:";
cin>>a;
sum+=a;
}
sum=sum/10;
return sum;
}
int main()
{
int a;
double mean;
mean=MEAN(a);
cout<<"平均分:"<<mean<<endl;
return 0;
}
习题5.7
#include<iostream>
using namespace std;
int fortran1(int a,int b)//求最大公约
{
int max;
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
if(a%i==0&&b%j==0&&i==j)
max=i;
return max;
}
int fortran2(int a,int b)//求最小公倍
{
int A=a,B=b;
while(a!=b)
{
if(a>b)
{
b+=B; //错误写成了b+=b;和a+=A;
continue;
}
else
a+=A;
}
return a;
}
int main()
{
int a,b;
int maxgongyue,mingongbei;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
maxgongyue=fortran1(a,b);
mingongbei=fortran2(a,b);
cout<<"最大公约="<<maxgongyue<<endl<<"最小公倍="<<mingongbei<<endl;
return 0;
}
习题5.8
#include<iostream>
#include<iomanip>
using namespace std;
int all()//全表
{
int a=1,b=0;
do
{
b=b+1;
cout<<a<<"*"<<b<<"="<<setw(2)<<a*b<<" ";
if(b==9)
{
cout<<endl;
b=0;
a=a+1;
}
}while(a<10);
return 0;
}
int downhalf()//下半表
{
int a=0,b=1;
do
{
a=a+1;
cout<<a<<"*"<<b<<"="<<setw(2)<<a*b<<" ";
if(a==b)
{
cout<<endl;
b=b+1;
a=0;
}
}while(b<10);
return 0;
}
int uphalf()//上半表
{
int a=1,b=0,i;
do
{
b=b+1;
cout<<a<<"*"<<b<<"="<<setw(2)<<a*b<<" ";
if(b==9)
{
cout<<endl;
for(i=0;i<a;i++)
{
cout<<" ";
}
a=a+1;
b=a-1;
}
}while(a<10);
return 0;
}
int main()
{
int style,STYLE;
cout<<"输入1,2,3,分别是全表,下半表,和上面表:";
cin>>style;
switch(style)
{
case 1:STYLE=all();break;
case 2:STYLE=downhalf();break;
case 3:STYLE=uphalf();break;
default:cout<<"请输入定意数字"<<endl;
}
cout<<endl;
return 0;
}
3. 编程实现输入两个4X5矩阵和5X3矩阵,定义函数并在主函数中调用计算它们的积。(这样行?感觉很怪)
#include<iostream>
#include<iomanip>
using namespace std;
int num(int a,int b)
{
int product; //product 乘积
product=a*b;
return product;
}
int main()
{
int a[4][5],b[5][3],c[4][3];
int i,j,k,sun=0;
int x,y;
cout<<"输入4行5列的二维数组的元素值"<<endl;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
cout<<"输入5行3列的二维数组的元素值"<<endl;
for(j=0;j<5;j++)
for(k=0;k<3;k++)
{
cout<<"b["<<j<<"]["<<k<<"]=";
cin>>b[j][k];
}
for(i=0;i<4;i++)
for(j=0;j<5;j++)
for(k=0;k<3;k++)
{
x=a[i][j];
y=b[j][k];
c[i][k]=num(x,y);
}
cout<<"两矩阵积,得到的矩阵c[4][3]为"<<endl;
for(i=0;i<4;i++)
{
cout<<endl;
for(k=0;k<3;k++)
cout<<setw(9)<<c[i][k];
}
cout<<endl;
return 0;
}
4.编程计算S[n]=1!+21+3!+...n!。要求定义两个函数,一个计算n!,一个计算s[n],在后一个函数中调用前一个函数。然后在主程序中输入数n的值,然后调用定义函数输出结果。
#include<iostream>
using namespace std;
int Nnn(int n)//计算n!
{
int j=1;
for(int i=1;i<=n;i++)
j=j*i;
return j;
}
int Sn(int n)//计算s[n]
{
int s=0;
for(int i=1;i<=n;i++)
s=s+Nnn(i);//用Nnn(i),不是用Nnn(n)
return s;
}
int main()
{
int n,s;
cout<<"输入n值吧"<<endl;
cin>>n;
s=Sn(n);
cout<<"s的输出为"<<s<<endl;
return 0;
}//累不爱
5.编写一个函数,输入一个十六进制数,输出相应的十进制数。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a;
cout<<"输入一个16进制数:";
cin>>hex>>a;
cout<<"输出一个10进制数:";
cout<<dec<<a<<endl;
return 0;
}