实验三 循环程序设计(C++)

实验三   循环程序设计(C++)

一、实验目的与要求

   1、掌握循环语句while、do-while,for。

   2、掌握循环控制方法。

   3、掌握break、continue、goto的用法。

   4、掌握循环程序设计方法。

二、实验内容

1、输入一行字符(换行符“\n”作为结束标志),分别统计出其中英文字母、空格、数字字符和其它字符的个数。

提示:从键盘上读入一个字符给变量c,判断c是属于哪种字符并计数,循环读入下个字符,直到回车换行字符“\n”为止。

2、编写一个程序:从键盘上输入两个正整数,求a和b的最大公约数与最小公倍数。

3、使用循环结构输出下列图形:

           *

         **

       ***

      ****

     *****

实验三 循环程序设计(C++)

5、苹果每个0.8元,第一天买2个,第二天开始,每天买前天的2倍,直到单天购买的苹果数不超过100的最大值,求每天平均花多少钱。

三、实验步骤、算法与结果分析

1、字符计数

(1)流程图

实验三 循环程序设计(C++)

(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)结果

实验三 循环程序设计(C++)

2、求a和b的最大公约数与最小公倍数

(1)流程图

实验三 循环程序设计(C++)

(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)结果

实验三 循环程序设计(C++)

3、右对齐梯形 *

(1)流程图

实验三 循环程序设计(C++)

(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)结果

实验三 循环程序设计(C++)

4、平方根的迭代公式

(1)流程图

实验三 循环程序设计(C++)

(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)结果

实验三 循环程序设计(C++)

实验三 循环程序设计(C++)

5、买苹果平均每天花多少钱

(1)流程图

实验三 循环程序设计(C++)

(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)结果

实验三 循环程序设计(C++)