计算机程序设计员程序设计实例.docx

上传人:b****7 文档编号:15827454 上传时间:2023-07-08 格式:DOCX 页数:11 大小:268.09KB
下载 相关 举报
计算机程序设计员程序设计实例.docx_第1页
第1页 / 共11页
计算机程序设计员程序设计实例.docx_第2页
第2页 / 共11页
计算机程序设计员程序设计实例.docx_第3页
第3页 / 共11页
计算机程序设计员程序设计实例.docx_第4页
第4页 / 共11页
计算机程序设计员程序设计实例.docx_第5页
第5页 / 共11页
计算机程序设计员程序设计实例.docx_第6页
第6页 / 共11页
计算机程序设计员程序设计实例.docx_第7页
第7页 / 共11页
计算机程序设计员程序设计实例.docx_第8页
第8页 / 共11页
计算机程序设计员程序设计实例.docx_第9页
第9页 / 共11页
计算机程序设计员程序设计实例.docx_第10页
第10页 / 共11页
计算机程序设计员程序设计实例.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机程序设计员程序设计实例.docx

《计算机程序设计员程序设计实例.docx》由会员分享,可在线阅读,更多相关《计算机程序设计员程序设计实例.docx(11页珍藏版)》请在冰点文库上搜索。

计算机程序设计员程序设计实例.docx

计算机程序设计员程序设计实例

程序设计实例

    本章介绍了循环程序设计方法,讲述了两种循环程序,三种循环语句。

包括前两章讲述的顺序程序结构、分支程序结构在内,这些控制结构内的语句部分都允许任意形式的语句。

这些控制结构之间可以互相嵌套,而且这种嵌套没有层次限制。

比如,语句内可以包含循环语句,循环语句内又可以继续包含语句,等等。

又比如,一个循环语句内可以含有循环语句,内层循环语句内还可以再包含循环语句,形成所谓的多重循环,等等。

    【例4.12】编程序,输出如下序列的前50项。

该序列的第一项为0;第二项为1;以后的奇数项为其前两项之和;偶数项为其前两项之差。

    解1:

该问题应该一项一项的生成,生成一项输出一项。

在生成一项时要考虑该项是偶数项还是奇数项;生成并输出一项后,为生成下一项做准备,应该把后边的项向前串。

得如下图4.30的图。

程序如下。

    

    ""

    (){

      ;

      0;

      1;

      ("%5d\5d\n");

      3;

      {

        (20)

          ;

        

          ;

        ("%12d\n");

        ;

        ;

        1;

      }(k<=50);

    }

    解2:

该问题生成一项时,可以不用分支判断,而采用标志单元的方法,这种方法在程序设计中是经常使用的。

用这种方法图如图4.31。

程序如下。

    

    ""

    (){

      ;

      ;

      0;

      1;

      ("%5d\5d\n");

      3;

      =-1;

      }

        w=v+*u;

        =;

        ("%5d\n");

      ;

      ;

      1;

      }(k<=50);

    }

    【例4.13】编程序,输入两个正整数u、v,采用欧几里德辗转相除算法求它们的最大公因数并输出。

    解:

欧几里德辗转相除算法求u、v最大公因数的计算过程是:

        u%v→R1

        v%R1→R2

        R1%R2→R3

        R2%R3→R4

        …………

        …………

        1%→1=0

到此余数1为"0",计算过程结束。

为正整数u、v的最大公因数。

此计算过程用描述成图4.32。

