二. 写出自己对以下语法的认识
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 ", 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是函数的实际参数)
学到的地方:暂无