主题:俺编的足彩复式转单式程序
输入时用逗号隔开.
#include "stdio.h"
#include "conio.h"
#define N 13
/********************检验输入是否正确*********************************/
int check(char *a)
{int i=0,j=0,k=0;
while(*(a+i)!='\0')
{if(*(a+i)=='3'||*(a+i)=='1'||*(a+i)=='0')
{j++;
if(j>3) return 0;
if(j==2&&*(a+i)==*(a+i-1)) return 0;
if(j==3&&(*(a+i)==*(a+i-1)||*(a+i)==*(a+i-2))) return 0;
}
else if(*(a+i)==',')
{if(i==0||*(a+i-1)==',') return 0;
k++;
j=0;
}
else
return 0;
i++;
}
if(k!=N-1||*(a+i-1)==',') return 0;
return 1;}
/**************************排列***********************************/
void pai(char *a)
{int i=0,j=0,b[N-1],k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13;
while(*(a+i)!='\0')
{if(*(a+i)==',')
{b[j]=i;
j++;}
i++;}
j=0;
for(k1=0;k1<b[0];k1++)
for(k2=b[0]+1;k2<b[1];k2++)
for(k3=b[1]+1;k3<b[2];k3++)
for(k4=b[2]+1;k4<b[3];k4++)
for(k5=b[3]+1;k5<b[4];k5++)
for(k6=b[4]+1;k6<b[5];k6++)
for(k7=b[5]+1;k7<b[6];k7++)
for(k8=b[6]+1;k8<b[7];k8++)
for(k9=b[7]+1;k9<b[8];k9++)
for(k10=b[8]+1;k10<b[9];k10++)
for(k11=b[9]+1;k11<b[10];k11++)
for(k12=b[10]+1;k12<b[11];k12++)
for(k13=b[11]+1;k13<i;k13++)
{j++;
printf("\n%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c",
a[k1],a[k2],a[k3],a[k4],a[k5],a[k6],a[k7],a[k8],a[k9],a[k10],a[k11],a[k12],a[k13]);}
printf("\nTotal=%d",j);
}
/**********************************************************************/
main()
{char *a;
printf("input %d num,输入时用逗号隔开:\n",N);
gets(a);
while(check(a)==0)
{puts("error! input again:");
gets(a);}
puts("OK!");
pai(a);
getch();
}
#include "stdio.h"
#include "conio.h"
#define N 13
/********************检验输入是否正确*********************************/
int check(char *a)
{int i=0,j=0,k=0;
while(*(a+i)!='\0')
{if(*(a+i)=='3'||*(a+i)=='1'||*(a+i)=='0')
{j++;
if(j>3) return 0;
if(j==2&&*(a+i)==*(a+i-1)) return 0;
if(j==3&&(*(a+i)==*(a+i-1)||*(a+i)==*(a+i-2))) return 0;
}
else if(*(a+i)==',')
{if(i==0||*(a+i-1)==',') return 0;
k++;
j=0;
}
else
return 0;
i++;
}
if(k!=N-1||*(a+i-1)==',') return 0;
return 1;}
/**************************排列***********************************/
void pai(char *a)
{int i=0,j=0,b[N-1],k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13;
while(*(a+i)!='\0')
{if(*(a+i)==',')
{b[j]=i;
j++;}
i++;}
j=0;
for(k1=0;k1<b[0];k1++)
for(k2=b[0]+1;k2<b[1];k2++)
for(k3=b[1]+1;k3<b[2];k3++)
for(k4=b[2]+1;k4<b[3];k4++)
for(k5=b[3]+1;k5<b[4];k5++)
for(k6=b[4]+1;k6<b[5];k6++)
for(k7=b[5]+1;k7<b[6];k7++)
for(k8=b[6]+1;k8<b[7];k8++)
for(k9=b[7]+1;k9<b[8];k9++)
for(k10=b[8]+1;k10<b[9];k10++)
for(k11=b[9]+1;k11<b[10];k11++)
for(k12=b[10]+1;k12<b[11];k12++)
for(k13=b[11]+1;k13<i;k13++)
{j++;
printf("\n%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c,%c",
a[k1],a[k2],a[k3],a[k4],a[k5],a[k6],a[k7],a[k8],a[k9],a[k10],a[k11],a[k12],a[k13]);}
printf("\nTotal=%d",j);
}
/**********************************************************************/
main()
{char *a;
printf("input %d num,输入时用逗号隔开:\n",N);
gets(a);
while(check(a)==0)
{puts("error! input again:");
gets(a);}
puts("OK!");
pai(a);
getch();
}