第一次博客作业

一. 制作思维导图

 

二. 写出自己对以下语法的认识

NO.1 if-else

if(表达式)
{
        语句1;
}
else
{
        语句2;
}

 

1.用法:若表达式的值为真,则执行语句1;若表达式的值为假,则执行语句2;

2.注意点:(1)注意关系运算符“==”和赋值运算符“=”之间的区别。

                (2)表达式的值可以有非0和0,如if(fact(n))

                (3)如果使用多分支结构,最好 else if。即:if 前面要加else。

                (4)建议有用到 if  和 else 就 用 大括号 {}。

NO.2 switch

switch(表达式){
        case  常量表达式 1: 语句段1;break;
        case  常量表达式 2: 语句段2;break;
        ······
        case  常量表达式 n : 语句段 n;break;
        default:          语句段 n+1;break;
}

 1.用法:如果表达式的值与某个常量表达式的值相等,则执行表达式后的语句;如果表达式的值与所有常量表达式的值都不相等,则执行default语句;

2. 注意点:1.常量表达式和表达式可以带入计算(因为其为表达式)

                  2.可以根据特殊情况选择是否在每个case后面加上break;

                  3.表达式的值一般是整型或字符型,所有常量表达式的值都不能相等;

                  4.每个语句段可以包括一条或多条语句,也可以为空语句;

 

NO.3 for

for(表达式 1;表达式 2;表达式 3)
{      
      循环体语句;
}

步骤:先计算表达式 1;再判断表达式 2, 若值为真,则执行循环体语句,并接着计算表达式3。然后继续执行判断,若值为真,则执行循环体语句,直到表达式2

           值为假。

注意点:(1)若(i=1;i<=n;i++)类似只用i来作计数,则循环次数等于  max(i)-初始值(i)

               (2)未完待续……

NO.4 while

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

 1.用法:当表达式的值为真,循环执行;直到表达式的值为假则结束循环,进入while的下一语句。

 2.注意点:(1)循环体语句需有可改变表达式值的语句,否则进入死循环;

                   (2) 可用于执行循环次数不确定的循环

                  (3)未完待续……

NO.5 do-while

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

 1.用法:先执行循环体,后判断循环条件。若表达式值为真,则执行继续循环体语句,否则退出循环。

 2.注意点:(1)无论如何都执行一次循环;

                  (2)可用于循环次数不确定的循环(区别于while循环)

                  (3)未完待续……

 

NO.6 break以及continue

for(表达式1; 表达式2; 表达式3)
{
if(表达式)
break;
语句2;
}
for(表达式4; 表达式5; 表达式6)
{
if(表达式)
continue;
语句4;
}

 1.用法:(1)break:用于循环和switch语句,一般与if连用;

                        continue:只能用于循环,一般也与if连用;

                (2)break:一旦执行break语句,循环提前结束,不再执行循环体中位于其后的其他语句。

                         continue:跳过循环体中continue后的语句,继续下一次循环。

2.注意点:(1)暂无。

三. pta分数截图

2.3 2.4作业

 

第三章作业

4.1作业

四. pta代码分析

2.3 2.4作业

#include<stdio.h>
#include<math.h>
int main()
{
  int n,i,j;
  double fact=1;
  int sum=0;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
      for(j=1;j<=i;j++)
      {
        fact *=j;
    }
    sum+=fact;
    fact=1;
  }
  printf("%d",sum);
}

思路:首先分析题目,求每个数字阶乘之和,所以可以分成两部分:(1)求每个数字的阶乘(2)将这些数字求和。 然后用嵌套循环(1)最大for用来轮流数字,第二个for用来计算阶乘fact,在第二个for结束后,用sum=sum+fact求和。
学到的地方:暂无

第三章作业

#include<stdio.h>
#include<math.h>
int main()
{
    int n, s=1, s1, i,a,i1;
    double sum=0;
    scanf("%d", &n);
    for (i = 1;i < n ;i++)
    {
        s = s * 10;
    }
    s1 = s * 10;
    for (i = s;i <= s1;i++)
    {
        i1 = i;
        while (i1>0)
        {
            a = i1 % 10;
            int b = a;
            //sum = sum + pow(a, n);
            for (int j = 1;j < n;j++)
            {
                a = a * b;
            }
            sum = sum + a;
            i1 = i1 / 10;
        }
        if (i == sum)
        {
            printf("%.0f\n", sum);
        }
        sum = 0;
    }
    return 0;
}

思路:首先分析题目,n位正整数 水仙花x是每位数字的N次幂的和;(1)想办法找出每位数字:a=x%10 得到每位数字(2)n次幂:用a*a*a提高效率(3)和:使用循环结构,定义sum=0,将(1)中的每位数字用(2)得出幂,然后sum=sum+每位数字的n次和。(4)判断:if x==sum,则为水仙花数。
学到的地方:(1)可以用for循环,来计算n次方,比pow函数节约时间。(2)如果用(1)的办法,应再定义b=a,循环体结构 a=a*b;否则例如:计算2^3
a=2*2=4 a=4*4=16。如果b=a,则a=2*2=4;a=4*2=8。(3)循环次数应为n-1;

 第四章作业

思路:首先分析题目,统计素数并求和,所以(1)写一个判断是否是素数的函数,是返回1,不是返回0(2)在if(表达式)表达式就是(1)中的函数,并且 if每执行一次,count++,在用sum=sum+i(i是函数的实际参数)
学到的地方:暂无

posted @ 2019-10-16 20:20  天青色等烟雨(  阅读(161)  评论(0编辑  收藏  举报