当前位置:   article > 正文

蓝桥杯真题01求和_小明对数位中含有2、0、1、8的数字很感兴趣,在1到40中这样的数包括1、2、8、10至3

小明对数位中含有2、0、1、8的数字很感兴趣,在1到40中这样的数包括1、2、8、10至3

“求和”:来自2019 【第十届蓝桥杯省赛】 C/C++ C组

题目描述:
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 2019 中,所有这样的数的和是多少?

需要的知识,字符串和数字的格式转换,字符串中有无出现某一字符的判断
如果此题不转为字符串的话,要进行求余取个位数太麻烦了!!
还是乖乖学点新东西:如何用自带函数将数字转为字符串!!
一些知识准备如下:
!!!
c++数字和字符串的转换
1 、利用stringstream
添加头文件 #include
数字转字符串:
#include
#include
int main(){
double a = 123.32;
string res;
stringstream ss; 定义流ss
ss << a; 将数字a转化成流ss
ss >> res; 将流ss转化成字符串
return 0;
}

。。。。。。。。。。。。。。。。。。。。。。。。

字符串转数字:
#include
#include
int main(){
double a ;
string res= “123.32”;
stringstream ss;
ss << res;
ss >> a;
return 0;
}

//此处包装了一个方法,将一位的数字转化成两位的字符串: //0->“00” 1->’'01"
string transform(int num)
{
string res;
stringstream ss;
ss<<num;
ss>>res;
if(num<10)
{
res=“0”+res;
}
return res;
}
。。。。。。。。。。。。。。。。。。。。。。。。

2.利用 sprintf()函数和sscanf()函数
sprintf() 用于将数字转化为字符串:
#include
#include
using namespace std;
int main()
{
char str[10];
int a=1234321;
//将整数转化为字符串
sprintf(str,"%d",a);
int len=strlen(str);
cout<<“字符串”<<str<<endl;
cout<<“长度”<<len<<endl;

char str1[10];
double b=123.321;
/ /将浮点数转化为字符串
sprintf(str1,"%.3lf",b);
int len1=strlen(str1);
cout<<"字符串"<<str1<<endl;
cout<<"长度"<<len1<<endl;
return 0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

}

。。。。。。。。。。。。。。。。。。。。。。。

sscanf() 用于将字符串转化为数字
#include
#include
using namespace std;
int main()
{
char str[]=“1234321”;
int a;
sscanf(str,"%d",&a);
cout<<a<<endl;
char str1[]=“123.321”;
double b;
sscanf(str1,"%lf",&b);
cout<<b<<endl;
return 0;
}

代码:

#include<iostream>
#include<algorithm>
#include<sstream>//定义stringstream函数 
using namespace std;
int main()
{
	long long sum=0;
	for(int i=1;i<=2019;i++)
	{
		//以下操作的意思是:
		//将i数字转为s字符串来判断s中有没有出现2019字符串中的任意一个字符
		 
		string s;
		stringstream ss;
		ss<<i;
		ss>>s;
		if(s.find_first_of("2019")!=string::npos)
		{//此函数规定如果没找到的话就返回string::npos 
			sum+=i;
		}
	}
	cout<<sum<<endl;
	return 0;
 } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

答案:1905111

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/302977
推荐阅读
相关标签
  

闽ICP备14008679号