这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I作业11 |
我在这个课程的目标是 | 掌握C语言 |
这个作业在那个具体方面帮助我实现目标 | 对函数和循环语句的练习 |
参考文献 | CSDN |
1.PTA实验作业
1.1 统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
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
", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:本题用了三个整型变量,r用来存放开平方后的数,m用来计算r的平方,result用来控制返回的数字,保证只有一个return返回,减少出错的可能性;
数据处理:
伪代码
将N传入函数中
初始化result
r=N的开平方
m=r的平方;
if N与m相等;
则使用一个数组
当m大于0时;
m对10取余;
将取出来的数对应的数组空间中加一
if某个对应空间的数字有两个
Output(b+c);输出一个字符并空格;
m--;
while循环结束后令m=a-1;a=a-1;并换行;后再次执行for循环;
End。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 题目的测试样例 |
120 999 | cnt = 8 | 随机数 |
500 1111 | cnt = 2 | 随机数 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.答案正确:此题一次就过了,但我还是了强制转换等方法也对了。
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.
", a);
if (is(b)) printf("%d is counted.
", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
1.2.1 数据处理
数据表达:本题用了五个整型变量,i,j用来实行循环;n为输入的指数;a用来存放2的n次方-1;flag用来看是否有梅森数
数据处理:
伪代码
对a和falg初始化;
Inout (n);
if(n=1)
output(None);
for(int i=2;i<=n;i++)输入2到n之间的数
a=pow(2,i)-1;
for(int j=2;j<=a/2;j++)输入2到a/2之间的数并用(a%j==0)进行判断是否为素数
if不为素数flag++;
if为素数
output(a)并换行;
再重新对falg进行初始化;
End
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
6 | 题目的测试样例 | |
13 | 随机数 | |
21 | 随机数 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.编译错误:失误,少打了个;号。
2.代码互评
同学代码截图
自己代码截图
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
7 | 10 小时 | 235 | 循环语句for的使用以及格式 | 无 |
8 | 8小时 | 197 | 定义全局变量 | 无 |
9 | 17小时 | 537 | 函数的调用 | 无 |
10 | 16小时 | 411 | 数据类型的回顾 | 无 |
11 | 24小时 | 1089 | 数组以及一些算法 | 无 |
12 | 8小时 | 453 | 结构体 | 无 |
13 | 5小时 | 371 | 冒泡加sort | 无 |
14 | 11小时 | 401 | define | 精度的误差 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
通过姐一元二次方程这道题,我发现我看题还是不过仔细,很粗心的一直没写出这道题,而且一些小的知识点我也不会,就像c语言中由于精确度的问题,实数不能与0进行比较,后续我还有许多需要改进的地方,如认真读题多学习等。