从零开始学习c++之程序计算的简单应用

本文提供了一系列C++编程练习题目,包括猜数游戏、素数查找、日历打印等,帮助初学者掌握选择和循环结构及vector的使用。

在学习了选择和循环结构以及vector的简单使用后,可以进行下面一些题目的简单应用

1.//编写猜数游戏程序 系统随机一个1000以内数,猜出这个数

        int n;       //输入数
	int num = 1;     //随机数
	int count = 1;   //次数
	srand(time(NULL)); 
	num = rand() % 1000;           //随机1000以内数
	do
	{
		cout << "猜一个数" << endl;
		cin >> n;
		count++;
		if (n == num)
		{
			break;
		}
		else if(n>num)
		{
			cout << "大了" << endl;
		}
		else if (n < num)
		{
			cout << "小了" << endl;
		}	
	} while (true);
	cout << count << "次后成功" << endl;

2.//找出0-100之间所有素数   (素数:除了1和他本身以外不能再被其他数整除)

        bool isPrime = 1;            //标识符
	vector<int> primes;         //存放素数
	for (int i = 2; i < 101; i++)          //素数最小为2
	{
		isPrime = 1;
		for (int j = 2; j < i; j++)         //遍历小于i的数
		{
			if (i % j == 0)        //取余,能整除则不是素数
			{
				isPrime = 0;
			}
		}
		if (isPrime == 1)
		{
			primes.push_back(i);        //放入vector
		}
	}
	for (int i = 0;i < primes.size();i++)
	{
		cout << primes[i] << endl;
	}


3.//循环打印1997年7月的日历
   //已知1997年7月1日周二,香港回归
  
        //1.定义遍历
	int day = 31;           //7月共有31天
	int dayOfWeek = 2;     //周二
	cout << "一\t二\t三\t四\t五\t六\t日" << endl;
	//先打印\t 周几就打印几个          每个月第一天要打印\t来表示1号是周几
	for (int i = 0; i < dayOfWeek-1; i++)
	{
		cout << "\t";
	}
	//循环打印日子
	//cout << 1 << endl;
	for (int i = 1; i <= day; i++)
	{
		cout << i ;
		if ((i + dayOfWeek - 1)%7==0)       //判断是否是周日 则换行    dayOfWeek=2
		{
			cout << "\n";
		}
		else
		{
			cout << "\t";
		}
	}

4.//一个古老的传说,国王感谢发明了国际象棋的人,答应他一个要求,发明人提出:棋盘第一个格子放1粒米,第二个格子放2粒米,第三个格子放4粒,以此类推,直到放满64个格子。计算一下至少放1000000000粒米需要多少个格子

        unsigned int i = 1;      //当前格子米数
	int count = 1; //当前所处格子数
	int total = 0;   //之前所有米数
	for (count = 1;count<=33;count++)
	{
		cout << count<<"\t";   //打印当前格子数
		i = 1 << (count-1);      //左移变大
		total += i;
		cout << "i:" << i << "\t"<<"total:" << total << endl;
		if (total >= 1000000000)
		{
			break;
		}		  		
	}


5.//编写一个求解二元一次方程组的程序    (用公式求解x1,x2)

//输入数据
	double a;     //a!=0
	double b;   
	double c;
	//输出结果数据
	double x1;
	double x2;
	cout << "Enter a b c   (a!=0)";
	cin >> a >> b >> c;
	double temp = b*b - 4 * a*c;
	if (temp<0)    //无解
	{
		cout << "No Root" << endl;
	}
	else if(temp == 0)      //x1==x2
	{
		x1 = x2 = (-b ) / (2 * a);
		cout << "X1=" << x1 << "\tX2=" << x2 << endl;
	}
	else
	{
		x1 = (-b + sqrt(temp)) / (2 * a);
		x2 = (-b - sqrt(temp)) / (2 * a);
		cout << "X1=" << x1 << "\tX2=" << x2 << endl;
	}

6.//编写一个简单的包含加减乘除的计算器程序
        cout << "Enter expression(can handle +,-,*,/)\n";
	cout << "Enter x to end expression(e.g.,1+2*3x):";
	int lval = 0;     //最左边的操作数
	int rval;
	cin >> lval;
	if (!cin)  //判断输入流是否正常
	{
		perror("no first operand");
	}
	for (char op;cin>>op;)     //读入运算符和右操作符
	{                          //重复该过程
		if (op != 'x')         //输入x时结束
		{
			cin >> rval;
		}
		if (!cin)
		{
			perror("no second operand");
		}
		switch (op)
		{
		case'+':
			lval += rval;
			break;
		case'-':
			lval -= rval;
			break;
		case'*':
			lval *= rval;
			break;
		case'/':
			lval /= rval;
			break;
		default:          //当没有运算符时输出计算结果
			cout << "Result:" << lval << endl;
			return 0;
		}
	}
 //值得注意的是 当输入5-4*2时,结果为2,而并不是-3,因为本程序并没有判断操作符的优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值