杭电ACM-2089(int与char之间的转换)

题目:

杭电ACM-2089(int与char之间的转换)_第1张图片
2089题

PS:这道题刚看到的时候好纠结,把数据存在int不好找4和62 但是存在int数组又不好递增
所以就要学一个新的函数了——itoa();

代码:

#include
#include
#include
int s[1000000],i;
char str[8];

void init()
{
    for(i=1;i<=1000000;i++)
    {
        itoa(i,str,10);
        if(strstr(str,"4")!=NULL||strstr(str,"62")!=NULL)
            s[i]=0;
        else
            s[i]=1;
    }
}

int main()
{
    int n,m,k,cnt;
    init();
    while(~scanf("%d%d",&n,&m))
    {
        cnt=0;
        if(n==0&&m==0)
            break;
        for(k=n;k<=m;k++)
        {
            cnt+=s[k];
        }
        printf("%d\n",cnt);
    }
    return 0;
}

小知识:

itoa(i,str,10);
就是将in i;转换成char str; 10代表10进制

itoa有3个参数,分别是:需要改变的数;存放数组;进制。(本题是整形转换为字符串)

其次是strstr的应用~~~
功能是搜索"字符(串)",如果找到了就返回该字符串所在的位置,如果没有找到就返回空指针NULL

像本题就可以先将整数转换成字符串,之后再搜索4和62是否在字符串中,如果都没有返回NULL指针,那么cnt++;

你可能感兴趣的:(杭电ACM-2089(int与char之间的转换))