这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业08 |
我在这个课程的目标是 | 学习C语言,码代码,为后面的学习打好基础 |
这个作业在哪个具体方面帮助我实现目标 | 更加了解编程及代码题的编写 |
参考文献 | PTA系统常见问题解答;C语言基础知识;whlie |
1.PTA实验作业
1.1 jmu-c-二进制转10进制
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!
1.1.1数据处理
数据表达:用了变量num,i,item,sum,s,其中num表示二进制字符,sum表示十进制数,s表示用于之后的输出计算;其中#include<string.h>为用字符串处理函数的头文件;其中%s为字符串型格式符。
数据处理:伪代码
include<stdio.h>
include<math.h>
include<string.h> 运用到了字串符头文件
int main()
{
定义字符型变量num;整形变量i,item,sum,s
将新取值1赋值给s,将0赋值给sum
输入num
运用for循环
for(i=0;num[i]>0;i++)
{
如果num[i] 不等于'0' 并且 num[i]不等于'1'
{
item=1;
输出("error input!");
跳出循环
}
end if
}
定义整形变量a
a = strlen(num);
如果item等于0
{
for(i = a-1;i >= 0;i--)
{
sum等于sum+s*(num[i]-'0');
s等于s乘以2
}
end if
输出sum
}
end for
return 0;
}、、、、
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
111111111 | 511 | 输入二进制字符 |
222 | error input! | 输入非二进制字符 |
1100111 | 103 | 输入二进制字符 |
1110001110011 | 7283 | 输入二进制字符 |
1.1.4PTA提交列表及说明
1.编译错误:无#include<string.h>这个字符串处理函数的头文件
2.编译错误:将for循环中的分号打成逗号,导致错误
3.编译错误:有一个输出的末尾处无分号,导致错误
4.编译错误:将变量num写成了number
5.编译错误:在for循环后面未打上大括号
6.编辑错误:与上面的问题一样,导致连续错误
7.答案正确:通过Dev-C++终于将错误改正:添加头文件#include<string.h>;换逗号为分号;找准大括号的摆放位置
1.2 整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。
输入格式:
输入在一行中给出一个不以5结尾的正奇数x(<1000)。
输出格式:
在一行中输出相应的最小的s和n,其间以1个空格分隔。
输入样例:
31
输出样例:
3584229390681 15
1.2.1 数据处理
数据表达:定义整形变量x,n,t,a,b;其中s与n为输出的相应的值
数据处理:伪代码
include<stdio.h> 头文件
int main(void)
{
定义整形变量x,n,t,a,b;令n=0;a=1;b=0;将新取值赋给n,a,b
输入一个整数x
while(1)所取整数永远不会等于0
{
t等于a除以x;
a对10求余赋值给x
n++;
if b条件或者t条件满足
{
输出最小值t(即题中所说的最小值s)
b = 1;
}
end if
if a等于0
{
输出最小值n
跳出循环
}
a等于a乘10再加上1
}
end if
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
33 | 3367 6 | 不以5结尾的正奇数x(x>30) |
79 | 14064697609 13 | 不以5结尾的正奇数x(x<80) |
11 | 1 2 | 不以5结尾的正奇数x(x<20) |
101 | 11 4 | 不以5结尾的正奇数x(x>100) |
1.2.4 PTA提交列表及说明
1.格式错误:由于PTA显示位置在scanf语句中,所以直接将该条语句直接删除,而未发现是后面引导的语句有错误
2.浮点错误:删除scanf语句后导致出现浮点错误
3.格式错误:将scanf语句继续添加进代码中,由于缺少输入语句
4.答案正确:最后通过Dev-C++检测知道是由于第18 行代码中的输出中未打出空格
2.代码互评
同学代码截图
自己代码截图
1.同学代码运用了变量sum,x,N;其中该同学的x变量与我的代码变量count意义相同,均表示其各位数字之和
2.我的代码中将count,sum,N三个变量的初始值均赋为0,而同学代码中是将其中sum,x变量的初始值赋为0
3.在代码中我用到了printf("Enter N:");而在同学代码中未发现该行代码,所以知道了这行代码是可以删除的代码
同学代码截图
自己代码截图
1.同学代码运用的是while循环语句,而我的代码是运用了for循环语句中镶嵌if-else语句
2.同学代码将time作为输出变量并将x=0提前赋值给time变量,而我的是将0赋值给输出变量i
3.同学代码中还用到了break跳出循环语句,而我的直接是if-else语句改变条件
3.学习总结
3.1学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第五周 | 3小时 | 17行 | 初期开始学习“Hello World!" | 不知道如何开始编译 |
第六周 | 10小时 | 27行 | 提问的智慧及编译器的下载 | 编译格式问题 |
第七周 | 10小时 | 95行 | 流程结构类型及变量类型分类方法 | 代码分析不明白以及编译格式问题 |
第八周 | 13小时 | 115行 | 循环程序设计及Dev-C++编译运行等方法 | 用专业术语将代码解释出来及各种赋值运用 |
第九周 | 15小时 | 165行 | 四种流程结构及主调,被调函数,实参与形参的识别 | PTA作业中题目的编写 |
第十周 | 17小时 | 94行 | 分支结构的部分代码 | PTA作业的编写(真的好难) |
第十一周 | 14小时 | 76行 | switch语句的运用 | switch语句的灵活运用以及PTA作业的编写 |
第十二周 | 18小时 | 147行 | 循环结构程序设计及运用字串符处理代码题 | 有时候对于一些问题的意思很难懂,对于自己的解题速度也有很大问题 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.通过这几周的学习,我发现自己仅仅是通过做课后作业题目来知道自己在哪里有不解哪里知识点比较清晰,也正是通过做题目提高了一点点解题能力
2.我认为在各大佬云集的地方显得是那么的微不足道,别人花一个小时完成一道题目是觉得时间花费多了,而对于我来说用一个小时就能够完成一道题是多么开心的事情,无限的挫败感油然而生
3.在学习中让我感觉到了高中对于物理的那中无奈感,是那种想靠近却又一直有一条鸿沟,让我远远够不着的那种感觉,很让人窒息。