这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业11 |
我在这个课程的目标是 | 学习C语言程序设计 |
这个作业在哪个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
参考文献 | 百度查阅 |
PTA实验作业
1.1 统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N
是用户传入的参数。如果N
满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include
#include
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
1.1.1数据处理
数据表达:定义整形变量n,i,a.双精度浮点型变量m,
数据处理:伪代码
include //头文件
include //头文件
定义整形变量IsTheNumber 将N定义为整形变量
int main()
{
定义整形变量n1, n2, i, cnt;
输入"%d %d", &n1, &n2
cnt的初始值为0
for i=n1 to i<=n2 累加i
{
如果 ( IsTheNumber(i) )
cnt累加;
}
输入cnt
end for
return 0;
}
int IsTheNumber (const int N) //函数接口
{
定义整形变量 n,i,a;
定义双精度浮点型变量 m;
num[10]初始化为0;
将整形的(N)开方后的值赋给n;
将(N)开方的数赋给m;
将N赋值给a;
if(a==m*n)
while(a)
{
for(i=0 to i<=9 累加i)
{
if(a除以10取余等于i)
{
num[i]+=1;
如果(num[i]>=2)
返回 1;
}
end if
}
end for
a等于a除以10;
}
end if
返回 0;
}
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
144 169 | cnt = 1 | 两个平方数 |
125 275 | cnt = 2 | 两个5的倍数 |
25 49 | cnt = 0 | 两个小于100的可开方数 |
333 666 | cnt = 3 | 两个大于300的数据 |
122 226 | cnt = 2 | 两个大于100的数据 |
1.1.4 PTA提交列表及说明
1.编译错误:未将for循环中的分号码正确;用到了逗号,导致错误
2.答案正确:将for循环中的逗号改成分号就行了
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
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
1.2.1数据处理
数据表达:定义整形变量x,y,并将0赋值给y
数据处理:伪代码
include //头文件
void count_sum( 定义整形变量a,b);
int main()
{
定义整形变量a, b;
输入a,b
如果是a,输出的是"a is counted."
如果是b,输出的是"b is counted."
count_sum(a, b);
return 0;
}
int is( int number )
{
定义整形变量x,y,并将0赋值给y
do
{
将number除以10的余数赋值给x
将number除以10的值赋值给number
将x+y的值赋值给y
}
while(number不等于0);
如果(y等于5)
返回 1;
返回 0;
}
void count_sum( int a, int b )
{
定义整型变量i,count,sum,并将0赋值给count与sum
for(i=a to i<=b i累加
{
如果是i
{
count++;
将sum+i的值赋值给sum
}
end if
}
end for
输出("count = %d, sum = %d")
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
122 226 | 122 is counted. count = 6, sum = 1029 | 大于100的数据 |
222 122 | 122 is counted. count = 0, sum = 0 | 大于100的数据 |
232 332 | count = 3, sum = 933 | 大于200的数据 |
122 222 | 122 is counted. count = 6, sum = 1029 | 大于100数据 |
332 335 | count = 0, sum = 0 | 大于300的数据 |
1.2.4PTA提交列表及说明
1.答案错误:将第6行中的x=number%10;写成了x=number/10;
2.格式错误:将第28行中的空格未打出来;
3.格式错误:第28行中的空格位置打错了;
4.格式错误:依旧是28行中的空格位置打错了;
5.答案正确:在经过多次格式错误下,终于打正确了格式
2.代码互评
同学代码截图
自己代码截图
1.同学代码中仅仅用到了整形变量,而自己的代码中用到了整形变量及双精度浮点型变量
2.同学代码中用到了3个整形变量,并将n赋值给m,而我自己的代码中用到了3个整形变量及1个双精度浮点型变量
3.同学代码中用到的是if语句中镶嵌while语句,而我的代码是while语句中镶嵌for循环语句
同学代码截图
自己代码截图
1.同学代码中用到了5个变量,而我的代码中用到了3个变量及1个双精度浮点型变量
2.同学代码中用到了if语句中镶嵌while语句,而我的代码中用到了while语句中镶嵌for语句
3.同学代码中是直接将数据赋值给for循环中,而我的代码是将count定义并将其作为范围
3.学习总结
3.1学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第五周 | 3小时 | 17行 | 初期开始学习“Hello World!" | 不知道如何开始编译 |
第六周 | 10小时 | 27行 | 提问的智慧及编译器的下载 | 编译格式问题 |
第七周 | 10小时 | 95行 | 流程结构类型及变量类型分类方法 | 代码分析不明白以及编译格式问题 |
第八周 | 13小时 | 115行 | 循环程序设计及Dev-C++编译运行等方法 | 用专业术语将代码解释出来及各种赋值运用 |
第九周 | 15小时 | 165行 | 四种流程结构及主调,被调函数,实参与形参的识别 | PTA作业中题目的编写 |
第十周 | 17小时 | 94行 | 分支结构的部分代码 | PTA作业的编写(真的好难) |
第十一周 | 14小时 | 76行 | switch语句的运用 | switch语句的灵活运用以及PTA作业的编写 |
第十二周 | 18小时 | 147行 | 循环结构程序设计及运用字串符处理代码题 | 有时候对于一些问题的意思很难懂,对于自己的解题速度也有很大问题 |
第十三周 | 11小时 | 113行 | 学习使用循环的嵌套及熟悉continue的使用 | PTA的题目,C语言知识点及考试的心态 |
第十四周 | 10小时 | 40行 | 熟练运用循环结构的程序设计 | 对于一些循环嵌套的代码还是有很多不解 |
第十五周 | 5小时 | 93行 | 熟悉各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 对于这次的作业,又要让人脱发了吧 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.在本周中,我们体会到了有史以来的难度,不知道怎么解决问题,真的是应该好好反思,是不是基础太弱了。其实最希望的不是直接写题目,知识点都不清楚,就做题,现在就是一学期下来,基本上没有学到什么,这种方法真的让我自己无力吐槽了,枯辽。
2.在本周中的学习点是掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型,对于这些知识点就像一群demons,让我看到就没太大兴趣,因为一直都还是不太清楚,太心塞了。
3.在这学期的学习中,我发现还是有很多要学的知识点都不知道,自己的实力多大,心里都知道,真的很薄弱,只是希望以后能在忙于其他课外活动的同时能够腾出最大空间来学习吧。