这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10130 |
我在这个课程的目标是 | 学会用正确的语法格式进行编程,锻炼能力,学好C语言,学会如何调用函数和定义函数 |
这个作业在那个具体方面帮助我实现目标 | 习题的练习,代码互评,思维导图的绘制,培养了思维逻辑能力 |
参考文献 | 百度,C语言程序与设计,C Prime Plus |
1.PTA实验作业
1.1题目一:统计某类完全平方数
1.2数据处理
数据表达:result,sum,i,m,flag为整形变量,其中sum,flag定义初始值;并用了for和while的循环语句,还用了if语句,根据题目要求满足条件则return1,否则 return0;if(pow(result,2)==N)这条语句判断该值是否等于N,缩小范围。
数据处理:
伪代码:
int IsTheNumber(const int N)
int result,sum,i,m,flag //定义变量
sum=0;
flag=0; //定义初始值
m=N;
if(N<0) //作为判断条件
return 0;
else
result=sqrt(N); //求平方根
if(pow(result,2)N)
for(i=0;i<=9;i++)
while(!(m0))
if(m%10i) //寻找相应的数
sum++;
m=m/10
if(sum>=2)
flag=1;
m=pow(result,2);
sum=0;
if(flag1) //作为判断标志
return 1;
return 0
End
1.3PTA实验代码截图
1.4PTA提交列表及说明
说明:在做这些题的之前,我会在Dev-C++上做到答案正确才把答案写上去,故没有什么错误;但有一些重要的语法点还是要知道的:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等;开始时在Dve-c++上输入题目的输入题目的输入样例后发现输出来的cnt为12不符合输出样例,然后不断讲输入的范围减小发现一个不符合条件的数169让cnt增加了一,然后进行调试,在自定义函数那里设置断点输入169 169,添加查看变量flag,i,cnt,不断点击下一步,发现当i=9的时候flag还是等于0,继续点击下一步发现在经过if(flag=1)后flag突然等于1然后进入了if语句内返回了1,然后发现if(flag=1)应改为if(flag==1);
1.5造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 验证是否正确 |
108 600 | cnt = 6 | 增加实验结果的可靠性 |
225 800 | cnt =5 | 增加实验结果的可靠性 |
1.1.1题目二:统计各位数字之和是5的数 | ||
![]() |
1.1.2数据处理
数据表达:i,sum,cnt用整型变量定义,其中sum,cnt定义初始值为0;运用了if-else的嵌套结构,循环语句for,调用两个函数void count_sum(int a,int b)和int is(int number);最后用语句if(s==5)作为判断条件,成立return 1不成立return 0;
数据处理:
伪代码:
void count_sum(int a,int b)
int i,sum,cnt; //定义变量
sum←0; //定义初始值
cnt←0;
for i←a to b //作为循环条件
if(is(i))
cnt←cnt+1;
sum←sum+i; //累加,计数
printf("count ← %d, sum ← %d",cnt,sum); //输出对应的数
int is(int number)
int m,n,s; //定义变量
s←0;
n←number;
while(!(n←0)) //作为判断循环是否终止
m←n%10;
n←n/10;
s←s+m;
if(s←5) //判断条件是否成立
return 1;
else
return 0;
End
1.1.3实验代码截图
1.1.4造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted.count = 15, sum = 3720 | 验证是否正确 |
203 888 | 203 is counted.count = 10, sum = 3110 | 增加实验结果的可靠性 |
500 666 | 500 is counted.count = 1, sum = 500 | 增加实验结果的可靠性 |
1.1.5PTA提交列表及说明
Q1:格式错误,该空格的地方没有空格
A1:正确格式为printf("count = %d, sum = %d",cnt,sum),因为输入样例和输出样例给出的数据空了格
说明:在做这些题的之前,我会在Dev-C++上做到答案正确才把答案写上去,故没有什么大的错误;有些地方我还是值得学习的,如改了几次才知道是第二个函数中间函数出了问题,于是把第二段函数全删了,重新弄(有过忘记打上计数的代码、忘记给变量赋值);while语句终止条件错误,写成了n!=0。
2.代码互评
同学代码:
我的代码:
互评结果:
- 他的代码更加简洁,主要是用了数组的有关知识;
- 现阶段,我的代码更能让人理解;
- 通过这次比较,我还许多方面向他学习;
同学代码:
我的代码:
互评结果:
- 总体内容上差不多,只是调用的函数的顺序不同;
- 一些较长的单词我还是建议用一个字母进行表示,方便;
- 他使用的是do-while语句,而我的是while语句,结构上有些区别;
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
第一周 | 2小时 | 30行 | 如何空格,控制字符 | 编译的格式 |
第二周 | 2.5小时 | 40行 | 求华氏温度 | printf的使用方法 |
第三周 | 4.5小时 | 80行 | 分段函数的编写 | if-else不能灵活使用 |
第四周 | 2天 | 90行 | 循环语句for的使用 | 不会正确的变形,理不清题意 |
第五周 | 2天 | 200行 | 水仙花数的表示方法;个位数字平方和的表示方法 | 对陌生的概念不太了解,难以正确编程 |
第六周 | 2天 | 260行 | if与else语句与for语句的综合使用,逻辑运算符,字符型char | 题意与如何构思能力还有待提高 |
第七周 | 2天 | 220行 | switch语句的使用,以及一些常见的格式 | 不能正确的编程,如何解决问题的能力还有待提高 |
第八周 | 2天 | 230行 | 如何用do-while语句和while语句,并区分与for语句的不同地方 | 题意还是不能完全读懂,难以正确的编程 |
第九周 | 3天 | 280行 | 如何使用for语句的循环嵌套结构,并学了break与coutinue之间的区别 | 题意还是不能完全读懂,题意与如何构思能力还有待提高 |
第十周 | 3天 | 300行 | if-else,coutinue,break,for循环嵌套的综合应用 | 难以编程出与题意相符的代码,如何解决问题的能力还有待提高 |
第十一周 | 4天 | 400行 | 函数的定义与调用,全局变量和局部变量的定义,变量的生存期及作用域 | 如何调用函数,怎样区分局部变量和全局变量 |
3.2 累积代码行和博客字数
思维导图:
内容总结:
- 明白一些常见的错误类型,如答案错误表示与题意输出的内容不符或输出的结果不同,编译错误常见的问题是标点符号不打或打错,运行超时的常见问题是输入了不要输入的内容,多种错误常见的问题是多定义了一些没有用到的变量,且再编程上还出现了语法错误;
- 学会如何用整型,浮点型,字符型定义变量,并学会用从字符A开始的语句,运用for语句的循环嵌套结构解题;
- 函数的调用和定义是一个难点,全局变量和局部变量怎样区分,静态变量和动态变量的区别;
- 数据区分为静态存储区和动态存储区,其中自动变量只能在函数内或复合语句中;
3.3感悟:
- C语言是一门语言,要想学好学会就要多加练习,要从本质上分析问题并解决问题
- 学习过程中会遇到一些难题,这时就离不开老师与同学的帮助,多问还是有必要的
- 做题过程中会遇到许多未学过的知识,这就需要我们多看课外书并预习课本上还没教的知识
- 重要的是逻辑思维能力的培养,但又是一个难点,需要我们平时不断去摸索,运用所学的知识灵活的解决问题;
3.4学习体会
- C语言中如何正确使用for语句的循环嵌套结构和coutinue,break的综合应用,对于初学的我只能不断搜集资料;
- 函数的调用和定义把前面所学的知识都汇聚到了一起,对于我们只能慢慢的去理解,多想想老师上课所讲的内容;
- 有时我甚至连题意都没有弄懂,在同学的帮助下我还是明白了许多;
- 在这门功课上,我们需花大量的时间来练习并巩固已学知识;
- 同时我也希望老师在上课的时候多讲几个习题助于我们理解;
- 当然我也会去图书馆去阅读一些相关资料来提升自己;