}2.统计输入的一段文字中出现的行数、单词数和字符数//10分
3.约瑟夫(Josephus)问题:
n个人围坐成一圈,从1开始顺序编号;游戏开始,从第一个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的序号。
4.用迭代法编程求x=
求平方根的公式为
要求前后
两次求出的x的差的绝对值小于10-7//10分
5.定义内联函数,判断一个字符是否为数字字符。
//10分
6.设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。
两个实数求余定义为实数四舍五入取整后相除的余数。
//10分
7.编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接正方形两个角及一边中点的等腰三角形和上底为0.5的等腰梯形面积。
//15分
要求:
采用重载函数实现。
【提示】:
函数原型如下:
double area(double radius=0);
// 圆面积,参数为半径,缺省参数0,表示点面积
double area(double a, double b);
// 计算矩形面积,参数为长和宽
double area(double a, double b, double h);
// 计算梯形面积,参数为两底和高
double area(double a, double b, double c, int);
// 三角形,参数为三边长,int型参数起表示作用,以区别于梯形,不参加计算。
8.建立一个头文件area.h,在其中定义两个面积函数area(),分别用来计算半径为r的圆的面积和边长为a和b的矩形面积。
另外建立一个实现文件area.cpp,在其中定义主函数。
通过包含area.h,输入数据并输出圆和矩形的面积。
结果与分析:
Sy1-1:
Sy1-2:
//2.统计输入的一段文字中出现的行数、单词数和字符数
#include
#include
usingnamespacestd;
intmain()
{
charch;
boolisWS=true;
intline=1,word=0,charCnt=1;
cin>>ch;
while((ch=getchar())!
='#')
{
charCnt++;
if(ch=='\n')
line++;
if(ch=='\n'||ch=='\t'||ch=='')
isWS=true;
elseif(isWS==true)
{
word++;
isWS=false;
}
}
cout<<"行数:
"<cout<<"单词数:
"<cout<<"字符数:
"<getchar();
getchar();
return0;
}
Sy1-3:
//3.约瑟夫(Josephus)问题:
n个人围坐成一圈,从1开始顺序编号;游戏开始,从第一
//个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的序号。
#include
usingnamespacestd;
intmain()
{
intm,n,k;
cout<<"输入人数:
\n";
cin>>n;
k=n;
cout<<"输入报数最大值m:
\n";
cin>>m;
int*p=newint[n];
for(inti=0;ip[i]=1;
intj=-1;
while(k>0)
{
for(intf=0;f{
j++;
if(j==n)
j=0;
if(p[j]==0)
f-=1;
}
cout<p[j]=0;
k--;
}
deletep;
getchar();
getchar();
return0;
}
Sy1-4:
//迭代法,平方根公式。
#include
usingnamespacestd;
#include
#include
intmain()
{
doublea,x1,x2;
cin>>a;
x1=1;
x2=(x1+a/x1)/2;
while(fabs(x1-x2)>=1e-7)
{
x1=x2;
x2=(x1+a/x1)/2;
}
cout<cout<getchar();
getchar();
return0;
}
Sy1-5:
//5.定义内联函数,判断一个字符是否为数字字符。
#include
usingnamespacestd;
inlinevoidcheck(charch);
intmain()
{
charch;
cin>>ch;
check(ch);
getchar();
getchar();
return0;
}
inlinevoidcheck(charch)
{
if((ch-'0')>=0&&(ch-'9')<=9)
cout<<"该字符是数字!
";
else
cout<<"该字符不是数字!
";
}
Sy1-6:
//6.设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。
//两个实数求余定义为实数四舍五入取整后相除的余数。
#include
usingnamespacestd;
intremainder(inta,intb);
doubleremainder(doublec,doubled);
intmain()
{
inta,b;
doublec,d;
cout<<"输入两个整数:
";
cin>>a>>b;
cout<<"输入两个实数:
";
cin>>c>>d;
cout<cout<getchar();
getchar();
return0;
}
intremainder(inta,intb)
{
return(a%b);
}
doubleremainder(doublec,doubled)
{
if((c-(int)c)>=0.5)
c=(int)c+1;
if((d-(int)d)>=0.5)
d=(int)d+1;
return((int)c%(int)d);
}
Sy1-7:
/*7.编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其
内切圆、内接正方形两个角及一边中点的等腰三角形和上底为0.5的等腰梯形面积。
//15分
要求:
采用重载函数实现。
【提示】:
函数原型如下:
doublearea(doubleradius=0);
//圆面积,参数为半径,缺省参数0,表示点面积
doublearea(doublea,doubleb);
//计算矩形面积,参数为长和宽
doublearea(doublea,doubleb,doubleh);
//计算梯形面积,参数为两底和高
doublearea(doublea,doubleb,doublec,int);
//三角形,参数为三边长,int型参数起表示作用,以区别于梯形,不参加计算。
*/
#include
#include
usingnamespacestd;
doublearea(doubleradius=0);
doublearea(doublea,doubleb);
doublearea(doublea,doubleb,doubleh);
doublearea(doublea,doubleb,doublec,int);
constdoublePI=3.;
intmain()
{
doubler,m,n,x1,x2,h,a,b,c;
cout<<"输入圆的半径:
";
cin>>r;
cout<
cout<<"输入矩形的长和宽:
";
cin>>m>>n;
cout<
cout<<"输入梯形的两底和高:
";
cin>>x1>>x2>>h;
cout<
cout<<"输入三角形的三边长:
";
cin>>a>>b>>c;
cout<
getchar();
getchar();
return0;
}
doublearea(doubleradius)
{
return(radius*radius*PI);
}
doublearea(doublea,doubleb)
{
return(a*b);
}
doublearea(doublea,doubleb,doubleh)
{
return((a+b)*h/2);
}
doublearea(doublea,doubleb,doublec,int)
{
doublep=0.5*(a+b+c);
return(sqrt(p*(p-a)*(p-b)*(p-c)));
}
Sy1-8:
/*8.建立一个头文件area.h,在其中定义两个面积函数area(),分别用来计算半径为r的圆的面积
和边长为a和b的矩形面积。
另外建立一个实现文件area.cpp,在其中定义主函数。
通过包
含area.h,输入数据并输出圆和矩形的面积。
*/
#include
#include"area.h"
usingnamespacestd;
floatarea(floatr);
floatarea(floata,floatb);
intmain()
{
floatr,a,b;
cout<<"输入半径r:
\n";
cin>>r;
cout<<"输入矩形的边长a,b:
\n";
cin>>a>>b;
cout<
cout<
getchar();
getchar();
return0;
}
constfloatPI=3.14159;
floatarea(floatr)
{
return(PI*r*r);
}
floatarea(floata,floatb)
{
return(a*b);
}