C++程序设计基础_华中科技大学MOOC原题

华中科技大学MOOC题目。

今天我有朋友让我做一下他们华中科技大学的MOOC的题目,我就勉为其难的帮他做了一下。
在开头先声明一下,题目的答案不唯一,并且我的也不是在计算机效率上的最优答案。

首先我们来看一看他们的题目是什么?

题目一

对于一个正整数n,我们将它的各个位相加,得到一个新的数字,如果这个数是一位数,我们称之为n的数根,
否则重复处理,直到它成为一个一位数,这个一位数就是n的数根。
一位数的数根为0

例如:24,2+4=6,6是24的数根
398,3+9+8=20,2+0=2,2是398的数根

#include<iostream>
#include<windows.h>

int main()
{
    
    
	int num;										//定义用户将要输入的数。
	do
	{
    
    
		std::cout << "请输入您需要求的数:	";
		std::cin >> num;							//接受用户输入。
	}while( num < 0 );								//过滤掉用户的不正确输入。

	if( num < 10 )									//确定用户输入为个位数的特殊情况。
	{
    
    
		std::cout << "数根是:0" << std::endl;

		system("pause");							//使程序暂停,有利于观察。
		return 0;									//退出程序。
	}

	int sum = 0;
LOOP1:	
	while( num > 0 )
	{
    
    
		sum = sum + num % 10;						//提取出num的个位将其加到sum中。
		num = num / 10;								//将num的个位去掉变成一个新的数。
	}

	if( sum > 9 )									//判断经过上面的操作后,得到的sum是否为个位数,若不是个位数将继续执行上面的操作。
	{
    
    
		num = sum;
		sum = 0;
		goto LOOP1;									//跳字上方loop1处。
	}

	std::cout << "他的数根是:" << sum << std::endl;

	system("pause");
	return 0;
}

题目二

计算sum = 2/1 + 3/2+…+(n+1)/n

//计算sum = 2/1 + 3/2+…+(n+1)/n
#include<iostream>

int main()
{
    
    
	int n;								//定义用户即将输入的数。
	do
	{
    
    
		std::cout << "n = ";
		std::cin >> n;					//接受用户输入。
	}while( n <= 0 );

	double sum = 0;						//定义最终答案变量

	double i;							//定义一个双精度型的i变量,用于后面的计算。(若将double改为int的话,会发生不堪设想的后果。)
	for( i = 1 ; i <= n ; i++ )
	{
    
    
		sum = sum + ( i + 1 ) / i;		//加
	}

	std::cout << "total=" << sum << std::endl;		//输出结果

	return 0;
}

这道题个人的感觉是太简单了。毕竟作者本人以前做过这种类似的题。

题目三

题目内容:编程计算s=a+aa+aaa+…+aaa…a(n个a),a的取值为0~9,n的取值为0~5,a和n由键盘输入

例如:a=1,n=3,则s=1+11+111=123

/*
题目内容:编程计算s=a+aa+aaa+…+aaa…a(n个a),a的取值为0~9,n的取值为0~5,a和n由键盘输入

例如:a=1,n=3,则s=1+11+111=123
*/

#include<iostream>
#include<math.h>

int main()
{
    
    
	int n , a;						//定义 n 和 a 

	do
	{
    
    
		std::cout << "n = " ;
		std::cin >> n;				//接收用户输入。
	}while( n < 0 || n > 5 );		//该循环用于避免使用者的非法输入。

	do
	{
    
    
		std::cout << "a = " ;
		std::cin >> a;				//接收用户输入。
	}while( a <= 0 || a > 9 );		//该循环用于避免使用者的非法输入。

	int sum = 0 , i , j , temp ;	 //Temp表示一个数。例如111、77、55555。

	for( i = 1 ; i <= n ; i++ )
	{
    
    
		j = i;
		for( temp = 0 ; j ; j-- )
		{
    
    
			temp = temp + a * pow( 10 , j - 1 );	//计算temp的值。
		}
		sum = sum + temp;							//将每次计算出的temp的值加入到sum变量中。
	}

	std::cout << "total = " << sum << std::endl;		//输出结果。

	return 0;
}

这道题略为花费了本人一定的脑空间量。不过也都还好啦。> ^ _ ^ <

Last but not least,
1.编程的实力是通过不断的实践,不断的积累经验,从而达到的效果。
2.希望各位老爷子们高抬贵手,给宝宝点个赞。

猜你喜欢

转载自blog.csdn.net/xiaoqianqian88/article/details/112402715
今日推荐