第一次博客作业

一、思维导图。

       

 

 

 

 

 

 

二、对以下语法的认识。

       1.  if-else:

               用法格式:

if( 判断条件)
{
      执行的语句 ;
 }
else  //if的条件为0时,需要执行这里
 {
       执行的语句 ;
}

else总是与与其最接近的且没有与其他else配对的if搭配,判断条件语句不需要加分号,而执行的语句需要输入分号。判断语句需要用括号括起来,执行语句块最好用用 { }括起来,才严谨。

 

 

      2.  switch:

              用法格式:

switch ( )//括号内输入表达式
{
case 常量表达式1 : 语句1;breakcase 常量表达式2 : 语句2:break;
.......
case 常量表达式n:   语句n;breakdefault:     语句n+1break

开关语句(switch)首先计算()内表达式的值,然后在对应case的值,并执行对应case的语句,如果无任何一个case的值与之对应,则执行default后面的语句,然后跳出switch语句。若执行完对应的语句后无break,则将按顺序往下执行其他case里的语句,直到读到break才跳出switch。使用switch语句需要注意的是 switch(表达式)表达式的值必须是整形或者是可以转化成整型的数值类型,例 int、char等,但long和string则不能用于switch语句。switch()后面没有分号,没有分号,没有分号!直接连接  { } 。 case常量表达式后用的是 ‘ :’  而是不是  ‘ ;’ 。

 

 

    3.for:

         用法格式:

for(初始化 ;条件表达式 ;增量;)
{
     循环体语句 ;
}

 

for循环步骤,先初始化然后判断条件表达式是否为真,真则执行循环体语句,然后变量执行增量,再判断条件表达式,如果为假则推出for循环,若真则继续执行循环直至条件表达式不成立,结束。for()中条件表达式和增量可以没有,但分号不可少,当没有条件表达式时,需要在循环体语句中增加能跳出循环的语句,否则该for循环变为死循环,就没意思了。

 

 

     4.while:

            用法格式:

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

 

while循环步骤,先进性表达式的判断,结果为真则进入循环体,执行循环体语句,读到break或表达式变为假的时候推出循环体。使用while循环,需要注意的是 while(表达式)后千万不要加  分号(  )千万不要加 ,千万不要加!while里面定义的变量,在while外面 无法使用。

 

 

    5.do-while:

            用法格式:

do
{
    循环体 ;

}while (表达式);

 do-while循环步骤,先进入循环体,执行循环体语句,然后判断表达式真或假,真则再执行循环体语句,直到表达式为假,则推出循环体。do-while和while循环最大区别为,do-while无论如何都会先执行一次循环体,while有可能一次都不执行循环体。

 

 

     6.break和continue:

              用法:均只用于循环语句和开关语句中,break为结束循坏,跳出循环体;而continue则为结束本次循环,进入下一次循环。

 

三、2.3 2.4  、第三章作业和4.1作业pta截图,以及节选题目分析。

 

       2.3 2.4分数截图:

 

 

 

       第三章作业pta分数截图:

 

 

          第四章作业pta分数截图:

 

 

         节选题目分析:

 

  1、题目:

 

 

 

 

答案:

  

 1 #include <stdio.h>
 2 
 3 int main( ) 
 4 {
 5     char op;//定义字符常量用来存放运算符号。
 6     int number1, number2, result;//定义三个整型的变量,前两个用来存放需要进行运算的数字,后面一个用来存放运算结果。
 7     scanf("%d %c %d", &number1, &op, &number2);
 8     switch (op)//判断运算符号
 9     {
10     case '+':            //加法运算
11         result = number1 + number2; 
12         printf("%d", result); 
13         break;
14 
15     case '-':           //减法运算
16         result = number1 - number2;
17         printf("%d", result); 
18         break;
19 
20     case '*':           //乘法运算
21         result = number1 * number2; 
22         printf("%d", result); 
23         break;
24 
25     case '/':          //除法运算
26         if (number2 != 0)        //保证分母不为零,除法运算式成立
27         { 
28             result = number1 / number2; 
29             printf("%d", result); 
30         }
31         break;
32 
33     case '%':          //求余预算
34         if (number2 != 0)         //保证分母不为零,除法运算式成立
35         {
36             result = number1 % number2; 
37             printf("%d", result); 
38         }
39         break;
40 
41     default: printf("ERROR"); break;     //非法字符
42     }
43     return 0;
44 }

 

    

        这题需要注意的是,在使用switch语句时,不要忘了在每个case运行结束后 给个break,没有break ,就不会跳出switch,导致最后结果的错误。在提交这道题的时候,有个测试点 (非法字符 )一直提示答案错误,想了好久怎么判断非法字符,后来才发现,没有善于利用default。完成此题,我学会了switch语句的用法。(思路在代码注释)

 

   2、题目:

 

 答案:

 

 1 #include <stdio.h>
 2 
 3 int level(int levle);
 4 
 5 int main() {
 6     int n, point, levels;             //定义三个整型变量分别储存人数、分数、等级
 7     int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0;        //定义五个变量分别储存A、B、C、D、E等级的总人数
 8     scanf("%d\n", &n);                //输入学生总人数
 9     for (int i = 1; i <= n; i++)      //进入循环,读取n个学生的成绩并进行各等级人数的计算
10     {
11         scanf("%d", &point);
12         levels = level(point);        //调用自主编写的求等级函数
13         switch (levels)              //计算各等级人数
14         {
15         case 'A': num1++; break;
16         case 'B': num2++; break;
17         case 'C': num3++; break;
18         case 'D': num4++; break;
19         case 'E': num5++; break;
20         }
21     }
22     printf("%d %d %d %d %d", num1, num2, num3, num4, num5);         //按要求格式输出各等级的人数
23 }
24 int level(int point)           //自主编写等级函数
25 {
26     char level;               //定义字符变量,意在将分数转为等级
27     if (point >= 90)
28     {
29         level = 'A';
30     }
31     else if (point >= 80 && point < 90)
32     {
33         level = 'B';
34     }
35     else if (point >= 70 && point < 80)
36     {
37         level = 'C';
38     }
39     else if (point >= 60 && point < 70)
40     {
41         level = 'D';
42     }
43     else
44     {
45         level = 'E';
46     }
47     return level;           //返回对应等级
48 }

         在做此题时,首先先完成成绩由百分数转换为五分制的子函数编写,然后再将scanf写进main函数的循环里,为读取完所有学生的分数。完成此题,我学会了编写自主函数并正确调用它。(思路在代码注释)

 

 

 

 3、题目:

 

答案:

 

 1 #include <stdio.h>
 2 
 3 int main( ) 
 4 {
 5     int a, n, sum = 0 ;     //定义三个整型变量,储存输入的数字a、项数n和计算的和。
 6 
 7     int num;               //定义一个整型,将a的值赋予它,便于后面的a的值改变,还能对a初始值取用。
 8 
 9     scanf("%d%d", &a, &n);
10 
11     num = a;               //赋值
12 
13     if (a <= 9 && n <= 9)      //应题目对a和n的大小要求,进入执行语句。
14     {
15         for (int i = 1; i <= n; i++)    //设置循环,将n个由a组成的特殊数列相加求和。
16         {
17             sum = sum + a;             //求和
18 
19             a = a * 10 + num;          //每一次循环,都将a的值变为n个a组成数
20         }
21         printf("s = %d", sum);        //循环外,按要求输出最后的值
22     }
23     return 0;
24 }

       此题考点在于对for循环的运用,难点在如何将初始a逐次变为递增的n个a组成的新的数。完成此题,我对for语句有了更进一步的掌握。(思路在编程注释里)

posted @ 2019-10-15 20:01  AJAJAJAJAJAJ  阅读(154)  评论(0编辑  收藏  举报