zoukankan      html  css  js  c++  java
  • 第十周编程总结

    7-1 求奇数和 (15 分)

    本题要求计算给定的一系列正整数中奇数的和。

    1).实验代码

    #include<stdio.h>

    int main()

    {

      int N,sum,i;

      i=1;

      sum=0;

      scanf("%d",&N);

      while(N>0){

        if(N%2!=0){

          

          sum+=N;

          scanf("%d",&N);

        }

        

        else {

          scanf("%d",&N);

          

        }

      }

      

      printf("%d",sum);

      return 0;

      

    }

    2). 设计思路

    第一步:定义变量

    第二步:输入变量

    第三步:调用while语句,判断奇数,累加奇数

    第四步:输出答案

    3).本题调试过程碰到的问题及解决方法

                

     

    -

            问题:在调用while语句前,没有给N赋值

           解决方法:赋值给N

           4).运行结果截图

      

          

    7-3 韩信点兵 (10 分)

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

    · 按从1至5报数,记下最末一个士兵报的数为1;

    · 再按从1至6报数,记下最末一个士兵报的数为5;

    · 再按从1至7报数,记下最末一个士兵报的数为4;

    · 最后按从1至11报数,最末一个士兵报的数为10;

    请编写程序计算韩信至少有多少兵。

    1)实验代码

     

    #include<stdio.h>

    int main()

    {

      int N=0;

      while((N%5!=1)||(N%6!=5)||(N%7!=4)||(N%11!=10)){

        N++;

      }

      

      printf("%d ",N);

      return 0;

    }

    2).设计思路

    第一步:定义变量

    第二步:调用while语句进行兵数判断

    第三步:输出答案

    3) .本题调试过程碰到的问题及解决方法

               

                   

              问题:while语句的条件使用错误

              解决方法:更改条件

           4).运行结果截图

     

    7-2 求整数的位数及各位数字之和 (15 分)

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

    1).实验代码

    #include<stdio.h>

    int main()

    {

      int number=0,N,sum=0,amount=0;

      scanf("%d",&N);

      while(N!=0){

        number=N%10;

        N=N/10;

        sum+=number;

        amount++;

      }

      

      printf("%d %d",amount,sum);

      return 0;

      

    }

    2).设计思路

    第一步:定义变量

    第二步:输入变量

    第三步:调用while语句,进行循环

    第四步:取余得到个位数,取整赋值,得到除个位数的其他位数,继续取余得到其他位数,累加各位数字,计算位数

    第五步:输出答案

    3).本题调试过程碰到的问题及解决方法

     

     

    问题:变量没有初始化

    解决方法:将变量初始化

    4).运行结果截图

             

     

    7-4 整除光棍 (20 分)

    这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

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

    2).实验代码

    #include<stdio.h>

    int main()/*模拟竖式计算*/

    {

    int m,n,dividend=1,i=0,t,count=0;

    scanf("%d",&m);

    while(1){

    t=dividend/m;      //t是商

    dividend%=m;       //取余

    count++;           //每次循环计算位数

        if(i||t){          //等价于if(i!=0||t!=0),排除一开始商是0的情况,判断条件千万不能用商,商有0状态

         printf("%d",t);

         i=1;

    }

    if(dividend==0){

    printf(" %d ",count);   //余数为0,结束循环,输出结果

    break;

    }

    dividend=dividend*10+1;      //模拟被除数为 “光棍 ”

    }

    return 0;

    }

    2). 设计思路

    第一步:模拟竖式计算,定义变量

    第二步:输入变量

    第三步:调用while语句进行无限循环,取商,取余,每次循环计算位数

    第四步:排除一开始商是0的情况,

    第五步:输出商的值

    第六步:当余数为零时结束循环,打印光棍位数

    3).本题调试过程碰到的问题及解决方法

            问题:没有考虑到商有0的状态

           解决方法:再定义一个变量,排除商有0的情况而导致无法打印

           4).运行结果截图

      

  • 相关阅读:
    转 | 禁忌搜索算法(Tabu Search)求解带时间窗的车辆路径规划问题详解(附Java代码)
    Branch and price and cut求解传统VRP问题以及VRPTW问题
    标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)
    运筹学从何学起?如何快速入门精确式算法?
    转 | 模拟退火算法(SA)和迭代局部搜索(ILS)求解TSP的Java代码分享
    用Python画论文折线图、曲线图?几个代码模板轻松搞定!
    45. 截取“测试数据”后面的内容
    44. 更改oracle字符集编码american_america.zh16gbk 改为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    18. 浏览器关闭页面时弹出“确定要离开此面吗?”
    6. concat_ws用法
  • 原文地址:https://www.cnblogs.com/lmcmha/p/9972756.html
Copyright © 2011-2022 走看看