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

《C语言》函数练习题--1

《C语言》函数练习题–1

1. 计算两个数的最大值

题目描述:
编写一个C程序,定义一个函数max,接受两个整数参数,返回其中较大的一个数。在main函数中调用该函数并输出结果。

解题思路:
创建一个名为max的函数,该函数接受两个整数参数,通过条件判断返回较大的数。在main函数中,提示用户输入两个整数,调用max函数并打印返回值。

详细代码:

#include <stdio.h>// 定义函数max,返回两个整数中的较大者
int max(int a, int b) {if(a > b)return a;elsereturn b;
}int main() {int num1, num2, maximum;// 提示用户输入两个整数printf("请输入两个整数:\n");printf("第一个整数: ");scanf("%d", &num1);printf("第二个整数: ");scanf("%d", &num2);// 调用max函数并获取较大值maximum = max(num1, num2);// 输出结果printf("较大的数是 %d。\n", maximum);return 0;
}

代码注释:

  • int max(int a, int b):定义一个名为max的函数,接受两个整数参数ab

  • if(a > b):比较ab,如果a大于b,则返回a

  • else:否则,返回b

  • main
    

    函数中:

    • 使用printfscanf获取用户输入的两个整数。
    • 调用max(num1, num2)函数,获取较大值并存储在maximum变量中。
    • 使用printf输出结果。

2. 计算阶乘

题目描述:
编写一个C程序,定义一个递归函数factorial,接受一个非负整数参数,返回其阶乘。在main函数中调用该函数并输出结果。

解题思路:
创建一个递归函数factorial,其基本情况为n = 0n = 1时返回1。对于n > 1,返回n * factorial(n-1)。在main函数中,提示用户输入一个非负整数,调用factorial函数并打印结果。

详细代码:

#include <stdio.h>// 定义递归函数factorial,返回n的阶乘
unsigned long long factorial(int n) {if(n == 0 || n == 1)return 1;elsereturn n * factorial(n - 1);
}int main() {int number;unsigned long long fact;// 提示用户输入一个非负整数printf("请输入一个非负整数: ");scanf("%d", &number);// 检查输入是否为非负整数if(number < 0) {printf("错误: 阶乘不存在于负数。\n");return 1; // 非正常退出}// 调用factorial函数计算阶乘fact = factorial(number);// 输出结果printf("%d 的阶乘是 %llu。\n", number, fact);return 0;
}

代码注释:

  • unsigned long long factorial(int n):定义一个递归函数factorial,返回n的阶乘。

  • if(n == 0 || n == 1):基例,当n为0或1时,阶乘为1。

  • else:对于n > 1,返回n * factorial(n - 1),实现递归计算。

  • main
    

    函数中:

    • 使用printfscanf获取用户输入的非负整数。
    • 检查输入是否为负数,若是,则输出错误信息并退出程序。
    • 调用factorial(number)函数,获取阶乘值并存储在fact变量中。
    • 使用printf输出结果。

3. 判断素数

题目描述:
编写一个C程序,定义一个函数isPrime,接受一个整数参数,返回1如果该数是素数,返回0否则。在main函数中调用该函数并输出结果。

解题思路:
创建一个名为isPrime的函数,通过遍历从2到sqrt(n)的数,检查是否有任何数能整除n。如果找到一个因数,则不是素数。否则,是素数。在main函数中,提示用户输入一个整数,调用isPrime函数并根据返回值输出结果。

详细代码:

#include <stdio.h>
#include <math.h>// 定义函数isPrime,判断一个数是否为素数
int isPrime(int n) {if(n <= 1)return 0; // 0和1不是素数if(n == 2)return 1; // 2是素数if(n % 2 == 0)return 0; // 偶数不是素数// 检查从3到sqrt(n)的奇数是否能整除nfor(int i = 3; i <= sqrt(n); i += 2) {if(n % i == 0)return 0; // 找到因数,不是素数}return 1; // 没有因数,是素数
}int main() {int number;// 提示用户输入一个整数printf("请输入一个整数: ");scanf("%d", &number);// 调用isPrime函数并输出结果if(isPrime(number))printf("%d 是素数。\n", number);elseprintf("%d 不是素数。\n", number);return 0;
}

代码注释:

  • int isPrime(int n):定义一个函数isPrime,接受一个整数n作为参数。

  • if(n <= 1):如果n小于或等于1,则不是素数。

  • if(n == 2):2是素数,直接返回1。

  • if(n % 2 == 0):除2之外的偶数不是素数。

  • for(int i = 3; i <= sqrt(n); i += 2):遍历从3到sqrt(n)的奇数,检查是否能整除n

  • if(n % i == 0):如果n能被i整除,则不是素数,返回0。

  • return 1:如果没有找到因数,则n是素数。

  • main
    

    函数中:

    • 使用printfscanf获取用户输入的整数。
    • 调用isPrime(number)函数,判断是否为素数。
    • 根据返回值使用printf输出相应的信息。

4. 计算斐波那契数列

题目描述:
编写一个C程序,定义一个函数fibonacci,接受一个整数参数n,返回斐波那契数列的第n项。在main函数中调用该函数并输出结果。

