美文网首页
杭电ACM-2089(int与char之间的转换)

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

作者: 1QzUPm_09F | 来源:发表于2017-01-23 23:33 被阅读0次

    题目:

    2089题

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

    代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    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之间的转换)

          本文链接:https://www.haomeiwen.com/subject/zvqzbttx.html