C语言I博客作业08
| 问题 | 答案 | 
|---|---|
| 这个作业属于那个课程 | C语言程序设计II | 
| 这个作业要求在哪里 | C语言I博客作业08 | 
| 我在这个课程的目标是 | 熟练掌握C语言 | 
| 这个作业在哪个具体方面帮助我实现目标 | 学会并熟练掌握了while循环 | 
| 参考文献 | Markdown基本语法 | 
一.PTA实验作业

1. 求整数的位数及各位数字之和
题目内容描述:对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
 输入在一行中给出一个不超过10的9次方的正整数N。
####### 输出格式:
 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
 321
输出样例:
 3 6
(1)数据处理
 数据表达:
     用了整形变量R,N,i=0,sum=0
     N是用户传入的要求计算的数
     sum、i分别用来保存用户要求输出的正整数N的位数和用户要求输出的正整数N的各位数字之和
     R用来取余
数据处理:伪代码
 定义变量N来放用户传入的要求计算的数,R用来取余,i用来保存用户要求输出的正整数N的位数并且对它初始化为0,sum用来保存用户要求输出的正整数N的各位数字之和并且对它初始化为0,
 输入数N
     while(N>0)    
         取出N的最后一位数赋值给R 
         将去除N最后一位数后的数后赋值给N 
         计算N的位数赋值给i 
         将N的各位数字加起来赋值给sum
      end while 
     输出题目要求的正整数N的位数和N的各位数字之和
 end 
(2)实验代码截图

(3)造测试数据
| 输入数据 | 输出数据 | 说明 | 
|---|---|---|
| 10001 | 5 2 | 数字中间有连续0 | 
| 999999999 | 9 81 | 最大N | 
| 1 | 1 1 | 最小N | 
| 982 | 3 19 | 随机实验 | 
(4)PTA提交列表及说明

提交列表说明
 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)数据处理
 数据表达:用了变量x=0,s=1,n=0,i=0
     x为用户要求输入的值
     s用来储存符合要求的最小光棍
     n用来储存最小光棍的位数
数据表达:伪代码
 定义变量x用来放用户要求输入的值,s用来储存符合要求的最小光棍并且对它初始化为1,n用来储存最小光棍的位数并且对它初始化为0 
 输入题目要求的x 
     while(1)                 
	     if(s/x>0||i)    Then   输出s/d        对i加上1后赋值给i                   
         if(s%x==0)      Then   输出n+1        
         else            
                         对将s除以x的余数赋值给s
		                 对n加上1并赋值给n
     end whlie
 end		     
(2)实验代码截图

(3)造测试数据
| 输入数据 | 输出数据 | 说明 | 
|---|---|---|
| 999 | 111222333444555666777889 27 | 最大x | 
| 111 | 1 3 | x是光棍 | 
| 1 | 1 1 | 最小x | 
(4)PTA提交列表及说明

提交列表说明
 1.部分正确:因循环太多次超过了规定的0.40S时间限制,未做改动。
 2.部分正确:重新整理思路在while中加入一个if和一个if-else语句使循环次数减少
二.代码互评
同学(彭杰)代码:

同学(柏朝晖)代码

自己代码:

比较
 (1)第一份代码用了数组而我只用了while语句,结构上该同学的更加整洁美观,但我的更加简单。
 (2)第二份的代码有23行,而我的只有15行所用空间更少。
 (3)第二份用的for循环与if-else语句,而我只用了while循环,我的代码更简单,容易懂。
三.学习总结
1.学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 | 
|---|---|---|---|---|
| 第四周 | 7小时 | 100行 | 在屏幕上显示Hello World! | 暂无 | 
| 第五周 | 8小时 | 100行 | 求华氏温度对应的摄氏温度 | 暂无 | 
| 第六周 | 30小时 | 200行 | 如何用 MinGW-w64 来编译C程序 | 暂无 | 
| 第七周 | 24小时 | 300行 | 运用if语句完成各种数学程序 | 对于&&的用法不了解 | 
| 第八周 | 24小时 | 300行 | 学会了for循环语句 | 暂无 | 
| 第九周 | 24小时 | 300行 | 学会了如何去自定义一个函数 | 暂无 | 
| 第十周 | 30小时 | 400行 | 学会了if-else语句的嵌入 | 对“(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真”这句话不是很懂 | 
| 第十一周 | 24小时 | 450行 | 学会了如何去使用switch语句来做编程题 | 暂无 | 
| 第十二周 | 24小时 | 450行 | 学会了如何去使用while循环来做编程题 | 对字符型的输入不太了解 | 
2. 累积代码行和博客字数
| 时间 | 博客字数 | 代码行数 | 
|---|---|---|
| 第四周 | 510 | 100 | 
| 第五周 | 510 | 200 | 
| 第六周 | 1149 | 400 | 
| 第七周 | 2027 | 700 | 
| 第八周 | 3791 | 1000 | 
| 第九周 | 5294 | 1300 | 
| 第十周 | 6900 | 1700 | 
| 第十一周 | 8614 | 2150 | 
| 第十二周 | 10495 | 2600 | 
|  | 
3 .学习内容总结和感悟
(1)学习内容总结

(2) 学习体会
这一次虽然PTA题目比上一次多了2题但是我还是很快的做完了,说明在慢慢的进步,虽然数学思维有点跟不上,但是我会继续努力的。虽然这次博客园更新导致未能在8点前提交让我心态有点炸了,但是我没有产生反正已经加不了分了慢慢拖着做的想法。

 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号