题目:
找出所有形如abc*de的算式;
竖式中的数字都是输入的字符串中的数字;输入:2357
输出:
<1>
775
X 33
-----
2325
2325
-----
25575
思路:尝试所有的abc和de,判断是否满足条件;
#include<stdio.h>
#include<string.h>
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int count=0;
char s[20],buf[99];
scanf("%s",s);
for(int abc=100;abc<=999;abc++){
for(int de=10;de<=99;de++){
int x=abc*(de%10),y=abc*(de/10),z=abc*de;
sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
int ok=1; //OK一定要在里面初始化
for(int i=0;i<strlen(buf);i++){
if(strchr(s,buf[i])==NULL) ok=0;
}
if(ok){
count++;
printf("<%d>",count);
printf("\n%5d\nX%4d\n-----\n%5d\n%5d\n-----\n%d",abc,de,x,y,z) ;
}
}
}
return 0;
}
主要是熟悉c语言当中的内置函数:strlen(),strchr() 1、sprintf输出到字符串…… ,数字就单个单个的保存在字符数组中
sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
假如abc=775,de=33,x=2325,y=2325,z=25575;
buf="775332325232525575"
2、strchr(s,buf[i]) 找buf[i]在字符串中的位置,找到之后,返回该字符+之后的字符;没找到返回NULL
strchr(2357,3) 会返回357
3、strlen() 就是数组的真实长度,比如s="2357",strlen(s)就是 4