解题思路:
创建一个名为fibonacci的函数,通过递归或迭代的方式计算斐波那契数列的第n项。为了提高效率,采用迭代方法。在main函数中,提示用户输入一个整数n,调用fibonacci函数并打印结果。

详细代码:

#include <stdio.h>// 定义函数fibonacci,返回斐波那契数列的第n项
long long fibonacci(int n) {if(n == 0)return 0;if(n == 1)return 1;long long a = 0, b = 1, fib = 0;for(int i = 2; i <= n; i++) {fib = a + b;a = b;b = fib;}return fib;
}int main() {int term;long long result;// 提示用户输入要计算的斐波那契数列项数printf("请输入斐波那契数列的项数 (n): ");scanf("%d", &term);// 检查输入是否为非负整数if(term < 0) {printf("错误: 斐波那契数列的项数必须为非负整数。\n");return 1; // 非正常退出}// 调用fibonacci函数计算第n项result = fibonacci(term);// 输出结果printf("斐波那契数列的第 %d 项是 %lld。\n", term, result);return 0;
}

代码注释:

  • long long fibonacci(int n):定义一个函数fibonacci,返回斐波那契数列的第n项。

  • if(n == 0)if(n == 1):处理斐波那契数列的前两项,分别为0和1。

  • for(int i = 2; i <= n; i++)
    

    :使用迭代方法计算斐波那契数列的第

    n
    

    项。

    • fib = a + b;:当前项等于前两项之和。
    • a = b; b = fib;:更新前两项。
  • main
    

    函数中:

    • 使用printfscanf获取用户输入的项数n
    • 检查输入是否为非负整数,若不是,则输出错误信息并退出程序。
    • 调用fibonacci(term)函数,获取斐波那契数列的第n项。
    • 使用printf输出结果。

5. 字符串长度函数

题目描述:
编写一个C程序,定义一个函数stringLength,接受一个字符串参数,返回该字符串的长度。在main函数中调用该函数并输出结果。

解题思路:
创建一个名为stringLength的函数,通过遍历字符串,直到遇到\0,计数字符的数量并返回。在main函数中,提示用户输入一个字符串,调用stringLength函数并打印结果。

详细代码:

#include <stdio.h>// 定义函数stringLength,返回字符串的长度
int stringLength(char str[]) {int length = 0;while(str[length] != '\0') {length++;}return length;
}int main() {char input[100];int len;// 提示用户输入一个字符串printf("请输入一个字符串: ");fgets(input, sizeof(input), stdin);// 去除fgets读取的换行符int i;for(i = 0; input[i] != '\0'; i++) {if(input[i] == '\n') {input[i] = '\0';break;}}// 调用stringLength函数计算长度len = stringLength(input);// 输出结果printf("字符串的长度是 %d。\n", len);return 0;
}

代码注释:

  • int stringLength(char str[]):定义一个函数stringLength,接受一个字符数组作为参数。

  • while(str[length] != '\0'):遍历字符串,直到遇到字符串结束符\0

  • length++:计数字符的数量。

  • main
    

    函数中:

    • 使用fgets读取用户输入的字符串,包括空格。
    • 遍历字符串,遇到换行符\n则替换为\0,避免影响长度计算。
    • 调用stringLength(input)函数,获取字符串长度并存储在len变量中。
    • 使用printf输出字符串的长度。
http://www.lryc.cn/news/612967.html

相关文章:

  • 基于大数据的美食视频播放数据可视化系统 Python+Django+Vue.js
  • Vscode Data Wrangler 数据查看和处理工具
  • GitHub 上 Star 数量前 20 的开源 AI 项目
  • 中国MCP市场:腾讯、阿里、百度的本土化实践
  • 医疗人效管理新标杆:盖雅工场如何赋能健康服务企业提质增效
  • Java 大视界 -- Java 大数据在智能教育在线课程互动优化与学习体验提升中的应用(386)
  • 一篇文章用大白话带初学者搞清训练集、测试集及验证集关系及场景逻辑(包清楚)
  • LLMs api价格对比平台
  • --- Eureka 服务注册发现 ---
  • 【第7话:相机模型3】自动驾驶IPM图像投影拼接技术详解及代码示例
  • TikTok Shop冷启动破局战:亚矩阵云手机打造爆款账号矩阵
  • AWS RDS自定义终端节点深度分析工具:Python脚本详解
  • 手机控制断路器:智能家居安全用电的新篇章
  • STM32HAL 快速入门(一):点灯前的准备 —— 从软件安装到硬件原理
  • 云手机存在的意义是什么?
  • 数字取证:可以恢复手机上被覆盖的数据吗?
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • 如何提高云手机中数据信息的安全性?
  • Git Status 命令深度指南:洞悉仓库状态的核心艺术
  • Flutter开发 Slider组件(如音量控制)
  • C语言strncmp函数详解:安全比较字符串的实用工具
  • 使用Cloud Document Converter将飞书文档导出为markdown
  • Android渲染/合成底层原理详解
  • MySQL GROUP BY 语句详细说明
  • 《算法导论》第 9 章 - 中位数和顺序统计量
  • NAS技术在县级融媒体中心的架构设计与安全运维浅析
  • 医疗AI中GPU部署的“非对等全节点架构“方案分析(下)
  • MHA架构实战
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • Docker离线安装MinIO及数据迁移