加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

c 实验(五)  循环结构程序设计

(2010-12-01 08:18:46)
标签:

杂谈

分类: 大学实验报告

一、实验目的和要求

      1.熟悉掌握用while语句、do-while语句和for语句实现循环的语句。

2.掌握在程序设计中用循环的方法实现一些常用的算法。

3.进一步学习调用程序。                                                                                       

二、实验内容和原理

   1.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的数。

在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

     2.用牛顿迭代法求方程 2x3-4x2+3x-6=0在1.5附近的根。

        在得到正确结果后,请修改程序是所设的值由1.5 改为100、1000、10000,在运行,观察结果,分析不同的X初值对结果有没有影响,为什么?

修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初

值对迭代的次数有无影响。

     3.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾

又多吃了一个。第二天早上有将剩下的挑子吃掉一半,又多吃了一个。

后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃是,

只剩下一个挑子了。求第一天共摘了多少桃子。

        在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后

再吃俩个。请修改程序并运行,检查结果是否正确。

三、实验环境

1.        硬件环境:每生一台品牌机

2.        软件环境:Turbo C 3.0

四、算法描述及实验步骤

1.            算法描述(可以用流程图、伪代码或源程序描述)

         (实验一):

           #include <stdio.h>

           void  main( )

       {char c;

     int letters=0,space=0,digit=0,other=0;

     printf("请输入一行字符:");

     while((c=getchar( ))!=’\n’)

     {

     if (c>=’a’&&c<=’z’|| c>=’A’&&c<=’Z’)

     letters++;

     else if (c= =’ ’)

     space++;

     else if(c>=’0’&&c<=’9’)

     digit++;

     else

     other++;

     }

     printf(“%d,%d,%d,%d”,letters,space,digit,other);

           }

       修改后的程序:

           #include <stdio.h>

           void  main( )

       {char c;

     int letters=0,LETTERS=0,space=0,digit=0,other=0;

     printf("请输入一行字符:");

     while((c=getchar( ))!=’\n’)

     {

     if (c>=’a’&&c<=’z’)

     letters++;

     else if (c>=’A’&&c<=’Z’)

     LETTERS++;

     else if (c= =’ ’)

     space++;

     else if(c>=’0’&&c<=’9’)

     digit++;

     else

     other++;

     }

     printf(“%d,%d,%d,%d,%d”,letters,LETTERS,space,digit,other);

       }

 

         (实验二):

            #include<stdio.h>

         #include<math.h>

         void main()

         {float x1=1.5,x0,f,f1;

            while(fabs(x1-x0)>=le-5)

            {x0=x1;

            f=((2*x0-4)*x0+3)*x0-6;

            f1=(6*x0-8)*x0+3;

            x1=x0-f/f1;

            }

            printf(“ %5.2f\n”,x1);

         }

         修改后的程序:

            #include<stdio.h>

         #include<math.h>

         void main()

         {int i=0,float x1=1.5,x0,f,f1;

            do            

{x0=x1;i=0;

            f=((2*x0-4)*x0+3)*x0-6;

            f1=(6*x0-8)*x0+3;

            x1=x0-f/f1;

            i++;

            printf("%5.2\n",x1);

            }

 while(fabs(x1-x0)>=le-5)

            printf(“ %5.2f\n”,x1);

            printf(“%d”,i);

         }

         (实验三):

            #include<stdio.h>

         void main()

         {int day,m,n;

            while(day>0)

            {m=2*(n+1);

            n=m;

            day--;

      }

          printf(“all=%d”,m);

         }

         修改后的程序为:

            #include<stdio.h>

         void main()

         {int day,m,n;

             while(day>0)

             {m=2*(n+2);

             n=m;

             day--;

       }

           printf(“all=%d”,m);

          }

2.            实验步骤

       输入源代码

       进行编译

       进行测试,使用的测试用例:

(实验一)输入:请输入一行字符:I am 20 years old.                    

          预期输出:11,4,2,1

(实验二)输入:无                  预期输出:2.00

(实验三)输入:无                  预期输出:all=1534

五、编译和调试过程

1.编译过程

记录算法实现中发现的语法错误及改正

程序编写过程中没发现任何语法错误。

   2.调试过程

记录算法实现中发现的逻辑错误及改正,对每个测试用例,记录实际输出,并与预期输出进行比较,如果不同,分析产生错误的原因并改正。

(实验一)输入:请输入一行字符:I am 20 years old.

          预期输出:11,4,2,1

          实际输出:11,4,2,1

          分析:预期输出和实际输出一致,说明程序无错误。

(实验二)输入:无

          预期输出:2.00         

          实际输出:2.00         

          分析:预期输出和实际输出一致,说明程序无错误。                                                                     (实验三)输入:无

          预期输出:all=1534          

          实际输出:all=1534         

          分析:预期输出和实际输出一致,说明程序无错误。

六、实验结果

用与测试用例不同的输入数据运行算法,写出得到的结果,并分析结果是否正确。

     (实验一)输入:请输入一行字符:Your adress is #123BJ road.

 输出结果:15,3,4,3,2

 结果分析:运行结果正确。

      (实验二)输入:无

 输出结果:2.00

结果分析:运行结果正确。

       将x的值由1.5改为100、1000、10000时运行结果还是2.00,所以不同的x

       值对结果无影响,但对迭代的次数有影响。  

      (实验三)输入:无

 输出结果:all=2556

结果分析:运行结果正确。

七、总结          

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有