当前位置: 首页 > article >正文

【C语言程序设计——函数】编写子函数求x的n次方(头歌实践教学平台习题)【合集】

目录😋

任务描述

相关知识

一、定义子函数

1. 返回值类型

2. 函数名

3. 参数列表

4. 函数体

二、调用子函数

1. 无返回值函数的调用

2. 有返回值函数的调用

编程要求

测试说明

通关代码

测试结果


任务描述

本关任务:调用子函数power求x的n次方,在主函数输入x与n值,并输出结果。


相关知识

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

  1. 定义子函数
  2. 调用子函数

一、定义子函数

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

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

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

2. 函数名

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

3. 参数列表

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

4. 函数体

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

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

int add(int a, int b) {
    int sum = a + b;
    return sum;
}
这个函数名为  add,接受两个整型参数  a 和  b,在函数体中计算它们的和并存储在变量  sum 中,最后通过  return 语句返回这个和。

二、调用子函数

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

 
1. 无返回值函数的调用

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

函数名(实际参数列表);

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

void printHello() {
    printf("Hello\n");
}

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

int main() {
    printHello();
    return 0;
}

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

 
2. 有返回值函数的调用

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

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

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

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

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


编程要求

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


测试说明

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

测试输入:

2
10

预期输出:

y=1024.000000

 测试输入:

5
10

预期输出:

y=9765625.000000

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


通关代码

#include <stdio.h>
float power(float, int); //函数声明
int main() {
  float x, y;
  int n;

  //请在此添加代码
  /*********Begin*********/
  scanf("%f %d", &x, &n);
  y = power(x, n);
  /********* End *********/
  printf("y=%f\n", y);
}
float power(float x, int n) //函数定义
{
  int i;
  float t;
  //请在此添加代码
  /*********begin*********/
  t = 1;
  for (int i = 0; i < n; i++) {
    t *= x;
  }
  /********* End *********/
  return t;
}

测试结果

在这里插入图片描述


http://www.kler.cn/a/470669.html

相关文章:

  • 设计模式(1)——面向对象和面向过程,封装、继承和多态
  • Element-plus表单总结
  • 【微服务】7、分布式事务
  • Taro地图组件和小程序定位
  • [项目实战2]贪吃蛇游戏
  • visual studio 自动调整代码格式的问题:
  • 玩转大语言模型——ollama导入huggingface下载的模型
  • 【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
  • 【HarmonyOS-ArkTS语言】面向对象【合集】
  • 【C++数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】
  • 打靶记录23——Raven2
  • iOS 逆向学习 - iOS Architecture Cocoa Touch Layer
  • 计算机网络(第七版)知识点
  • Redis持久化详解
  • HTML5 弹跳动画(Bounce Animation)详解
  • 基于Vue的农业设备租赁系统设计与实现(LW+源码+讲解)
  • 【性能优化】如何提升页面加载速度?
  • Ubuntu 20.04安装gcc
  • Java高频面试之SE-08
  • 千兆宽带和全屋WiFi覆盖
  • jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
  • 【Spring Boot】统一数据返回
  • 『SQLite』表连接查询
  • iPhone升级iOS18黑屏?2025最新修复办法分享
  • docker学习记录:commit,制作自己的镜像
  • SSL,TLS协议分析