今天被一個澳大利亞的朋友問到一個編程題,將下列題目的情況列舉出來並製成Excel表格。
a有6種情況,b有6種情況,c有6種情況,因此一共有6×6×6 = 216種情況。
#include <stdio.h>
#include <cstdio>
int funa(int num);
int funb(int num);
int func(int num);
int main(int argc,char **argv)
{
FILE *fp = NULL;
fp = fopen("E:\\zuhe.xls","w");
int a[6] = {1,2,3,4,5,6};
int b[6] = {1,2,3,4,5,6};
int c[6] = {1,2,3,4,5,6};
int i,j,k,ret,
count = 0;
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
for(k=0;k<6;k++)
{
ret = funa(a[i])*funb(b[j])*func(c[k]);
count++;
printf("%d ",ret);
fprintf(fp,"%d\n",ret);
}
}
}
printf("\n");
printf("一共有%d種情況\n",count);
fclose(fp);
}
導出的Excel表格zuhe.xls是放在E:\下的,而C語言中“\\”代表'\'。
int funa(int num)
{
int temp = 6;
int sum1 = 1;
int sum2 = 1;
while(temp >= (6-num+1))
{
sum1 = sum1 * temp;
temp--;
}
while(num)
{
sum2 = sum2 * num;
num--;
}
int suma = sum1/sum2;
return suma;
}
int funb(int num)
{
int temp = 6;
int sum1 = 1;
int sum2 = 1;
while(temp >= (6-num+1))
{
sum1 = sum1 * temp;
temp--;
}
while(num)
{
sum2 = sum2 * num;
num--;
}
int sumb = sum1/sum2;
return sumb;
}
int func(int num)
{
int temp = 6;
int sum1 = 1;
int sum2 = 1;
while(temp >= (6-num+1))
{
sum1 = sum1 * temp;
temp--;
}
while(num)
{
sum2 = sum2 * num;
num--;
}
int sumc = sum1/sum2;
return sumc;
}
以下是編譯結果:
生成的Excel表格zuhe.xls