论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C趣味编程百例(12)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:50


39.年龄几何
40.三色球问题
41.马克思手稿中的数学题
   



39.年龄几何
    张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。
*题目分析与算法设计
    设数列的首项为a,则前4项之和为"4*n+6*a",前4 项之积为"n*(n+a)*(n+a+a)*(n+a+a+a)"。同时"1<=a<=4","1<=n<=6"。可采用穷举法求出此数列。
*程序说明与注释
#include<stdio.h>
void main()
{
    int n,a,i;
    printf("The series with equal difference are:\n");
    for(n=1;n<=6;n++)                 /*公差n取值为1~6*/
        for(a=1;a<=4;a++)             /*首项a取值为1~4*/
            if(4*n+6*a==26&&n*(n+a)*(n+a+a)*(n+a+a+a)==880)  /*判定结果*/
                for(i=0;i<20;i++)
                    printf("%d  ",n+i*a);            /*输出前20项*/
}
*运行结果
    The series with equal difference are:
    2  5  8  11  14  17  20  23  26  29  32  35  38  41  44  47  50  53  56  59


40.三色球问题
   
若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭配?
*题目分析与算法设计
    设任取的红球个数为i,白球个数为j,则黒球个数为8-i-j,根据题意红球和白球个数的取值范围是0~3,在红球和白球个数确定的条件下,黒球个数取值应为8-i-j<=6。
*程序说明与注释
#include<stdio.h>
void main()
{
    int i,j,count=0;
    printf("        RED BALL       WHITE BALL       BLACKBALL\n");
    printf("..................................................\n");
    for(i=0;i<=3;i++)               /*循环控制变量i控制任取红球个数0 ̄3*/
        for(j=0;j<=3;j++)           /*循环控制变量j控制任取白球个数0 ̄3*/
            if((8-i-j)<=6)
                printf(" %2d:         %d          %d          %d\n",++count,i,j,8-i-j);
}
*运行结果


41.马克思手稿中的数学题
  
  马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?
*题目分析与算法设计
    设x,y,z分别代表男人、女人和小孩。按题目的要求,可得到下面的方程:
                   x+y+z=30            (1)
                   3x+2y+z=50          (2)
    用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得:
                   2x+y=20             (3)
由(3)式可知,x变化范围是0~10
*程序说明与注释
#include<stdio.h>
void main()
{
    int x,y,z,count=0;
    printf("            Men           Women            Children\n");
    printf("........................................\n");
    for(x=0;x<=10;x++)
    {
        y=20-2*x;                     /*x定值据(3)式求y*/
        z=30-x-y;                     /*由(1)式求z*/
        if(3*x+2*y+z==50)             /*当前得到的一组解是否满足式(2)*/
            printf(" %2d:         %d         %d         %d\n",++count,x,y,z);
    }
}
*运行结果

上一篇:{实例}C趣味编程百例(11) 人气:6046
下一篇:{实例}C趣味编程百例(13) 人气:4977
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程