编出程序如下。

    

    ""

    (){

      ;

      ("u、v:

");

      ("");

      ;

      (0){

        r=;

        u=v;

        v=r;

      }

      ("()=%5d\n"u);

    }

    【例4.14】编程序,输入正整数N,计算r12!

并输出。

其中,1r2。

    解:

该程序是一个计算若干数据项之和的程序。

本章已经编写过多个求和的程序,现在总结一下求和程序模式。

所有计算和的程序都使用一个和单元,有类似图4.33的模式。

这里用后判断条件的循环,当然也可以采用先判断条件的循环。

其中:

    S是和单元;

    开始进入循环之前和单元S必须清"0";

    在循环体内,每循环一次给和单元加上一项;

    最后循环结束,和单元中的值即为所求之和。

具体落实到本题,求和算法如图4.34的所示。

    

    下边求精图4.32中的计算r!

阶乘是一个连乘积。

        r!

=1*2*3*…*r

    所有计算连乘积的程序都使用一个积单元,有类似图4.35的程序模式。

这里用后判断条件的

循环,当然也可以采用先判断条件的循环。

其中:

    P是积单元;

    开始进入循环之前积单元P必须置"1";

    在循环体内,每循环一次向积单元乘入一项;

    最后循环结束,积单元中的值即为所求之积。

具体落实到本问题计算r!

,得如图4.36的。

    

综合图4.34和图4.36得图4.37的最终算法。

程序如下:

    

    ""

    (){

      ;

      ("N:

");

      ("");

      0;

      (0){

        r=10;

        N=10;

        1;

        1;

          (u<){

          *u;

          1;

        }

        ;

      }

      ("r12!

=%5d\n"S);

    }

    【例4.15】我国古代有一道著名难题"百钱百鸡"问题:

"鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。

百钱买百鸡,问鸡翁、母、雏各几何。

"编程序,解该题。

    解:

这是一个著名的问题,也是一类典型的问题。

设买x只公鸡,买y只母鸡,买z只鸡雏,根据条件可以列出方程如下:

    5x+3y+3=100/*百钱*/

    x+y+z=100/*百鸡*/

只能列出这两个方程,原题目变成求该方程组的整数解问题。

三个未知数,两个方程,这是一个不定方程组。

解该类问

题的思路是枚举x、y、z的所有可能,选出满足条件的哪些x、y、z组合。

按这种思想,得到如图4.38。

程序如下:

    

    ""

    x,y,z;

    (){

    (x=1;x<=20;)

    (y=1;y<=33;)

    (z=3;z<=99;3)

    (1005*3*3100)

    ("=%5d%5d%5d\n",x,y);

    }

这是一个三重循环程序。

可以省掉最内层第三重循环,用直接计算z。

程序如下:

    ""

    x,y,z;

    (){

      (x=1;x<=20;)

      (y=1;y<=33;){

        z=100;求鸡雏数z,百鸡

        (5*3*310030)百钱

        ("=%5d%5d%5d\n",x,y);

      }

    }

    【例4.16】编程序,用循环语句控制打印图4.39的字符图形。

    

    解:

在本题目以下的分析中,以白方块"□"表示空格字符。

    分析该图形一共11行,上下相对于第6行对称。

应该先打印上半部分第一到第六行,它们的规律是一样的;再打印下半部分第七到第十一行,它们的规律也是一样的。

得图4.40的。

    打印前六行,应该一行行的打印,用一个循环控制,得图4.41的。

    打印第x行,每行都分三段,应该一段段的打印,得图4.42的。

    

    打印第x行前段。

首先打印字母从x到'I',然后再打印字母从'A'到1。

每个字母的形式是:

一个空格,加字母本身。

得图4.43的。

    打印第x行中段。

分析这段特性,应该首先打印(5-('A'))*2个空格;再打印2*('A')+1组"□x";再打印(5-('A'))*2个空格。

得图4.44的。

在图4.44的中,每个框都是一个循环,不再求精。

    打印第x行后段。

首先打印字母从1到'I',然后再打印字母从'A'到x,最后换行。

每个字母的形式是:

一个空格,加字母本身。

得图4.45的。

    

    

    至此,找到了打印前六行的算法。

下边求精打印后五行。

    打印后五行,也应该一行行的打印,用一个循环控制,得图4.46的。

    打印后五行的第x行与打印前六行的第x行的算法是一样的,可以完全使用上述算法。

    

    至此,找到了打印图4.39字符图形的全部算法,综合上述图4.40到4.46得图4.47。

编出程序如下。

    

    ""

    x,y;

    i;

    (){

    ('A'<='F'){前六行

    (;y<='I')("□",y);打印第x行前段

    ('A';y

    (1<=(5-('A'))*2);)("□");打印第x行中段

    (1<=2*('A')+1)("□",x);

    (1<=(5-('A'))*2);)("□");

    (1;y<='I')("□",y);打印第x行后段

    ('A';y<)("□",y);

    ("\n");回车换行

    }

    ('E'>='A'){后五行

    (;y<='I')("□",y);打印第x行前段

    ('A';y<1)("□",y);

    (1<=(5-('A'))*2);)("□");打印第x行中段

    (1<=2*('A')+1)("□",x);

    (1<=(5-('A'))*2);)("□");

    (1;y<='I')("□",y);打印第x行后段

    ('A';y<)("□",y);

    ("\n");回车换行

    }

    }

    在本例中,使用字符类型变量做循环控制变量,并且在字符类型数据上进行了若干算术运算,这是允许的。

前边第二章已经介绍过,在C中把字符类型作为整数类型看待,其整数值就是与字符相对应的代码值(码值)。

可施与整数类型上的一切运算都可在字符类型上进行。

事实上,在C中字符类型就是整数类型。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2