首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言程序设计——函数】编写函数求解累加和(头歌实践教学平台习题)【合集】

【C语言程序设计——函数】编写函数求解累加和(头歌实践教学平台习题)【合集】

作者头像
Rossy Yan
发布2025-01-01 09:35:12
发布2025-01-01 09:35:12
2780
举报

任务描述

本关任务:编写子函数fun,求1的K次方到N的K次方的累加和。

相关知识

为了完成本关任务,你需要掌握:

  1. 定义子函数
  2. 调用子函数
  3. 求N的K次方
一、定义子函数

在 C 语言中,函数是一段可以重复使用的代码块,用于完成特定的任务。定义子函数的基本语法格式如下:

代码语言:javascript
复制
返回值类型 函数名(参数列表) {
    // 函数体,包含具体要执行的语句
    语句1;
    语句2;
    // ......
    return 返回值;
}
1. 返回值类型

它指定了函数执行完后返回的数据类型,可以是基本数据类型(如 int(整型)、float(单精度浮点型)、char(字符型)等),也可以是指针类型、结构体类型等自定义的数据类型。例如,如果函数要返回一个整数结果,就将返回值类型声明为 int;如果函数只是执行一些操作,不需要返回具体的值,那么返回值类型应写为 void,表示无返回值。

2. 函数名

是函数的标识符,遵循 C 语言中标识符的命名规则,通常由字母、数字和下划线组成,且不能以数字开头。函数名应该具有一定的表意性,方便阅读代码时能大致了解函数的功能,比如 calculateSum 这样的名字能让人猜到它可能是用于计算求和的函数。

3. 参数列表

参数列表用于向函数内部传递数据,多个参数之间用逗号隔开。参数包含参数类型和参数名两部分,例如 int num1, int num2 就表示函数接受两个整型参数。参数在函数被调用时会被赋予相应的值,这些值可以在函数体内参与运算等操作。如果函数不需要接收外部传入的数据,可以将参数列表写成 void 或者直接留空括号 ()

4. 函数体

被花括号 {} 括起来的部分就是函数体,里面包含了一系列执行具体功能的语句,比如变量定义、赋值操作、算术运算、控制结构(如 if 语句、for 循环等)等语句。

如果函数有返回值类型不是 void,那么函数体中需要通过 return 语句返回对应类型的值,return 语句的作用一是结束函数的执行,二是将指定的值返回给调用该函数的地方。例如:

代码语言:javascript
复制
int add(int a, int b) {
    int sum = a + b;
    return sum;
}

这个函数名为 add,接受两个整型参数 ab,在函数体中计算它们的和并存储在变量 sum 中,最后通过 return 语句返回这个和。

二、调用子函数

当定义好一个函数后,就可以在程序的其他地方调用它来执行相应的功能。

1. 无返回值函数的调用

如果函数的返回值类型是 void,也就是不返回具体的值,调用这类函数主要是为了执行它内部包含的一系列操作。调用格式如下:

代码语言:javascript
复制
函数名(实际参数列表);

例如,假设有一个 void 类型的函数 printHello,用于在屏幕上输出 “Hello”,定义如下

代码语言:javascript
复制
void printHello() {
    printf("Hello\n");
}

可以在 main 函数或者其他合适的地方这样调用它:

代码语言:javascript
复制
int main() {
    printHello();
    return 0;
}

调用时直接写函数名加上括号即可,如果函数有参数,就在括号里填入对应的实际参数值。

2. 有返回值函数的调用

对于有返回值的函数,调用它不仅可以执行函数内部的操作,还能获取它返回的值用于后续的计算或赋值等操作。调用方式同样是 函数名(实际参数列表),不过通常会将函数调用的结果赋值给一个同类型的变量或者直接参与表达式运算。例如,对于前面定义的 add 函数,可以这样调用:

代码语言:javascript
复制
int main() {
    int result = add(3, 5);  // 将add函数返回的和赋值给result变量
    printf("两数之和为:%d\n", result);
    return 0;
}

也可以直接把函数调用放在表达式中使用,比如:

代码语言:javascript
复制
int main() {
    int num = 10;
    num = num + add(2, 4);  // 先调用add函数计算2和4的和,然后与num相加再赋值给num
    printf("新的数值为:%d\n", num);
    return 0;
}

函数调用时传入的实际参数需要与函数定义时的参数列表在类型、个数和顺序上保持对应匹配,否则可能会出现编译错误或者得到不符合预期的运行结果。

三、求 N 的 K 次方

在 C 语言中,求 N 的 K 次方可以通过多种方式实现,以下是常见的几种方法:

