字符串处理之竖式问题,学会运用sprintf及strchr函数

竖式问题:

 题目: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 

字符串处理之竖式问题,学会运用sprintf及strchr函数_第1张图片

<span style="font-size:18px;"><strong>#include <stdio.h>
#include <string.h>

int main()
{
    char str[20];
    char buf[100];
    int i, j, k;
    int abc, de, d, e;
    int count=0;
    int jude;

    scanf("%s", str);

    for(i=100;i<1000;i++)
    {
        for(j=10;j<100;j++)
        {
            abc=i; de=j; d=de/10; e=de%10;
            jude=1;

            sprintf(buf, "%d%d%d%d%d", abc, de, e*abc, d*abc, abc*de);

            for(k=0;k<strlen(buf);k++)
            {
                if(strchr(str, buf[k])==NULL)
                {
                    jude=0;
                    break;
                }
            }

            if(jude==1)
            {
            	count++;
                printf("<%d>\n%6d\nX%5d\n------\n%6d\n%5d\n------\n%6d\n\n", count, abc, de, e*abc, d*abc, abc*de);
            }
        }
    }

        printf("The number of solutions = %d\n", count);

    return 0;
}</strong></span>

在这里用到了strchr和sprintf两个函数,下面是我实验时写的代码,我想看看下面代码在结合Google学会使用这两个函数应该没有什么问题。

strchr是在一个字符串中查找字符,如果查到了返回地址,否则返回NULL;

sprintf和printf,fprintf类似,是将数据输入到字符串里;

//>>>>>>>>>>>>strchr<<<<<<<<<<<<<
/*#include <stdio.h>

int main()
{
    char str1[100]="zhangliang";

    if(strchr(str1, 'k'))
        printf("yes\n");

    else
        printf("no\n");

    return 0;
}*/

//>>>>>>>>>>>>sprintf<<<<<<<<<<<<<
#include <stdio.h>
int main()
{
    int i;
    int a=1, b=22,c=333, d=4444, e=55555;
    char str[100];

    sprintf(str, "%d%d%d%d%d", a, b, c, d, e);

    printf("%s", str);
    return 0;
}



你可能感兴趣的:(字符串,ACM,水题)