c博客做业02--循环结构

#0.展现PTA总分 编程

#本章学习总结 ##1.1学习内容总结 ###1.1.1while语句函数

while(表达式1)
         {
              循环体语句;
          }
do
{
循环体语句;
}while(表达式一);

do while语句和while主要的区别在于do while对于循环体中的语句先执行一次再判断条件,而while则是先判断条件再看是否执行循环体中的语句;而while语句和for同为循环语句,对于何时用while语句何时用for语句有一些区别,当不清楚循环次数时用while显然要简单一些,当清楚循环次数则用for; ###1.1.2判断素数的一些技巧方法 咱们来看下面这个例子学习

for(i=2;i<=m/2;i++)
{
     循环语句;
}

or测试

for(i=2;i<=m;i++)
{
     循环语句;
}

这虽然在通常的题中没有什么问题,但我以为从时间角度来讲,上面的句子节省了一半的循环时间,提升了程序的运行效率;因此我以为在之后的编程中,多思考思考,也许能找到更好的方法来解决这些问题; ###1.1.3 break和continue语句 举个例子:大数据

for(i=1;i<=3;i++)
{
     printf("*");
     continue;
}

and调试

for(i=1;i<=3;i++)
{
      printf("*");
      break;
}

第一种输出的结果为‘’**‘’,而第二种输出的结果为‘’‘’,虽然都是跳出循环,但continue只是跳出此次循环,执行下次循环;而break则是跳出循环语句,再也不执行它;固然break也能够用于switch语句; ###1.1.4 嵌套循环 嵌套循环无非就是for中for,for中while,while中for;我以为语法只要单独的掌握了for和while循环,嵌套循环就不是问题,我以为重要的仍是实际例子中的运用;好比初始化变量应该放在for中的哪一个地方,以及什么时候恰当的运用break和continue,使语句恰当的执行; ###1.1.5 经过超星学习通学习的知识 须要清空多余字符时用fflush(stdin); 清屏system(“cls”); 巩固了随机数rand(),它存在于#include<stdlib.h>; 随机种子srand(time(NULL));随机种子存在于#include<time.h>;code

##本章学习体会 ###1 在本章学习中,我以为已经掌握了基本语法,差的只是实际中的运用,多作点题目,我以为能够掌握,惟一让人就是这星期太多做业了,不是在预习的路上就是在预习,但也让人很充实,没有一点的偷懒; ###2 上周总共代码量为300行 这周的代码量为400行,距离预约的差太多了,这周得再接再砺了;blog

#2.PTA实验做业 ##2.1 题目名1 水仙花数是指一个N位正整数(N≥3),它的每一个位上的数字的N次幂之和等于它自己。 ###2.1.1伪代码 数据处理:循环变量 int i,j;计算总和的int sum;取余后最后一位数:int num;去掉最后一位数的变量:int item;it

定义变量
初始化变量sum;
输入变量N;

for(i=最小的N位数;i<=最大的N位数;i++)
{
        初始化item=i,sum=0;
         for(j=1;j<=N位数;j++)
         {
                 取出最后一位数为num;
                 去掉最后一位数为item;
                 计算N位数的各个数字的立方和;
          }
          if(判断是否为水鲜花数)
          {
              输出
          }

}

###2.1.2代码截图 for循环

###2.1.3造测试数据 输入数据|输出数据|说明 ----------:|------|----: 3|153\n370\n371\n407|最小数据,题目数据 7| 1741725\n9800817\n9926315 |最大数据 ###2 .4PTA提交列表

###2.1.5说明 1.编译错误:未定义变量item 2.答案错误:sum没有在内部初始化,致使下一次循环有原来的值;经过调试,在内部初始化了sum=0; 3.答案错误:没有使item=i,致使每一次item都为原来的值,循环出不来;在一个for内使item=i; 4.部分正确:在改正了前两个后,还有一个在屡次调用pow函数形成的运行超时问题;我直接造了一个po函数,让主函数直接调用它,虽然在vs上看不出有多少差异,但在pta上却经过了,事实证实本身写的函数应该比调用系统函数库里的要快一点;

##2.2 题目名2 已知函数ex能够展开为幂级数1+x+x​2​/2!+x3/3!+⋯+x​k /k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e​x的近似值,求和一直继续到最后一项的绝对值小于0.00001。 ###2.1.1伪代码 数据处理:输入实数double x和double sum;循环变量int i;阶乘double temp;

定义变量;
输入x;

for判断条件
{
     阶乘temp;
     求和sum;
}
输出sum;

###2.1.2代码截图

###2.1.3造数据测试 输入数据|输出数据|说明 ----------:|------|----: 1.2|3.3201|题目数据 0|1.0000|最小数据 5|148.1432|最大数据 ###2.1.4PTA提交列表

###2.1.5说明 1.运行超时:起先运行错误,我用vs结果显示5的时候,答案是负数,我就加了一个fabs,结果超时,就觉得是调用的问题,解决:没法找出缘由,就换了一个方法写; 2.答案错误:换了方法后显示答案错误,这种题用vs查错我也不会,设断点也不行,用printf输出也不行;解决:叫同窗帮忙看后,才知道阶乘的定义错了,将int改成double就行了,之前知道但不觉得然,此次让我浪费了这么多时间才让我长了教训

##2.3题目名 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边能够随地进行休息。乌龟每分钟能够前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,以为确定能跑赢乌龟,因而,每跑10分钟回头看一下乌龟,若发现本身超过乌龟,就在路边休息,每次休息30分钟,不然继续跑10分钟;而乌龟很是努力,一直跑,不休息。假定乌龟与兔子在同一块儿点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快? ###2.3.1伪代码 数据处理:定义了循环变量int i;乌龟兔子的路程int rabbit;int tortoise;总时间int time;

定义变量;’
初始化路程;
输入时间;

for循环条件
{
     乌龟兔子的路程;
     if判断是否到了十分钟
          if判断谁跑的远
             if判断是否加了三十分钟超过了总时间time;
      输出结果;
}

###2.3.2代码截图

###2.3.3造数据测试 输入数据|输出数据|说明 ----------:|------|----: 242|@@ 726|最后未满30分钟的 9|^^ 81|未满10分钟的 40|@_@ 120|恰好满30分的 ###2.3.4PTA提交列表

###2.3.5说明 1.答案错误:未将兔子在跑中获胜的算进去。解决:放个if语句进去,判断满30和没满30的状况,分别输出 2.部分正确:输出平局是未将路程写进去,解决:将兔子或乌龟的路程放进去便可

#代码互评 ##第一题

or

1.代码的复杂度不一样,一个打印空心菱形用的的一段直接打印,一个用的两段打印上下 2.定义的变量一个多一个少,一个有用到字符变量 ##第二题

or

1.一个输入菜单时用了函数,一个直接打印 2.一个将==0的状况放在了switch语句里,一个单独用了一种状况

相关文章
相关标签/搜索