1. 使用循环结构(以简单的整数次方为例)

可以利用循环来重复相乘的操作来实现求幂运算。基本思路是让底数 N 自身相乘 K 次。以下是使用for循环实现求NK次方的代码示例

代码语言:javascript
复制
#include <stdio.h>

int power(int n, int k) {
    int result = 1;
    for (int i = 0; i < k; i++) {
        result *= n;
    }
    return result;
}

int main() {
    int n = 2;  // 底数
    int k = 3;  // 指数
    int result = power(n, k);
    printf("%d的%d次方是 %d\n", n, k, result);
    return 0;
}

在上述代码中:

  • 首先定义了一个名为power的函数,它接受两个整型参数n(代表底数)和k(代表指数)。
  • 在函数内部,定义了一个变量result并初始化为 1,因为任何数的 0 次方都为 1,后续通过for循环,循环k次,每次让result乘以n,这样经过k次循环后,result就存储了nk次方的结果,最后通过return语句返回这个结果。
  • main函数中,定义了具体的底数n和指数k的值,然后调用power函数得到计算结果并输出。

也可以使用while循环来实现同样的功能,示例代码如下:

代码语言:javascript
复制
#include <stdio.h>

int power(int n, int k) {
    int result = 1;
    int i = 0;
    while (i < k) {
        result *= n;
        i++;
    }
    return result;
}

int main() {
    int n = 2;
    int k = 3;
    int result = power(n, k);
    printf("%d的%d次方是 %d\n", n, k, result);
    return 0;
}

这里while循环的条件是i < k,只要还没达到指数规定的次数,就持续让result乘以n,并让计数变量i自增,最终实现求幂运算。

2. 使用数学库函数(pow函数)

C 语言的标准数学库<math.h>中提供了pow函数来方便地进行幂运算。其函数原型为double pow(double x, double y);,它接受两个双精度浮点数参数,分别表示底数和指数,返回值也是双精度浮点数,表示xy次方的结果。以下是使用pow函数的示例代码:

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

int main() {
    int n = 2;
    int k = 3;
    double result = pow((double)n, (double)k);  // 需要将整型参数强制转换为双精度浮点数类型
    printf("%d的%d次方是 %.0lf\n", n, k, result);  // %.0lf表示以整数形式输出浮点数(舍去小数部分)
    return 0;
}

在这段代码中:

  • 因为pow函数要求传入的参数是双精度浮点数类型,所以如果要计算整数的幂次方,需要先将整型的底数和指数通过强制类型转换为double类型后再传入pow函数。
  • 最后输出结果时,根据需求可以选择合适的格式化输出方式来展示结果,这里使用%.0lf将浮点数以整数形式输出(也就是舍去小数部分),使其看起来更符合整数幂次方计算的常规展示形式。

编程要求

根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。


测试说明

平台会对你编写的代码进行测试:

测试输入:

代码语言:javascript
复制
2
10

预期输出:

代码语言:javascript
复制
1的10次方=1
2的10次方=1024
The Sum is=1025

测试输入:

代码语言:javascript
复制
3
5

预期输出:

代码语言:javascript
复制
1的5次方=1
2的5次方=32
3的5次方=243
The Sum is=276

开始你的任务吧,祝你成功!


通关代码

代码语言:javascript
复制
#include "stdio.h"
int fun(int n, int k) {
  int power, sum = 0;
  int i, j;
  //请在此添加代码

  /*********Begin*********/
  for (i = 1; i <= n; i++) {
    power = 1;
    for (j = 1; j <= k; j++) {
      power *= i;
    }
    /********* End *********/

    printf("%d的%d次方=%d\n", i, k, power);
    //请在此添加代码

    /*********Begin*********/
    sum += power;
  }
  return sum;
}
/********* End *********/

int main() {
  int n, k, sum;
  //请在此添加代码
  /*********Begin*********/
  scanf("%d%d", &n, &k);
  sum = fun(n, k);
  /********* End *********/
  printf("The Sum is=%d", sum);
}

测试结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 任务描述
  • 相关知识
    • 一、定义子函数
      • 1. 返回值类型
      • 2. 函数名
      • 3. 参数列表
      • 4. 函数体
    • 二、调用子函数
      • 1. 无返回值函数的调用
      • 2. 有返回值函数的调用
    • 三、求 N 的 K 次方
      • 1. 使用循环结构(以简单的整数次方为例)
      • 2. 使用数学库函数(pow函数)
  • 编程要求
  • 测试说明
  • 通关代码
  • 测试结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档