竖式问题:
题目: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
<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是在一个字符串中查找字符,如果查到了返回地址,否则返回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; }