这个作业属于那个课程 | C语言程序设计I |
---|---|
这个作业要求在哪里 | C语言I博客作业11 |
我在这个课程的目标是 | 复习前面所学的语句和循环,学习有关函数的知识 |
这个作业在那个具体方面帮助我实现目标 | C语言教材书,老师课堂讲的内容,同学的帮助 |
参考文献 | C语言程序设计,百度,《C primer plus》,集美大学灵丽老师 |
1.PTA实验作业
1.1统计某类完全平方数 (20分)
本题要求实现一个函数,判断任一给定整数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.2.1数据处理:
数据表达:定义了一个数组temp[10],整型变量N,i用于循环,定义了n接受N的平方根乘n的平方根,N是输入的整数,定义一个数组temp,初始化为0,用于统计每个数字出现的次数
数据处理:
int IsTheNumber ( const int N )
{
int n=sqrt(N);
if(n*n==N)
{ //验证是否为平方数
int temp[10]={0}; //初始化数组为0,表示每个数字出现的次数
for(int i=N;i>0;i/=10)
{
if(temp[i%10]!=0) //表示出现重复的数字
return 1;
else
temp[i%10]++;
}
}
return 0;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt=6 | 正确 |
0 100 | cnt=1 | 正确 |
500 1000 | cnt=2 | 正确 |
1.1.4 PTA提交列表及说明
Q1:编译错误
A1:数组用的不熟练,在定义的时候出了些问题
Q2:答案正确
A2:看了下资料
1.2统计各位数字之和是5的数 (20分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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数据处理:
数据表达:在int is(int number)函数内,定义了两个整型变量item和sum分别代表输入的数的每一位数字和每一位数字加起来的和。在void count_sum( int a, int b )函数内,定义了三个整型变量i,count,sum分别代表[a,b]之间循环输入的数、满足is函数的数和满足is函数的数的个数。
数据处理: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造数据测试
输入数据 | 输出数据 | 说明 |
---|---|---|
0 103 | count = 6, sum = 165 | 正确 |
104 999 | 104 is counted.count = 15, sum = 3720 | 题目数据 |
50 100 | count =1, sum = 50 | 正确 |
1.2.4 PTA提交列表及说明
说明:Q1:部分正确
A1:sum==5,漏了一个=,找了我半天。
同学的题目代码
(num1)
(num2)
我的题目代码
说明比较不同与相同:
我们三人都运用了数组的知识,然后这俩位同学的思路比较一致
而我的代码却和他们差距还是比较大的,明显我的代码要简便的多,主要是因为条件的
判断方向不同所造成的,然后补充一下temp[i%10]++的意思,表示数组temp中第i%10个元素
在执行完本次处理后自动+1,但是要在本次处理没有完成之前是保持原先的值不变的
例如a[0]++也就是数组中第一个值+1再存放到原位
学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
9.16~9.22 | 5h | 16 | 刚开始了解如何编程 | 编译的单词和字母数字都有哪一些作用,编译整个过程又是如何运行的 |
9.23~10.6 | 28h | 32 | 学会如何运用markdown语法 | 为什么会这么难 |
10.7~10.11 | 40h | 211 | 学会了编程的数学函数,对PTA也更熟练了 | 好折磨人 |
第4周/10月10~17 | 两天半 | 183 | 掌握并学会使用for循环语句 | 还有多种循环语句不了解,循环结构和分支结构谁先编 |
10.20-10.26 | 俩天 | 192 | 定义和调用函数,以及如何在一个函数中调用另一函数 | 生成乘方表跟阶乘表这方面的内容还有很多不懂的,觉得完成作业很费力气 |
10.27~11.2 | 两天半 | 220 | 如何进行语句的嵌套,对运算符的等级高低有所了解,熟悉多分支结构、字符型数据类型和逻辑运算符 | do语句和do-whlie语句搞不清 |
11.4~11.10 | 俩天 | 256 | 学会switch语句 | 很多地方不明白,一俩句话讲不清楚 |
11.11~11.17 | 俩天 | 273 | 学会了while循环,并区别do-while和while | 学习新的东西,然后对数组有疑惑 |
11.18~11.24 | 俩天 | 286 | 学会continue的使用,并且熟练,学数组 | 对数组还有一点点不懂 |
11.27~11.29 | 一天半 | 311 | 新学会pow,flag用处 | 继续学习之前没懂的地方 |
12.2~12.8 | 一天半 | 321 | 数组可以应用了 | 进行复习,备考期末 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
每次都有新的收获,新的体会,C语言的感觉越来越难,同时也越来越棒,做出PTA的成就感无与伦比,敲代码的贼得劲,中间会遇到很多问题,也会很烦恼,
但是正确的办法就是勇敢迎接挑战,,这样才能真正的成长起来!!!