头歌c语言实训项目-循环结构程序设计

简介: 头歌c语言实训项目-循环结构程序设计

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

第1关:求各位数字之积:

题目:

代码思路:

代码表示:

第2关:求阶乘之和:

题目:

代码思路:

代码表示:

第3关:水仙花数:

题目:

代码思路:

代码表示:

第4关:寻找完数:

题目:

代码思路:

代码表示:

第5关:分数求和:

题目:

代码思路:

代码表示:


第1关:求各位数字之积:

题目:

本关任务:计算正整数num的各位上的数字之积。 例如:

输入:2583 经过----(2x5x8x3) 输出:240

输入:102 经过----(1x0x2) 输出:0

输入:136 经过----(1x3x6) 输出:18

代码思路:

代码思路:既然是求各位数字之积,就要把输入的数sum各位数字求出来,那如何求出各位数字呢?既然sum是整型,我们可以用sum%10的方式求出sum的个位整数,而十位即以上的整数则需要sum/10来将其变换为个位。最后用while循环来保证操作的持续实现,且保证其>0

代码表示:

#include<stdio.h>
int main(void)
{  
    /*********Begin*********/
    int num,a,b=1;
      scanf("%d",&num);
      while(num!=0)
      {
          a=num%10;
          num=num/10;
          b*=a;
      }
      printf("%d",b);
    /*********End**********/ 
       return 0;
}

提示:这里的a是用来取得sum各位的整数,然后与被初始化为1的变量b循环相乘得到结果

第2关:求阶乘之和:

题目:

本关任务:编写一个程序,任意输入n,求S=1!+2!+...+n!。 注意:n!表示n的阶乘。0的阶乘等于1,负数的阶乘等于0。 *提示:(n+1)!=n!(n+1)**

例如:

输入:10

输出:4037913

输入:7

输出:5913

输入:-1

输出:0

代码思路:

代码思路:既然是阶乘之和,那就需要一个两层循环,第一层用来循环1~n,第二层用来循环每个数的阶乘,第二层的数 j 就<= i 。注意:这里的s用来表示第二层的阶乘,所以在第二层循环完回到第一层以后要重新初始化为1。

代码表示:

#include<stdio.h>
int main(void)
{  
    /*********Begin*********/
  int n;
    int SUM=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
      int S=1;
      for(int j =1;j<=i;j++)
      {
         S*=j;
      }
      SUM=SUM+S;
    }
    printf("%d",SUM);
    /*********End**********/ 
    return 0;
}

第3关:水仙花数

题目:

本关任务:求出所有的水仙花数。

提示:所谓水仙花数是指一个三位数,其各位数字的立方和等于该数字本身。

例如: 153是一个水仙花数,因为153=1^3+5^3+3^3

例如: 370是一个水仙花数,因为370 = 3^3 +7^3 + 0^3

代码思路:

代码思路:判断一个数是否为水仙花数,首先要看其是否为三位数,可以用for循环筛选,然后就是要计算每一位的立方之和 ,pow (x,y) 函数用来求 x 的 y 次方的值,和上面第一题一样,每一次循环都要/10,以此确保%10可以取得a的所有位值,最后判断各位的立方和是否等于原数

代码表示:  

#include<stdio.h>
  int main(void)
  {  
    /*********Begin*********/
    int a = 0;
    for (a = 100; a < 1000; a++)
    {
    int tmp = a;
    int sum = 0;
    while (tmp)
    {
      sum += (int)pow(tmp % 10, 3);
      tmp /= 10;
    }
        if (a == sum)
    {
      printf("%d ", a);
    }
    }
    /*********End**********/ 
       return 0;
    }

第4关:寻找完数:

题目:

本关任务:一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出1000之内的所有完数。

代码思路:

代码思路:因子之和,首先就要找到因子,我们可以通过遍历的方式,用%找出所有因子(因子一定小于等于原数的一半)然后将其逐个相加,若相加后sum的值等于原数,就将其打印

代码表示:

#include<stdio.h>
int main()
{
    int i, j;
    for (i = 2; i <= 1000; i++)
    {
        int sum = 0;
        for (j = 1; j <= i / 2; j++)
        {
            if (i % j == 0)
                sum += j;
        }   
        if (sum == i)
            printf("%d\n", sum);
    }
  return 0;
}

第5关:分数求和:

题目:

本关任务:编写程序计算 1 - 1/2 + 1/3 - 1/4 + ..... +1/99 - 1/100 的值,并显示出来(保留结果为小数点后三位)。

代码思路:

代码思路:这题可能看起来很复杂,但只要仔细分析其中的逻辑,方法就会很简单。在我看来,单位数相加,双位数相减是这题的难点,我们不妨将其看为一个整体,那么100个相加减的数字就变为了50组有序的相加的数,通过for循环将其分母每次加2即可

代码表示:

#include<stdio.h>
int main()
{
    double sum = 0;
    double a = 1;
    double b = 2;
    double c = 0;
    for (int i = 1; i <= 50; i++)
    {
        c = 1 / a - 1 / b;
        a += 2;
        b += 2;
        sum = sum + c;
    }
    printf("%.3lf", sum);
    return 0;
}


相关文章
|
19天前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
30 1
|
3月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
3月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
3月前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
36 3
|
C# C语言 C++
VS2012编写C语言项目
原文:VS2012编写C语言项目 这两天看了一下C语言方面的知识,大学的时候使用的Turbo C对于我来说已经是很久之前的事情了,编写C语言的还有VC++,不过这货在64的表现实现是很让人失望,还是用最熟悉的VS吧,之前没有用VS搞过C语言,今天倒腾了一下,重点分享一下自己的过程吧。
648 0
|
1天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
22 6