本文主要是介绍C语言每日小练(三)——竖式问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
例:找出所有形如abc*de(三位数乘以两位数,均非零。)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
解:
Code:
#include<stdio.h>
#include<string.h>
int main()
{int i, ok, abc, de, x, y, z, count = 0;char s[11], buf[50];scanf("%s", s);for(abc = 111; abc <= 999; abc++)for(de = 11; de <= 99; de++){x = abc*(de%10); y = abc*(de/10); z = abc*de;sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z);//将产生的所有数字存入缓冲区。ok = 1;for(i = 0; i<strlen(buf) && ok==1; i++)if(strchr(s, buf[i]) == NULL) ok = 0;//将缓冲区的每一个数字与输入的数字序列比较,若不存在,则strchr返回NULL。if(ok)//若经计算产生的数字均合法,则输出竖式。{printf("<%d>\n", ++count);printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n", abc, de, x, y, z);}}printf("The number of solutions = %d\n", count);return 0;
}
运行结果:
这篇关于C语言每日小练(三)——竖式问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!