下班回家,在地铁站看到了一个有趣的数学竞赛题,第一反应是要写个程序帮我完成它。
回家路上用手机写了代码,第二天上班运行了一下。语法错误不少,没有环境校正果然不行。
第一次代码尝试
#include<stdio.h>
int main()
{
int a,b,c,d;
int count;
for(a=1;a<23;a++)
for(b=1;b<14;b++)
for(c=1;c<10;c++)
for(d=1;d<6;d++)
if(3*a+5*b+7*c+11*d<=70)
{
printf("3元%d本,5元%d本,7元%d本,11元%d本\n",a,b,c,d);
count++;
}
printf("共有%d种搭配方法\n",count);
return 0;
}
输出结果
?仔细一看,审题不够细,题干要求把70元花光。调整代码后
#include<stdio.h>
int main()
{
int a,b,c,d;
int count;
for(a=1;a<23;a++)
for(b=1;b<14;b++)
for(c=1;c<10;c++)
for(d=1;d<6;d++)
if(3*a+5*b+7*c+11*d==70)
{
printf("3元%d本,5元%d本,7元%d本,11元%d本\n",a,b,c,d);
count++;
}
printf("共有%d种搭配方法\n",count);
return 0;
}
输出结果
哈哈哈哈哈,成就感油然而生 ~
回过头仔细再审核一遍,计数器count未被赋值,可能存在脏数据。
又小升级了一下,给程序增加了文本输出功能,并优化了界面设计。
#include<stdio.h>
int main()
{
int a,b,c,d;
int count=0;
FILE *fp;//定义一个fp指针
fp = fopen("王小利买书.txt","w+");
for(a=1;a<23;a++)
for(b=1;b<14;b++)
for(c=1;c<10;c++)
for(d=1;d<6;d++)
if(3*a+5*b+7*c+11*d==70)
{
count++;
printf("第%d种搭配为:3元书买%d本,5元书买%d本,7元书买%d本,11元书买%d本;\n",count,a,b,c,d);
{
fprintf(fp,"第%d种搭配为:3元书买%d本,5元书买%d本,7元书买%d本,11元书买%d本;\n",count,a,b,c,d);
break;
}
}
fprintf(fp,"王小利一共有%d种买法。\n",count);
fclose(fp);
printf("王小利一共有%d种买法。\n",count);
printf("数据写入成功!已生成文本文档。\n");
return 0;
}
程序运行结果
?文本文档的输出
|