第一次作业
一. 制作思维导图
二. 写出自己对以下语法的认识
1.if-else
if(条件表达式){语句组1}
else{语句组2}//else与最近的if配对
注意点if条件后面无 ;
2.switch
switch(表达式)
{
case 值1: 语句体1;break;
case 值2: 语句体2;break;
...
default:break;
}
注意break,如果没加break则会去运行switch中后续的语句,比如运行到后续别的case中。
3.for
for(单次表达式;条件表达式;末尾循环体)
{
中间循环体;
}
使用 for语句的过程中,要注意循环的起始值
注意是;不是,号!!!
4.while
while (表达式)//满足条件时进入循环
{
语句;
}
5.do-while
do {需执行的代码 }
while (条件);
与while的区别 do...while 循环为执行至少一遍其中的代码
6.break以及continue
for(表达式1;表达式2;表达式3){
if(表达式4)
break;
}
for(表达式1;表达式2;表达式3){
语句1;continue
语句2;
}
三. pta分数截图
2.3, 2.4
第3章作业
4.1作业
四. pta代码分析
一.
#include <stdio.h>
int main()
{
int a,n;
double item=0;
double sum=0;
scanf("%d %d",&a,&n);
for(int i=1;i<=n;i++){
item=item*10+a;
sum+=item;
}
printf("s = %.lf\n",sum);
return 0;
}
1.代码思路
找出每个数字的值,再使它们相加,便可以得到最后的和。
2.错误原因
没想到怎么用循环表示每个数字的值。
3.感受
对循环有了更深的理解。
二.
#include<stdio.h>
#include<math.h>
int main()
{
int a = 1, b = 1;
double item = 1, eps, sum = 0;
scanf("%lf", &eps);
if (eps > item) sum = 1;
else {
do {
item = b * 1.0 / a;
sum += item;
b *= -1;
a += 3;
} while (fabs(item) > eps);
}
printf("sum = %.6f", sum);
return 0;
}
1.代码思路
首先判断精度是否大于1,若为1,则直接输出结果1,若不为1,则使用循环语句,来求出结果。
2.错误原因
一开始用while写结果少进行了一次循环,结果一直不错,也没有用到fabs()来取绝对值。
3.感受
体会到while与do while循环的差别,学到了fabs()来取绝对值。
三.
#include <stdio.h>
#include <math.h>
int main()
{
int m, n, i;
int x = 0, num = 0;
int sum = 0;
scanf("%d %d", &m, &n);
for (i = m;i <= n;i++) {
for (m = 1;m < i;m++)
{
if (i % m != 0)
x++;
}
if (x == i - 2)
{
sum = sum + i;
num++;
}
x = 0;
}
printf("%d %d", num, sum);
return 0;
}
1.代码思路
输入一个数,让它不断的除于从1开始的整数至它本身,若余数不为0,则x加1,因为素数的因子只有1和本身,如果最后x=这个数减2,那么它就是素数,再把素数加起来就可以求出结果。
2.错误原因
不知道如何判定素数,参考网上的素数判断后,再次作答未在循环后加x=0,导致错误
3.感受
要注意循环后使判断的符号复位,多积累一些常用数域的表示方法。