美文网首页
竖式问题

竖式问题

作者: 茶酒qqq | 来源:发表于2020-01-29 10:51 被阅读0次
    image.png
    image.png

    分析:

    要求两个乘数,两个中间结果和最终结果包含的数字都包含在输入的数字集中。

    • 输入数字集char s[99]
    • 需检验的数字经sprintf转换存入char buff[99]
    • 使用 char *strchr(const char *str, int c)判断buff中的每个字符是否包含在s中
    • 如果都包含则格式化打印
    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    using namespace std;
    int main(){
        char s[99];
        memset(s,0,99);
        cin>>s;
        char buff[99];
        memset(buff,0,99);
        
        int count=0;
        int k=1;
        for(int i=100;i<=999;i++){
            for(int j=10;j<=99;j++){
                int x=i*(j%10);
                int y=i*(j/10);
                int z=i*j;
                sprintf(buff,"%d%d%d%d%d",i,j,x,y,z);
                for(int m=0;m<strlen(buff);m++){
                    if(strchr(s,buff[m])==NULL) k=0;
                }
                if(k==1){
                    count++;
                    printf("<%d>\n%5d\nx%4d\n-----\n%5d\n%-5d\n-----\n%d\n",count,i,j,x,y,z);   
                }
                k=1;
            }
        } 
        printf("solution:%d",count);
        
        return 0;
    }
    

    结果


    image.png

    sprintf探究

    sprintf(buff,"%d%d%d%d%d",i,j,x,y,z);
    我们是想把这几个int类型的每一个数字都存入char中,方便判断是否包含。
    如果采用模运算,那就要做5个循环,非常麻烦。其实sprintf可以帮我们做这样的事情。
    看下面的程序:

    
    int main(){
        
        int a=68;
        char s[20];
        sprintf(s,"%d",a);
        
        cout<<"a: "<<sizeof(a)<<endl;
        cout<<"s: "<<s<<endl;
        cout<<"s len: "<<strlen(s)<<endl;
        cout<<"s[0]: "<<s[0]<<endl;
        cout<<"s[1]: "<<s[1]<<endl;
        
        
        
        return 0;
    }
    

    结果:


    image.png

    s[0]=6,s[1]=8, 所以sprintf不是按照字节储存的,也就是说4个字节的int不是按照一个字节存入一个char,而是按照字符储存。
    整型68 转为-->char'6''8'


    因此i,j,x,y,z进行%d格式化后,直接存入buff即可。再用strchr检验每个字符。

    strchr

    C 库函数 char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。

    进行NULL判断即可知道字符是否包含在str中。
    if(strchr(s,buff[m])==NULL) k=0;

    相关文章

      网友评论

          本文标题:竖式问题

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