C语言I作业11
| 这个作业属于那个课程 | C语言程序设计II |
|---|---|
| 这个作业要求在哪里 | C语言I作业11 |
| 我在这个课程的目标是 | 复习之前学过的语法知识,并学会运用 |
| 这个作业在那个具体方面帮助我实现目标 | 归纳,总结自己的解题错误,进一步了解自己的学习情况 |
| 参考文献 | 百度 |
1.PTA实验作业

1.1统计某类完全平方数
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
*数据表达
定义整形变量m,n,j,i
m作为判断任意整数N的开方;
把N赋值给n;
用i,j用于for循环;
*数据处理(伪代码)
int IsTheNumber(const int N)
{
定义变量 m,n,i,j;
n=N;
m=(int)sqrt(N);//将平方数开方
if (m*m==n)//判断是否是平方数
{
int f[10]={0};//取0-9的数作为位数,用数组作为表头
while (n>0)
{
j=n%10;//取个位数
for循环;
{
f[i]++;//如果取的个位数与i相等,就在数组对应的表头那里都加一
if (f[i]>1)//题目上说至少两个相等的数,所以要大于1
{
return 1;//返回1
n/=10;//取下一位数
}
返回0;
结束;
}
1.1.2实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 105 | 500 | cnt=6 |
| 130 | 190 | cnt=1 |
| 99 | 199 | cnt=3 |
1.1.4 PTA提交列表及说明

*编译错误:
1.sqrt打成了sprt导致编译出错;
2.sqrt前面的int没有括号;
1.2 统计各位数字之和是5的数
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
count = 满足条件的整数个数, sum = 这些整数的和
进行输出。题目保证0<a≤b≤10000。
裁判测试程序样例:
#include <stdio.h>
int is( int number );
void count_sum( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
*数据表达:
定义了s,t,n,sum,count;
s用来判断给定正整数的各位数字之和是否等于5;
count用来记录满足条件的整数个数
sum用来记录这些整数的和
*数据处理:
整型变量:int is(int n)
int a=0,b=0;
while (n!=0)
b = n % 10;提出个位数
n /= 10;取下一位数
a += b;整和
if (a == 5)判断整和数是否等于5
void count_sum(int a, int b)
定义变量sum = 0, count = 0, i;
for循环;
if (is(i))//以is函数的if为条件来进行判断
count++;//计数满足的个数
sum += i;//整数的和
结束;
1.2.2 实验代码截图

1.2.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 104 999 | 104 is counted.count = 15, sum = 3720 | 样例 |
| 5 | 555 | 5 is counted.count = 21, sum = 3885 |
| 99 | 999 | count = 15, sum = 3720 |
1.2.4 PTA提交列表及说明

*编译错误:
1.最后结尾的时候打了个return 0;
2.void count_sum下划线打错了;
2.代码互评
同学的代码:

我的代码:

1.该同学使用了do-while语句
2.该同学使用了if(a>b)进行判断,我没有进行他的这一步
3.他的代码从定义上和我较大的差异,我感觉我的代码更加清晰简洁。
3.学习总结
3.1 学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的地方 |
|---|---|---|---|---|
| 第六周 | 18h | 120 | 如何用 MinGW-w64 来编译C程序 | |
| 第七周 | 20h | 160 | 学习了if-else语句 | 运用的还不是特别熟练 |
| 第八周 | 22h | 180 | 掌握使用for循环语句实现指定次数的循环程序设计 | |
| 第九周 | 20h | 200 | 学会使用自定义函数 | 不是很了解自定义函数 |
| 第十周 | 22h | 210 | 学习多分支结构、字符型数据类型和逻辑运算符 | 对于字符型数据类型不怎么明白 |
| 第十一周 | 20h | 150 | 学习使用switch语句的运用 | 还不是很能很熟悉的运用 |
| 第十二周 | 24h | 220 | 学习使用while语句 | do-while还不是很熟悉 |
| 第十三周 | 29h | 300 | 学习使用continue语句和嵌套循环 | 对于一些较难的题目还是不能理解并运用 |
| 第十四周 | 33h | 320 | 复习之前学过的知识 | 基础知识不牢固 |
| 第十五周 | 36h | 360 | 学习使用函数和自学数组 | 对数组还是不清楚 |
3.2 累积代码行和博客字数
| 时间 | 博客字数 | 代码行 |
|---|---|---|
| 第六周 | 1003 | 120 |
| 第七周 | 1260 | 145 |
| 第八周 | 1461 | 169 |
| 第九周 | 1812 | 210 |
| 第十周 | 2013 | 235 |
| 第十一周 | 2161 | 246 |
| 第十二周 | 2300 | 260 |
| 第十三周 | 2600 | 300 |
| 第十四周 | 2641 | 320 |
| 第十五周 | 2900 | 360 |
![]() |
3.3 学习内容总结和感悟
3.3.1 学习内容总结

3.3.2 学习体会
期末了,也差不多都要结课了,但是感觉学习到的知识并不多,而且思路也不清晰,也不知道怎么回事,还有马上就要考试了,先把基础复习好吧
只有基础知识扎实了,才能往下面走。

浙公网安备 33010602011771号