这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业11 |
我在这个课程的目标是 | 熟悉并掌握基本的C语言知识,并拥有独立完成编辑程序的能力 |
这个作业在那个具体方面帮助我实现目标 | 明白并区分局部变量和全局变量 |
参考文献 | Markdown语法参考1,集美大学林丽老师,思维导图,伪代码 |
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\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:主函数定义了整型变量n1,n2,i,cnt;其中n1,n2位输入的取值范围,i用于控制循环,cnt用于记录满足条件的数有多少
数据处理:
cnt=0
for(i=n1;i<=n2;i++)
{
if 自定义函数反回来的值不为零 then cnt++
}
输出cnt
自定义函数:
定义n用于放N的平方根,m用于判断N的位数,i用于记录N的位数,a[10]用于收集N每一位上的值,j,k用于控制循环,s为返回值
n=根号N
m=N
if n*n=N then
{
while(m>0)
{
a[i]=m除10的余数
m自除10
i++
}
for(j=1;j<i;j++)
{
for(k=2;k<i;k++)
{
if a[j]=a[k]且j!=k then s=1 跳出循环
}
}
}
返回s的值
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 20 | cnt = 0 | 10~20内没有类完全平方数 |
105 500 | cnt = 6 | 105~500内有6个类完全平方数 |
100 300 | cnt = 4 | 100~300内有4个类完全平方数 |
1.1.4 PTA提交列表及说明
编译错误:忘记打分号,通过在devc++上运行的时候发现错误改正的。
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
1.2.1数据处理
数据表达:主函数定义了整型变量a,b为输入的范围。自定义函数is定义了整型变量i,sum,其中sum为传过来的number的每一位相加的和,i为返回值。
数据处理:
主函数:
定义a,b为输入的范围
自定义函数is:
定义i为控制循环变量,sum为number的每一位数累加的和
while(number>0)
{
sum+=number除以10的余数
number自除10
}
if sum=5 then i=1
返回i的值
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted.count = 15, sum = 3720 | 104~999内有15个各位数字之和是5的数,且他们的和为3720 |
23 200 | 23 is counted.count = 9, sum = 756 | 23~200内有9个各位数字之和是5的数,且他们的和为756 |
1.2.4 PTA提交列表及说明
编译错误:我用了中文符号";"
编译错误:从vs复制过来的时候scanf_s忘记改成scanf导致错误
2.代码互评
同学代码
自己代码
1.他的代码是定义m放N的平方根,n为m的平方,当n和N相等的时候再开始判断是否有相同的数,如果有则返回1,没有则返回0
2.我的代码是定义n放N的平方根,m放N的值,当n的平方和 N相等的时候用数组收集N的每一位数,然后再判断数组内是否有相同的数
同学代码
自己代码
1.他的代码自定义is函数定义digital来收集number的每一位数并用sum1累加贮存,然后判断当sum1=5时返回1否则返回0,自定义count_sum函数定义count来记录符合要求的个数,用sum来放累加和,当is函数返回的是1时count+1而sum+i然后输出count和sum
2.我的代码自定义is函数定义sum来累加number的每一位数,i用于返回的值,当sum=5时i=1,然后返回i的值,自定义count_sum函数定义count来记录符合要求的个数,用sum来放累加和,当is函数返回的是1时count+1而sum+i然后输出count和sum
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
10/8-10/12 | 6h | 106 | if-else语句和else-if多分支结构 | 还没有特别迷惑的问题 |
10/14-10/20 | 7h | 168 | 如何用double型数据使用lf%,怎样在程序中用for语句实现循环,可指定循环次数 | 循环体中的关系表达式的正确运用 |
10/22-10/26 | 5h | 159 | 如何自定义函数,调试,函数命名 | 函数如何运算,什么时候函数返回 |
10/29-11/2 | 8h | 173 | 分支结构,逻辑运算和关系运算,字符型数据 | 逻辑运算和关系运算的相同之处和不同之处 |
11/5-11/8 | 6h | 210 | 多分支结构中的swtich结构的运用 | swtich语句配合其他的术语运用 |
11/12-11/16 | 9h | 151 | do-while,while循环语句和continue语句 | while语句的深入运用 |
11/19-11/22 | 10h | 163 | 熟悉break、continue的使用及熟悉使用循环的嵌套解决问题 | 对于嵌入的多重用法 |
11/26-11/29 | 8h | 187 | 一些运算符的应用 | 不会使用结构体 |
12/3-12/6 | 9h | 214 | 自动变量,静态变量,局部变量和全局变量 | 这些变量怎么使用还是不明白 |
3.2累计代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第六周 | 43 | 436 |
第七周 | 84 | 857 |
第八周 | 106 | 1352 |
第九周 | 168 | 1427 |
第十周 | 159 | 1938 |
第十一周 | 173 | 2107 |
第十二周 | 210 | 2451 |
第十三周 | 151 | 2126 |
第十四周 | 163 | 3451 |
第十五周 | 187 | 4362 |
第十六周 | 214 | 6872 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
学习C语言的初期重点要放在掌握语言的语法和规定上,一定要养成良好的编程习惯,平时写程序注意语法规范格式控制,格式规范了,出了错误也容易找 到出错的地方,这是C语言的基础;后期的重点要转移到掌握编程的思路和基本算法上来。课后多做习题,找一些经典例子尝试自己编写,写程序切忌半途而费,想到一个思路,就要按自己思路把它写完,就算错了,也可以让自己了解为什么这样做会错?错在哪里?会出什么结果?以后自己也很难在这个地方犯同样的错误。当学到一个新的知识点,就试着把它运用到以前做的习题上,不但巩固了以前学的内容,也更加能加强新知识的理解。