问题 | 回答 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 自己设计一个小游戏 |
这个作业在那个具体方面帮助我实现目标 | 在PTA练习中多次使用自定义函数和库函数 |
参考文献 | C语言程序设计II,百度百科 |
1.PTA实验作业(20分/题)
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;
}
/* 你的代码将被嵌在这里 */
输入样例:
1.1.1数据处理
数据表达:定义了n接受N的平方根乘n的平方根,N是输入的整数,定义一个10位的数组num用了收集n的值;n1,n2为输入的取值范围,i用于控制循环,cnt用于记数
数据处理:
int IsTheNumber ( const int N )
定义整形变量i循环终止条件,n是N的平方根乘n的平方根
定义数组num[10]并将数组初始化为0
n=(int)sqrt(N)*(int)sqrt(N) /*利用函数sqrt()进行判断是否为完全平方数*/
if(n==N) /*在完全平方数的基础上进行判断第二步*/
while(n!=0) /*检验数字是否相同*/
for(i=0;i<10;i++)
if(n%10==i)
num[i]累加
if(num[i]==2) /*判断是否有相同的数字*/
返回值为1
end if
end if
end for
n←n/10
end whlie
返回值为0
end if
else
返回值为0
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 题中数据 |
0 100 | cnt = 1 | 题中数据左侧 |
500 1000 | cnt = 2 | 题中数据右侧 |
1.1.4 PTA提交列表及说明
提交列表说明:
编译错误:开始忘了把数组初始化。
编译错误:错把num[i]==2打成num[i]=2
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;
}
/* 你的代码将被嵌在这里 */
1.2.1 数据处理
数据表达:定义了整形变量a,b为输入的范围,自定义函数is并定义了整形变量i,sum,其中sum为number的每一位相加的和,i为返回值;
自定义函数count_sum并定义了整形变量count,sum,i,其中count为记录满足要求的个数,sum为每一个满足条件的数的和,i用来控制循环。
数据处理:
int is(int number)
定义整型变量c,d
定义整数变量sum并赋值为0
while(number!=0)/*number是否等于0*/
c←number%10
sum←sum+c
number←number/10
end while
if(sum==5) /*判断各位数之和是否等于0*/
返回值为1
else
返回值为0
end if-else
end
void count_sum( int a, int b )
定义整型变量i为控制循环
定义整型count用于记录满足条件数的个数,sum1为满足条件的每一个数累加的和
for(i=a; i<=b; i++) /*在区间a-b中循环寻找各位数字之和是5的数*/
if(is(i))
count累加
sum1←sum1+i
end if
end for
输出count = , sum =
end
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 |
题中数据 |
0 103 | count = 6, sum = 165 | 题中数据左侧 |
1000 9999 | count = 35, sum = 73885 | 题中数据右侧 |
1.2.4 PTA提交列表及说明
提交列表说明:
编译错误:错把number=number/10;打成number=number%10;
2.代码互评(5分)
同学代码截图
自己代码截图
同学代码是用n代替N,我的n是两个根号下N相乘,他用m等于根号下n,m乘m来代替我的n,我这样少一个变量,我们算法差不多,就if语句中判断条件有点不一样。
同学代码截图
自己代码截图
1.他的代码较乱,而且变量多一点,我的比较清晰。
2.在判断N是否满足条件上,他的判断语句是(b[a[i]]==1),而我的判断语句是满足s[i]==2,返回1,满足n/=10,返回0。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
9.16~9.22 | 6h | 20 | 初步了解编程如何进行 | 编程开始的单词有什么作用,编译是如何进行的 |
9.23~10.6 | 30h | 30 | 学会运用markdown语法和了解博客园作业格式 | 如何在博客随笔字体加颜色 |
10.7~10.11 | 48h | 235 | 学会了if语句和编程的数学函数怎么写 | while语句如何使用和电脑上表格和why手机上顺序不一样 |
10.14~10.20 | 36h | 100 | 掌握使用for循环语句 | 对多种循环结构不够了了解以及分支结构和循环结构同时使用的编程先后。 |
10.20~10.27 | 32h | 135 | 如何对函数的定义和调用,思维导图 | 函数的调用和定义有没有局限性。 |
10.28~11.3 | 36h | 512 | 熟悉多分支结构、字符型数据类型和逻辑运算符 | 四则运算和字符型变量 |
11.4~11.10 | 12h | 232 | 熟悉多分支结构switch语句的使用 | 在博客园中如何添加小挂饰 |
11.11~11.17 | 18h | 263 | 熟悉使用while和do-while结构 | 字符的实际使用 |
11.18~11.24 | 20h | 186 | 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 | 嵌套循环的逻辑 |
11.25~12.1 | 22h | 270 | 选择合适的算法、合理的循环结构,熟练的编写程序 | 数组的运用 |
12.2~12.8 | 30h | 215 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 不太明白变量的生存周期 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
本学期最后一次作业感觉有点难度啊,尤其是编程题,我第一题从3分到4分到5分,太难受了,一个虚数输出问题,我就搞了半天,i无值,所以不能直接输出,实数部分和虚数部分系数分开求才能实现,但还是只有5分,还有5个测试点错误,我打算在Dev上一个一个测试,看到底那错了,回顾这一学期,其中有时候偏离了自己的目标,距离目标还是太远了,在最后这一段时间我希望自己坚持学习,尽量考个好分数,我的博客各向指标也该提升点了毕竟分数不能总停在那里,没进步就是退步,加油,奥利给。