1.给一个数字N,求1到N中含有以下数字的个数,数字中包含7或者能被7整除。例如: N=20, 则7,14,17三个数满足要求,则输出3.
思路:对于数字中包含的情况,这里的处理方式是将数字装化为字符串,遍历字符串,找字符'7'
代码:
<span style="font-size:12px;">#include<iostream>
#include<cassert>
#include<cstdlib>
using namespace std;
#define MAX 20
int FindNum7(char **str,int N)
{
int num=0;
for(int i=1;i<=N;i++)
{
itoa(i,str[i-1],10);
if(i%7==0)
num++;
else
{
int j=0;
while(str[i-1][j]!='\0')
{
if(str[i-1][j]=='7')
num++;
j++;
}
}
}
return num;
}
int main(void)
{
int N;
cin>>N;
char **str=(char **)malloc(sizeof(char *)*N);
assert(str!=NULL);
for(int i=0;i<N;i++)
{
str[i]=(char *)malloc(sizeof(char)*MAX);
if(str[i]==NULL)
while(i>0)
{
free(str[--i]);
}
}
cout<<FindNum7(str,N)<<endl;
for(int i=0;i<N;i++)
{
free(str[i]);
}
free(str);
return 0;
}</span>
2,给一个数组,求数组中大于等于数组元素均值的元素的个数。如1,2,3,4,5; 则数组元素均值为3,比3大或者相等的有3,4,5三个,则输出3.
注:这个题目有点2额