C语言I博客作业11
一.表格
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业11 |
我在这个课程的目标是 | 把C语言学精,熟练掌握编程技术,努力找到简单代码的写法 |
这个作业在哪个具体方面帮助我实现目标 | PTA上做题,devc++慢慢掌握调试,加强对于函数类型以及静态和动态储存的理解与应用 |
参考文献 | 百度百科,其他同学作业,《C Primer Plus》,教科书 |
二.本周作业
1.PTA实验作业
1.1统计某类完全平方数
题目内容描述:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理:
-
数据表达:r,n,a[10],d(变量);运算,赋值(怎么来);int(整型)
-
函数参数:主函数是“int main()”,被调函数是“int IsTheNumber ( const int N )”实参是N,形参是r,n,a,它们都是整型
-
数据处理:
定义变量r来放参数N二分之一次方,n来放参数N,a[10]来放完全平方数(完全平方数可以有10位)
if(r*r==N)
判断是否是完全平方数
定义变量d来表示数组里的元素
while(n){
d=n%10;
求完全平方数个位数
a[d]++;
数组元素位置上加1
if(a[d]==2){
是否同一个元素位置上等于2
返回1;跳出循环
n/=10;
取出完全平方数的各位数
}
不是便返回0
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 题目样例 |
1 100 | cnt = 1 | 包含所有二位数 |
1 1000 | cnt = 9 | 包含所有3位数 |
-100 0 | cnt = 0 | 不符合条件 |
1.1.4PTA提交列表及说明
```
题目说明:这个题目刚开始想不用数组去写,想了很久,发现根本不可以。因为完全平方数的位数无法确定,所以必须用数组才可以解决这个问题。去百度搜了一下数组怎么用,然后再dev上试了十多分钟,便写出来了。理解之后便写在pta上面了。
### 1.2 <span style="color:red">统计各位数字之和是5的数</span>
#### 题目内容描述:<span style="color:red">本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。</span>
# 函数接口定义:
int is( int number );
void count_sum( int a, int b );
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206135958595-1883444523.jpg)
# 输入样例:
104 999
# 输出样例:
104 is counted.
count = 15, sum = 3720
##### 1.2.1<span style="color:blue">数据处理</span>:
- <span style="color:blue">数据表达</span>:<span style="color:red">a,i,sum,j,count(变量)</span>运算,赋值(如何来);<span style="color:red">int(整型)</span>
- <span style="color:blue">函数参数</span>:<span style="color:red">主函数是“int main()”,被调函数是“int is( int number )”和“void count_sum( int a, int b )”;实参是number,a,b;形参是a,i,sum,j,count,它们都是整型变量。</span>
- <span style="color:blue">数据处理</span>:
int is(int number)
定义i来放number(正整数),定义a来放正整数的各位数字,定义sum来放各位数字之和
while(i>0)
a = i % 10;
sum=sum+a;
i = i/10;//取出正整数各位数
if (sum == 5)
判断是否各位数字之和是否等于5
是则返回1
不是便返回0.
void count_sum(int a, int b)
定义j来放a--b之间数,定义count来放满足要求的所有整数,定义sum来放满足要求的整数之和
for (j=a;j<=b; j++)
if (is(j))
是否满足各位数字之和等于5
sum+=j;
count++;
printf("count = %d, sum = %d", count, sum);
输出足要求的所有整数,满足要求的整数之和
##### <span style="color:green">1.2.2实验代码截图</span>
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206141211002-449279270.jpg)
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206141242128-121054548.jpg)
##### 1.2.3造测试数据
输入数据|输出数据|说明
---|---|---
104 99|![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206141043976-509411339.jpg)|题目样例
1 100|count = 6,sum = 165|计算所有2位数值
99 99999|count = 120,sum = 1399821|取较大数值
-100 -1|count = 0,sum = 0|不符合题目条件
##### <span style="color:blue">1.2.4PTA提交列表及说明</span>
![](https://img2018.cnblogs.com/blog/1806727/201911/1806727-20191127231914474-1221851653.jpg)
<span style="color:red">```
编译错误:刚开始设置变量sum1,sum2,以为这两个变量不一样。看清题目之后才知道这两个变量是一样的,只要设置一个就行;把sum1和sum2改为sum
```</span>
## <span style="color:green">2.代码互评</span>
### 2.1.1 同学代码截图①
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206193617668-2140009721.png)
### 2.1.2自己代码截图①
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206133507376-394570935.jpg)
- <span style="color:red">我们的不同之处</span>.
- 我们的思路是一样的<span style="color:red">先用变量表示完全平方数,然后再去判断是否相等</span>,不过<span style="color:red">数组判断有点不一样,我直接是等于2,他是用了一个变量</span>。
- while()有些不一样<span style="color:red">我是省略了大于0</span>。我用d表示数组元素<span style="color:red">在d表示的数赋值</span>,<span style="color:red">他是直接用另一个数组元素j赋值</span>。
- 他的代码比我好理解一点,为了能让人都读懂,我应该要学他这种代码易懂得写法
### 2.2.1同学代码截图②
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206194036923-281328030.png)
### 2.2.2自己代码截图②
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206141211002-449279270.jpg)
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191206141242128-121054548.jpg)
- <span style="color:red">我们的不同之处</span>.
- 他的思路和我差不多,不过表达有些偏差。
- 他用<span style="color:red">number表示正整数</span>;我是直接用i赋值给number,这样可以省<span style="color:red">不少字</span>。
- 我和她while()有点偏差。她是不等于0,我是大于0。
- 他的这种思维<span style="color:red">更加简单</span>,不过逻辑没有我<span style="color:red">紧密</span>。
## 3.学习总结
#### 3.1学习进度条
周/日期| 这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题
---|:---|:---|:---|:---
十一/3/12-6/12|3天|150|<span style="color:red">**函数类型以及静态和动态储存的理解与应用**</span>|挑战题数组的运用
十/26/11-29/11|2天|110|<span style="color:red">**对循环语句for,if-else加强理解以及对嵌套掌握更加熟练**</span>|还有点不清楚字符怎么用
九/19/11-22/11|3天|100|<span style="color:red">**break语句,continue语句用法和区别**</span>|不太清楚字符怎么用
八/12/11-15/11|3天|120|<span style="color:red">**while和do-while循环语句用法和概念**</span>|暂时没有
七/5/11-8/11|3天|140|<span style="color:red">**switch语句用法**</span>|如果x为浮点型,y,z为整型为什么x=y/z答案不对
六/28/10-2/11|3天 |130|<span style="color:red">**嵌套if-else语句,格式以及如何应用**</span> |不太清楚Devc++怎么调试
五/22/10-25/10|3天 |100|<span style="color:red">**用法如何定义函数,格式以及如何应用**</span> |暂时没有
四/15/10- 18/10|3天 |80|<span style="color:red">**循环结构,流程图,数学函数**</span> |数学公式的表达,为什么整数除以变量有一个要用括号括起来还要乘以1.0
三/9/10-13/10 |3天 |70|<span style="color:red">**if-else,&&用法,字母%用法,数学函数**</span> |PTA每次答案错误,都十分难找出来。不得已重打
#### 3.2累计代码行和博客字数
![](https://img2018.cnblogs.com/blog/1806727/201912/1806727-20191205224730783-848431611.jpg)
#### 3.3学习内容总结和感悟
##### 3.3.1学习内容总结
![](https://img2018.cnblogs.com/blog/1806727/201911/1806727-20191121144933450-1685871308.jpg)
##### 3.3.2学习体会
- 这周主要进行<span style="color:red">对函数的拓展:</span><span style="color:red">**全局变量、局部变量、静态和动态存储区**</span>怎么用,是什么。感觉函数类似于数学函数啊。。依旧的难理解。看样子要多看书和b站大学理解了。
- 这次作业一元二次方程好难啊。。复数的输出真的好难。。应该是因为高中没对一元二次拓展,,完全不知道复数跟怎么讨论
- 主要是进行<span style="color:red">全局变量和局部变量以及自动变量和静态变量的分别</span>。
- 快要期末了,我发现上课学的知识真的很少,这也说明了大学是靠自学的。下周就要考选择题了。。我得抓紧学后面内容了。