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组成的数字,比如1111111111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出358422939068115,因为31乘以3584229390681的结果是111111111111111,一共151

输入格式:
 输入在一行中给出一个不以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点前提交让我心态有点炸了,但是我没有产生反正已经加不了分了慢慢拖着做的想法。

posted @ 2019-11-14 21:54  sun-梦  阅读(343)  评论(8编辑  收藏  举报