Example #1
0
int islegal(char *data[],int ln){
	int id=0;
	if (strcmp(data[0], "BSRule") != 0){
		printf("规则语句出现语法错误,规则头应为BSRule,在 %d 行\n",ln);
		return 1;
	}
	if (strcmp(data[1], "http") != 0 &&
		strcmp(data[1], "tcp") != 0 &&
		strcmp(data[1], "udp") != 0 &&
		strcmp(data[1], "tcp") != 0){
		printf("规则语句出现语法错误,协议类型错误,在 %d 行\n",ln);
		return 2;
	}
	if (!isip(data[2]) || !isport(data[3])){
		printf("规则语句出现语法错误,第一部分IP或端口数据错误,在 %d 行\n",ln);
		return 3;
	}
	if (strcmp(data[4],"->")!=0 &&
		strcmp(data[4],"<-")!=0 &&
		strcmp(data[4],"<->")!=0 ){
			printf("规则语句出现语法错误,数据流方向符错误,在 %d 行\n",ln);
			return 4;
	}
	if(!isip(data[5]) || !isport(data[6])){
		printf("规则语句出现语法错误,第二部分IP或端口数据错误,在 %d 行\n",ln);
		return 5;
	}
	if(!isid(data[8])){
		printf("规则语句出现语法错误,规则ID号不合法,在 %d 行\n",ln);
		return 8;
	}
	if(!isuniq(id)){
		id = atoi(data[8]);
		printf("规则语句出现语法错误,规则ID号不唯一,在 %d 行\n",ln);
		return 8;
	}
	return 0;
}
int main()
{
    long i,a,n;
    bool flag=0;
    while(scanf("%ld",&n)==1&&n)
    {
       if(flag)
        printf("\n");
       else
        flag=1;
       bool got=0;
       for(i=10234;i<=98765;i++)
        if(i%n==0)
        {
          a=i/n;
          if(a>999)
           if(isuniq(i,a))
           {got=1; printf("%.5ld / %.5ld = %ld\n",i,a,n);}
        }
       if(!got)
        printf("There are no solutions for %ld.\n",n);
    }
    return 0;
}