头歌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;
}


相关文章
|
9月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
381 16
|
9月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
214 18
|
9月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
214 3
|
9月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
180 2
|
9月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
154 1
|
IDE 开发工具 C语言
C语言 第五章 循环结构练习
一、计算15+16+17 …98+99的和 for实现 #include "stdio.h" void main() { //15+16+17 …98+99 int i,s=0; for(i=15;i='a'&&str[i]='A'&&str[i]='0'&&...
1183 0
|
23天前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
587 0
|
3月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
251 15
|
9月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
385 23
|
8月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
211 1
一文彻底搞清楚C语言的函数