- 求一个数n的个位a,十位b,百位c,千位d
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
d=(n/1000)%10;
例子:但如果只需判断每个位中的数满不满足某种要求,就可以循环求解,这样还可以避免前导零的情况,比如3,我按上述方式求,则b,c,d都是0,就容易出错
求1-n中出现0,1,2,9的所有数的和
#include <iostream>
using namespace std;
int main()
{
int n;
int res=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
int k=i;
while(k){
int g=k%10;
if(g==0||g==1||g==2||g==9)
{
res+=i;
break;
}
k=k/10;
}
}
cout<<res<<endl;
return 0;
}
2、日期问题
#include <iostream>
using namespace std;
int main()
{
//暴力枚举每一种情况
//就是把所有序列的情况列出来,然后去匹配,看是否能匹配成功
//相当于在一个字符串里面去找子串,只不过子串不连续而已
int a[100];
for(int i=0;i<100;i++)
cin>>a[i];
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int res=0;
for(int m=1;m<=12;m++)//月份必须从1开始,否则会出错
for(int day=1;day<=month[m];day++)
{
int j=0;
int seq[]={2,0,2,3,m/10,m%10,day/10,day%10};
//循环列出序列可能的每一种情况,即不同的日期总共几种
for(int k=0;k<100;k++)
{
if(a[k]==seq[j]){
j++;
if(j==8){
res++;
break;
}
}
}
}
cout<<res<<endl;
return 0;
}
3、字符计数
char c[100];读入时scanf(“%s”,c);求长度大小时需要用strlen(c),加头文件
#include<cstring>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char c[110];
int yun=0;
int fu=0;
scanf("%s",c);
for(int i=0;i<strlen(c);i++){
if(c[i]=='a'||c[i]=='e'||c[i]=='i'||c[i]=='o'||c[i]=='u')
yun++;
else
fu++;
}
cout<<yun<<endl;
cout<<fu<<endl;
return 0;
}