zoukankan      html  css  js  c++  java
  • C语言I博客作业08

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 C语言I作业08
    我在这个课程的目标是 掌握C语言
    这个作业在那个具体方面帮助我实现目标 对循环语句的练习
    参考文献 《C语言程序设计(第三版)》《算法笔记》

    1.PTA实验作业

    1.1 求整数的位数及各位数字之和

    对于给定的正整数N,求它的位数及其各位数字之和。

    输入格式:
    输入在一行中给出一个不超过10的九次方的正整数N。

    输出格式:
    在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

    输入样例:

    321
    

    输出样例:

    3 6
    
    1.1.1数据处理

    数据表达:本题用了四个整型变量,其中n表示输入的数,one表示n对10取余的每位数,sum表示每位数的和,count表示n的位数;
    数据处理:
    伪代码

    Inout (n);
    对count,sum进行初始化
    while(n>0)
    用n循环对10取余计算出各位数并将各位数相加求出sum以及没运算一次就count加一后n除以10取整;
    Output (count sum)
    end。
    
    1.1.2实验代码截图

    1.1.3 造测试数据
    输入数据 输出数据 说明
    321 3 6 题目的测试样例
    518 3 14 随机数
    20192929 8 34 随机数
    1.1.4 PTA提交列表及说明

    提交列表说明:

    1.答案错误:输入前没对sum初始化。。。令sum=0。

    1.2 韩信点兵

    在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

    • 按从1至5报数,记下最末一个士兵报的数为1;
    • 再按从1至6报数,记下最末一个士兵报的数为5;
    • 再按从1至7报数,记下最末一个士兵报的数为4;
    • 最后按从1至11报数,最末一个士兵报的数为10;
      请编写程序计算韩信至少有多少兵。

    输入格式:
    本题无输入

    输出格式:
    输出韩信至少拥有的士兵人数

    1.2.1 数据处理

    数据表达:本题用了一个整型变量n用来表示计算所得的人数。
    数据处理:
    伪代码

    初始化n=1;
    while(n)
    if((n%5==1)&&(n%6==5)&&(n%7==4)&&(n%11==10)
    如果n能除以5余1,除以6余5,除以7余4,且除11余10;
    end
    else
    n=n+1;
    如果n不能除以5余1,除以6余5,除以7余4,且除11余10,n就加一
    返回到if
    end
    
    1.2.2 实验代码截图

    1.2.3 造测试数据

    无论怎么运行都是2111,

    1.2.4 PTA提交列表及说明

    提交列表说明:
    1.正确:之所以写这道题是因为刚开始想了很久都没想清这题是干嘛,后来又想了很久才知道是要我求能除以5余1,除以6余5,除以7余4,且除11余10的最小数是多少,想明白后写就直接对了。

    1.3挑战进阶题:整除光棍

    这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由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.3.1 数据处理

    数据表达:本题用了四个整型变量以及一个字符型数组,n为输入的数,len为光棍数的长度,m为光棍数,p为字符型数组的单元数。
    数据处理:
    伪代码

    Input(n)
    while (1)当为真时执行循环
    len=len+1;计算光棍数位数
    if(p||m/n)
    a[p++]='0'+m/n;保存商,转化为字符
    m%=n
    end if;
    if(m==0)
    a[p]=''将字符串要加上字符串结束符 
    Output(a,len)
    end
    now=now*10+1;![](https://img2018.cnblogs.com/blog/1807187/201911/1807187-20191116095033860-1521010468.png)
    
    END
    
    1.3.2 实验代码截图

    1.3.3 造测试数据
    输入数据 输出数据 说明
    31 3584229390681 15 题目的测试样例
    23 48309178743961352657 22 随机数
    21 5291 6 随机数
    1.3.4 PTA提交列表及说明

    1.正确:本题有两个关键点,一个是取余一个是乘10加1,其中取余用来判断能否整除,乘10加一是光棍数。

    2.代码互评

    同学代码截图

    自己代码截图

    • 1.由于最近在练习字符,数组和结构体,我在这道题上的数用的是字符表示;
    • 2.该同学的解题思路清晰,过程简单,反而我用了字符还要转化什么的。

    3.学习总结

    3.1 学习进度条
    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    7/7-7/13 10 小时 235 循环语句for的使用以及格式
    8/14-8/20 8小时 197 定义全局变量
    9/21-9/27 17小时 537 函数的调用
    10/28-10/3 16小时 411 数据类型的回顾
    11/4-11/10 24小时 1089 数组以及一些算法
    12/11-12/17 8小时 453 结构体
    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟
    3.3.1 学习内容总结

    3.3.2 学习体会

    上周末去了毅行,虽然走完后很锻炼自己,但本周过的很疲惫,什么也不想干,而且Dev编译器还出了问题,花了很多时间去试了各种编译器,但还是学习了结构体以及结构体数组的应用。周末调整。

  • 相关阅读:
    I-Cache和D-cache
    socat使用
    反射
    属性方法
    getitem
    文件打开编辑和函数参数
    python3编码问题个人理解
    正文内容 python3编码问题
    进度条制作
    集合关系
  • 原文地址:https://www.cnblogs.com/lidinghong/p/11862710.html
Copyright © 2011-2022 走看看