• 【实战练习】上几道C语言的下酒菜!经典例题,巩固基础!


    ➢ 求完数

    题目:一个数如果恰好等于它的因子之和,这个数就称为完数,C语言编程找出1000之内的所有完数,并输出其因子。 

    解题思路:6的因子为1,2,3,而6=1+2+3,因此6是“完数”,1不用判断,直接从2开始,因为1的因子只有1。

    源代码演示:

    #include<stdio.h>//头文件 
    
    int main()//主函数 
    
    {
    
    int number,s,i;//定义变量 
    
      for(number=2;number<1000;number++)//for循环 
    
      {
    
        //直接从2开始
    
        s=0;
    
        for(i=1;i<number;i++)
    
        {
    
          //检查i是否是m的因子 
    
          if((number%i)==0)
    
    { 
    
          //如果是的话 
    
            s=s+i;
    
    } 
    
          }
    
        if(s==number)
    
        {
    
          printf("%d的因子为:",number);
    
          for(i=1;i<number;i++)
    
    { 
    
            if(number%i==0)
    
    { 
    
              //判断是否是因子,是的话就输出 
    
              printf("%d ",i);
    
            }
    
    } 
    
            printf("
    ");//换行 
    
          }
    
        }
    
      return 0;//主函数返回值为0 
    
    }

    ——————————

    编译运行结果如下:

    6的因子为:1 2 3

    28的因子为:1 2 4 7 14

    496的因子为:1 2 4 8 16 31 62 124 248

    ➢ 求某个数列前20项和

    题目:有一个分数列:2/1,3/2,5/3,8/5,13/8,21/13...,C语言编程求出这个数列的前20项之和。 

    解析思路:读者看着道题的时候,首先要观察一下有什么规律,这种类型的题都是有规律的,先观察出来规律,然后思考怎么写代码。

    源代码演示:

    #include//头文件 
    
    intmain()//主函数 
    
    {
    
      int i;//定义整型变量,用于for循环 
    
      double a=2,b=1,sum=0,temp;//定义双精度浮点型变量 
    
      for(i=1;i<=20;i++)//for循环 
    
      {
    
        sum=sum+a/b;//分母为前面的分子和分母之和 
    
        temp=a;
    
        a=a+b;
    
        b=temp;//分子为前面的分母 
    
      }
    
      printf("sum=%7.7f
    ",sum);//输出和 
    
      return 0;//主函数返回值为0 
    
    }

    ————————

    编译运行结果如下:

    sum=32.6602608

    ➢ 输出水仙花数

    题目:C语言编程输出100-1000之间所有的“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

    解题思路:153是一个水仙花数,因为153=1^3+5^3+3^3,逐个位数判断即可,写代码的时候要考虑到每一位。

    源代码演示:

    #include//头文件 
    
    intmain()//主函数 
    
    {
    
      int i,j,k,narcissistic_Number;//定义整型变量 
    
      printf("水仙花数是:
    ");//提示语句 
    
      //小林这里要测试的100~1000之间的水仙花数 
    
      for(narcissistic_Number=100;narcissistic_Number<1000;narcissistic_Number++)
    
    { 
    
        i=narcissistic_Number/100;//百位数字 
    
        j=narcissistic_Number/10-i*10;//十位数字 
    
        k=narcissistic_Number%10;//各位数字 
    
        if(narcissistic_Number==i*i*i+j*j*j+k*k*k)//符合其各位数字立方和等于该数本身
    
        {
    
          printf("%d ",narcissistic_Number);//输出这个数 
    
        }
    
    } 
    
      printf("
    ");//换行 
    
      return 0;//主函数返回值为0 
    
    }

    ————————

    编译运行结果如下:

    水仙花数是:153 370 371 407

    ➢  求1!+2!+3!+...20!

    题目:C语言编程求1!+2!+3!+...20!

    解题思路:sum不应该定义为int或者long型,假如使用的编译器是Visual C++6.0时,int和long型数据在内存都占4个字节,数据的范围在 -21亿~21亿。如果将sum定义为double型,以得到更多的精度。在输出时,用22.15e格式,使数据宽度为22,数字部分中小数位数为15位。

    源代码演示:

    #include//头文件 
    
    intmain()//主函数 
    
    {
    
      double sum=0,temp=1;//双精度浮点型变量 
    
      int i;//定义整型变量 
    
      for(i=1;i<=20;i++)//for循环 
    
      {
    
        temp=temp*i;
    
        sum=sum+temp;
    
      }
    
      printf("结果:%22.15e
    ",sum);//输出结果,注意输出的格式 
    
      return 0;//主函数返回值为0 
    
    }

    ————————

    编译运行结果如下:

    结果:2.561327494111820e+018


     

    最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

    【值得关注】我的 C/C++编程学习交流俱乐部!【点击进入】

    问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

  • 相关阅读:
    java--堆栈
    git 修改默认编辑器
    java 二维数组的行列长度
    公钥私钥
    手机是如何定位的
    Git和svn的区别
    面试未解之谜
    删除单链表中重复元素
    深入分析事务的隔离级别
    传送
  • 原文地址:https://www.cnblogs.com/huya-edu/p/14292483.html
Copyright © 2020-2023  润新知