实验三 循环程序设计(C++)
实验三 循环程序设计(C++)
一、实验目的与要求
1、掌握循环语句while、do-while,for。
2、掌握循环控制方法。
3、掌握break、continue、goto的用法。
4、掌握循环程序设计方法。
二、实验内容
1、输入一行字符(换行符“\n”作为结束标志),分别统计出其中英文字母、空格、数字字符和其它字符的个数。
提示:从键盘上读入一个字符给变量c,判断c是属于哪种字符并计数,循环读入下个字符,直到回车换行字符“\n”为止。
2、编写一个程序:从键盘上输入两个正整数,求a和b的最大公约数与最小公倍数。
3、使用循环结构输出下列图形:
*
**
***
****
*****
5、苹果每个0.8元,第一天买2个,第二天开始,每天买前天的2倍,直到单天购买的苹果数不超过100的最大值,求每天平均花多少钱。
三、实验步骤、算法与结果分析
1、字符计数
(1)流程图
(2)程序
#include<iostream>
#include<cctype>
#include<stdio.h>
using namespace std;
int main()
{
//输入一行字符(换行符“\n”作为结束标志),分别统计出其中英文字母、空格、数字字符和其它字符的个数。
//提示:从键盘上读入一个字符给变量c,判断c是属于哪种字符并计数,循环读入下个字符,直到回车换行字符“\n”为止。
cout<<"Please enter a character line : \n";
char ch;
int a=0,b=0,c=0,d=0,i; //a英文字母,b空格,c数字字符,d其他字符
while((ch=getchar()) != '\n') //循环读入字符直到换行符
{
if(ch<='z'&&ch>='a'||ch<='Z'&&ch>='A')
a++;
else if(ch==' ')
b++;
else if(ch<='9'&&ch>='0')
c++;
else
d++;
}
cout<<"letters : "<<a<<endl<<"blank : "<<b<<endl<<"number : "<<c<<endl<<"Other characters : "<<d<<endl;
return 0;
}
(3)结果
2、求a和b的最大公约数与最小公倍数
(1)流程图
(2)程序
#include<iostream>
using namespace std;
int main()
{
//从键盘上输入两个正整数,求a和b的最大公约数与最小公倍数
int a,b;
cout<<"Please enter two integers : \n";
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
int m=1 , n=1 , k=2; //m为最大公约数,n为最小公倍数,k为中间参量
//最大公约数
while(k<=a&&k<=b)
{
if(a%k==0&&b%k==0)
m=k;
k++;
}
//最小公倍数
//最小公倍数和最大公约数之积等于这2个数之积
n=(a*b)/m;
cout<<a<<" "<<b<<" greatest common divisor gcd : "<<m<<endl;
cout<<a<<" "<<b<<" lowest common multiple LCM : "<<n<<endl;
return 0;
}
(3)结果
3、右对齐梯形 *
(1)流程图
(2)程序
#include<iostream>
using namespace std;
int main()
{
//右对齐的梯形*
int i , a , b;
for(i=1;i<6;i++) //控行
{
for(a=1;a<=5-i;a++) //控格
cout<<" ";
for(b=1;b<=i;b++) //控*
cout<<"*";
cout<<endl;
}
return 0;
}
(3)结果
4、平方根的迭代公式
(1)流程图
(2)程序
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
double a , xn , xn1;
cout<<"xn=sqrt(a)\nPlease enter a number : \na = ";
cin>>a;
xn=68;
xn1=(xn+a/xn)/2;
if(a<0)
cout<<"a is a wrong date !"<<endl;
else
{
do
{
xn=xn1;
xn1=(xn+a/xn)/2;
} while (fabs(xn-xn1)>=0.00001);
cout<<"xn = "<<fixed<<setprecision(5)<<xn<<endl;
}
return 0;
}
(3)结果
5、买苹果平均每天花多少钱
(1)流程图
(2)程序
#include<iostream>
using namespace std;
int main()
{
//苹果每个0.8元,第一天买2个,第二天开始,每天买前天的2倍,直到单天购买的苹果数不超过100的最大值
//求每天平均花多少钱
int i;
double p=0.8,sum,ep,m;
sum=0;
m=1;
for(i=2;i<=100;i=i*2)
{
sum = sum +p*i;
ep=sum/(m);
m++;
}
cout<<"It took "<<(m-1)<<" days\n"<<"all-in cost : "<<sum<<" yuan"<<endl;
cout<<"Average daily cost: "<<ep<<" yuan."<<endl;
return 0;
}
(3)结果