第三次作业

 

作业要求 :【https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359

第六次作业: 题目7-1 求1到100的和

1.实验代码:

#include<stdio.h>
int main(){
  int a=1,sum;
  sum = 0;
  for (a = 1; a <= 100; a++)
  sum = a + sum;
  printf("sum = %d\n", sum);
  system("pause");
  return 0;
}

 

2.解题思路:

(1)

第一步:首先定义两个整形变量a和sum(1到100和),并为a和sum设置初始值,使a为1,sum为0;

第二步:接着运用一个for循环,使a从1一直加到100,由sum=sum+a,使得sum为1到100的和;

第三步:当a增加到101时,退出循环,输出此时sum的值。

(2)流程图:

 

 3.本题调试过程碰到问题及解决办法:

 运行结果截图:

 

调试截图

 

 

遇到的问题及解决方法:

 

在做题的过程中,我尝试了把for循环中三个判断条件的第一个条件不写,在定义时就赋值a为1,第一个条件也没写分号,编译时发现不可以通过,通过同学们的帮助,我知道只要定义时为a设了初始值,第一个条件可以不用特意写出来,但是分号一定要写。

 

个人总结: 

通过本周的学习,我了解了for循环语句的条件判断和循环体的结构,也知道了循环条件的执行顺序,可以运用for循环解决一些简单的问题,照我看来,如何在循环的基础上,在循环体中列出需要的方程式是一个小难点,通过听老师的讲解,我解决了这个问题。

第八次作业 :题目7-2 寻找250

1.实验代码 

 

#include<stdio.h>
int main(){
  int a,t=0;
    while(a=1)
    {
        scanf("%d",&a);
        t++;
        if(a==250)
        {
        printf("%d\n",t);
        break;
        }
    }
    return 0;
}

2.解题思路:

(1)

第一步:先定义两个整形变量a(输入的数)和t(第几个数),并设t(第几个数)初始值为0;

第二步:再进入while循环语句,并输入a的值,接着t的值加1;

第三步:然后判断a是否等于250,如果a等于250,则输出此时t的值,并退出循环;如果a不等于250,则t继续加1,判断下一个输入的值是否为250,直到a等于250为止;

第四步:当a等于250时,退出循环,输出是第几个数。

(2)流程图:

 

3.本题调试过程碰到问题及解决办法:

 运行结果截图:

调试截图:

 

遇到的问题及解决方法:

 在答题过程中,我把t++放到了if语句里面了,伴随着输入的数字不同,t的值也一直在变,经过调试发现,当输入的值不是250,t的值就不再变化,于是我把t++放在if语句的前面,最后解决了这个问题。

 个人总结: 

在 本周的学习过程中,我学习了while和do-while循环语句,通过while循环语句,我们可以省略一些循环条件的判断,使我们的代码更加的简洁明了,节省了代码量,也增加可读性,同时while语句和if语句的结合应用,使我们可以解决一些复杂的问题;

在我看来,while语句和if语句的结合应用是本周学习的一个难点,两个语句的结合使代码更加的复杂,但也1可以解决更多的问题,通过中国大学慕课网的学习和请教同学,最后解决了这个问题。

 第十次作业:题目7-4 最大公约数和最小公倍数

 1.实验代码:

 

#include<stdio.h>
int main(){
 int m,i,n,w=0,j;
 scanf("%d %d",&m,&n);
 if(m>n) {     
  w=m;
  m=n;
  n=w;
 }
 for(i=m;i>=1;i--){ 
  if(m%i==0&&n%i==0)
  {
   break; } }
 for(j=n;j<=m*n;j++){    
  if(j%m==0&&j%n==0){
   break; } }
    printf("%d %d\n",i,j);
 return 0;
}

 

 

 

 

 

2.解题思路:

(1)

第一步:先定义四个整形变量m,n,i和w,并设w初始值为0;

第二步:输入两个数,分别为m和n;

第三步:接着进行判断m是否大于n,如果m大于n,则通过w,使得m和n的互换,让n大于m,否则就跳过这个if语句;

第四步: 再然后进入第一个for循环,i从较小的m值开始减小,直到i为1为止,当同时满足m和n除以这个i的余数都为0时,则最大公约数为这个i,再弹出这个循环;

第五步:接着进入下一个for循环,i从较大的n开始增加,直到m乘以n为止,当同时满足i除以m和n的余数都为0时,则最小公倍数为此时的i,再弹出这个循环;

第六步:最后输出出需要的最大公约数和最小公倍数。

(2)流程图:

 

 

3.本题调试过程碰到问题及解决办法:

 运行结果截图:

 

 

调试截图:

遇到的问题及解决方法:

在做题的过程中,我不知道如何使得输入的两个数字其中一个恒大于另一个数字,无法确定数字之间的大小,求的最大公倍数和最小公约数也就不准,不过,通过复习之前做过的pta作业时,我发现了一道比较大小的题,运用其中的算法,使得两个数字的大小互换,这样就保证了其中的一个数恒大于另一个数,最后解决了这个问题。 

 个人总结:

通过本周的学习,我复习之前学习的所以循环语句,对于循环语句的理解更加的深入,无论是for循环,还是while和do-while循环语句,都可以进行简单的应用;在我看来,能在循环体找到相应的关系式,并合理的运用if语句进行判断,这是一个难点,通过进行一些题目的练习和对过去题目的复习,最后能够解决这些问题。

 学习进度:

 

 

 

 

 

 

 互评:

(1)【https://www.cnblogs.com/wudiabc/p/10016701.html

 (2)【https://www.cnblogs.com/wanghaoze/p/10034626.html

 (3)【https://www.cnblogs.com/104gyy/p/10022689.html

 

posted @ 2018-11-28 23:12  吴桥志  阅读(162)  评论(6编辑  收藏  举报