自测-4 Have Fun with Numbers (20分)

博客探讨了如何处理输入的k位数字n(k<=20),将其乘以2并检查结果数字m中的数字出现次数是否与n相同。由于数字大小可能超出整型范围,建议使用字符串存储。通过遍历和计数,对比乘2前后的数字出现次数,若不一致则返回'no'。文章还提到编程中可能出现的错误和注意事项,如数组长度、指针传递及判断条件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自测-4 Have Fun with Numbers (20分)
在这里插入图片描述思路分析:文章的大概意思是:输入一串k位(k<=20)数字n,将它乘以2,得到结果数字m,m中出现的数字是否和输入的数字n中出现的数字次数一样,即由相同数字组成,只是位置发生了变化,如果是,就返回yes,如果不是,就返回no
由于最大可以输入20位的数字,就算是long long 类型的整型也存储不了,而且如果存在一个整型变量中,会导致不好判断每一个数字出现的次数,于是将这个数存放在字符串类型,string,char[]比较合适
通过遍历数字,将每一个出现的数字和0~9作比较,得到每个数字出现的次数,并将他们存放在数组中,相当于把 0到9作为一个标准,将每一次数与他们比较,如果相同就加上1,

比较标准:0 1 2 3 4 5 6 7 8 9
比较数组:2 4 6 5 8 1 2 3 5 4
出现次数:0 1 2 1 2 2 1 0 1 0
比较数组:2 9 3 1 6 2 4 7 0 8
出现次数:1 1 2 1 1 0 1 1 1 1

由上图可知,这个数乘以2以后,数字出现的次数和该数不相等
输出no的情况有:1.当乘以2以后的位数超过原来的位数,直接输出no
2.当两组数中数字出现的次数不同的时候

#include <iostream>
#include <string>
#define MAX 20
using namespace std;
void print(int num[],int len);//定义一个输出的方法
void counting(int* num,int* a, int len);

int main()
{
   
string str;
cin >> str;
int num1[MAX],num2[MAX];//num1,存放输入的数组,num2,存放乘以2以后的数组
int a[10];
int b[10];//0~9的数字,一共由10位数
int i = 0;
int size 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值