PTA 1019数字黑洞【C++】

该C++程序用于计算给定四位数遵循特定规则变化直到达到固定点6174的过程。首先,它将数字排序以得到最大值和最小值,然后计算两者的差值,重复此过程直到差值为0或6174为止。
摘要由CSDN通过智能技术生成

题目链接

#include <bits/stdc++.h>

using namespace std;

static const auto io_sync_off = []() {
	// 关闭同步
	ios::sync_with_stdio(false);
	// 关闭cin和cout流的绑定
	cin.tie(nullptr);
	cout.tie(nullptr);
	return nullptr;
}();

int getBig(string num){//获取较大的数
	char arr[4];
	strcpy(arr,num.c_str());
	sort(arr,arr+4,greater<char>());
	string a(arr);
	return stoi(a);
}

int getSmall(string num){//获取较小的数
	char arr[4];
	strcpy(arr,num.c_str());
	sort(arr,arr+4);
	string a(arr);
	return stoi(a);
}

int main(){
	string num;
	cin>>num;
	stringstream s;
	s<<setw(4)<<setfill('0')<<num;
	s>>num;
	bool flag= true;
	while (flag){
		int big= getBig(num);
		int small= getSmall(num);
		int tem=big-small;
		if (tem==0||tem==6174){
			flag= false;
		}
		cout<<setw(4)<<setfill('0')<<big<<" - "<<setw(4)<<setfill('0')<<small<<" = "<<setw(4)<<setfill('0')<<big-small<<endl;
		stringstream ss;
		ss<<setw(4)<<setfill('0')<<tem;
		ss>>num;
	}
	return 0;
}
C++ PTA(父母教师协会)猜数字游戏是一种常见的编程练习,通常用于教学如何在控制台上创建交互式程序。它通常包含以下几个步骤: 1. **初始化**:随机生成一个整数作为“秘密”数字,玩家需要猜测这个数字。 2. **循环**:设置一个循环,让玩家输入他们的猜测。程序会检查猜测是否等于秘密数字,大于还是小于。 3. **比较与提示**:如果玩家猜得太大或太小,程序会给出相应的反馈,如“猜大了”、“猜小了”。 4. **结束条件**:当玩家猜对数字时,游戏结束并显示胜利信息,如果达到最大尝试次数仍未猜中,则显示正确答案。 5. **用户友好**:可以添加一些额外功能,比如显示剩余猜测次数、提供选项让玩家选择范围等。 这是一个基本框架,你可以通过C++的条件语句(如if-else、switch-case)、输入输出操作以及随机数库来实现。下面是简单的伪代码示例: ```cpp #include <iostream> #include <ctime> #include <cstdlib> int secretNumber = generateRandomNumber(1, 100); // 生成1到100之间的随机数 void playGame() { int guess; int tries = 0; std::cout << "Welcome to the Guessing Game! Enter your guess:" << std::endl; while (true) { std::cin >> guess; tries++; if (guess == secretNumber) { std::cout << "Congratulations! You guessed the number in " << tries << " attempts.\n"; break; } else if (guess < secretNumber) { std::cout << "Too low, try again!\n"; } else { std::cout << "Too high, try again!\n"; } if (tries >= MAX_ATTEMPTS) { std::cout << "Sorry, you lose! The secret number was " << secretNumber << ".\n"; break; } } } int main() { srand(time(0)); // 设置随机数种子 playGame(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值