第一次作业1.2

                                                                        一,思维导图:

                                                                        二,语法认知:

1.if-else:

 if(条件)

     {语句1}

 else

     {语句2}

 

遇到的问题:初次使用时不清楚if与else的配对关系,再出现多个if-else的复合语句中易犯错误。

解决的办法:在多次练习中找出规律即(else与最近的if配对)。

补充:要时刻分清==与=的区别。

2,switch:

switch(表达式)
{
case 值1: //若符合执行代码; break; case 值2: //若符合执行代码; break; case 值3: //若符合执行代码; break; default: //若以上都不符合执行此代码; break; }

 

遇到的问题:没有理解“case”与“default”在语句中的实际作用。

解决的办法:加强记忆与练习。

3,for:

for(赋值;循环条件;改变循环变量的表达式)
{
      循环式;
}//若带入值不再符合条件则跳出循环。

遇到的问题:没有注意部分细节如“;”。

解决的办法:多次练习。

4,while:

while(表达式)
{
    循环条件
}

遇到的问题:偶尔会与for弄混(使用方式)

解决的办法:加强记忆与练习。

补充:要注意for与while的小区别。

5,do-while:

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

遇到的问题:开始时do-while的运作方式不太了解。

解决的办法:打开书本,查看do-while方面的基础知识。

6,break以及continue:

for (表达式1;表达式2;表达式3)
{  
if(表达式){
   break;
          }//跳出循环。
}
for (表达式1;表达式2;表达式3)
{  
if(表达式)
          {
 continue;
          }//直接进行下一个循环。
}

遇到的问题:目前所做的题目量较少,使用不熟练。

解决的办法:没什么好说的,打开pta刷刷刷!:)

                                                                 三,pta分数:

补充:4.1作业有三题未在规定时间内完成,(自我检讨)后在模拟题集中完成。截图如下:

 

                                                                       四,pta代码分析:

1,

 (1)思路:素数是一个除1,自己本身以外无法被整除的整数。因此我们从素数的定义出发编写代码:(思路注释中)

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,n,i,q=0,w=0,e=0;
    scanf("%d %d",&a,&b);
    for(i=a;i<=b;i++)//第一个循环用来列举待判断的数据。
    {
        for(n=1;n<=i;n++)//第二个循环的作用是列举数字观察能否整除第一个循环中的i
        {
            if(i%n!=0)//如果一个数i未被第二个循环中的数整除则e=e+1;
           e++;
        }
        if(e==i-2)//根据上述循环内地表达式我们发现如果一个数i-2等于这个数所对应的e,那么这个数i就为素数。
        {
            q=q+1;
            w=w+i;
        }
        e=0;//不要忘记在循环结尾将e归零进行下一次判断。
    }
    printf("%d %d",q,w);
    return 0;
}

 

 (2)易错点:第一次做的时候没有理解素数的定义,没有想到用循环的思路去解题。另外这题的另一个易错点在一对判断素数方法的选择,这里我使用的是定义变量e来计算。(当然是借助了部分外界力量)

(3)获得经验:这题可以看出数学的知识在编程中的重要性,所以时不时复习一下数学知识很重要。:)

2,

 

(1)思路:这题又和数学挂钩,求最大公约数最小公倍数,同样是用循环来列举和判断,但是又复杂了许多,我们还是从定义出发:(思路注释中)

#include<stdio.h>
int main()
{    
int m, n;    
int a, b, ret;        
scanf("%d %d", &m, &n);
    if (m > 0 && n >0)//正整数m,n。
        {        
        a = m;    
            b = n;    
        ret = a % b;//ret为a与b相除的余数    
        while (ret != 0)    //如果ret不等于0说明a与b无法整除。
    {        
        a = b;        
        b = ret;            
        ret = a % b;    //于是在循环语句中将b值赋予a将ret赋予b,重新求ret,直到a与b整除。那么b就为原mn的最大公约数,m*n/b就为mn的最小公倍数。
            }    
            printf("%d", b);        
            printf(" %d", m * n / b);
            } 
            return 0;
}

(2)易错点:求最大公约数和最小公倍数的过程容易晕😵,所以明白一个简明有效的判断方法很重要。

(3)获得经验:数学很重要逻辑思维很重要......(心里默念一百遍)

3,

 

(1)思路:......这题重点在于sum+=pow(2,i)这里,具体思路很简单。(思路注释中)

#include<math.h>
int main()
{
    int n,sum=0,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)//循环用来列举数字进行加法计算。
    {
        sum+=pow(2,i);//这里注意不要用sum=sum+pow(2,i)因为这个近似于sum++而sum+=pow(2,i)近似于++sum。
} printf(
"result = %d",sum); return 0; }

(2)易错点:区分a++与++a的区别,不然常年计算错误都不知道错在哪....

(3)获得经验:编程中细微的数字字符顺序变化也会引起计算结果的变化,要时时刻刻保持严谨性。

                                                                                             THE END

posted @ 2019-10-13 20:37  MIKELOVE  阅读(142)  评论(0编辑  收藏  举报