当前位置: 首页 > 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.dtcms.com/a/319006.html

相关文章:

  • FreeRTROS3——事件组和定时器
  • QT的拖拽功能
  • Flutter开发 Slider组件(如音量控制)
  • 小程序省市级联组件使用
  • 【课题推荐】卡尔曼滤波,创新性的算法与应用:从非线性适用性、鲁棒抗差、自适应、金融与生物新应用等方面考虑
  • 项目构想|文生图小程序
  • idea开发工具中git如何忽略编译文件build、gradle的文件?
  • C5.1:共发射极组态
  • 【Day 18】Linux-DNS解析
  • 如何理解“信号集是位掩码,每个bit代表一个信号”这句话?
  • 怎么在本地引入字体
  • 构建在 OpenTelemetry eBPF 基础之上:详解 Grafana Beyla 2.5 新特性
  • 防火墙环境下的全网服务器数据自动化备份平台搭建:基于 rsync 的完整实施指南
  • CentOS 7 下通过 Anaconda3 运行llm大模型、deepseek大模型的完整指南
  • Express框架
  • 【JavaEE】(9) JVM
  • ElementUI之表格
  • 企业家 IP 发展态势剖析|创客匠人
  • 计算机网络1-5:计算机网络的性能指标
  • 【python 数据加密AES-GCM + 时间戳签名方案(带时间校验)】
  • vue3 el-select 加载触发
  • tcpdump问题记录
  • 软件运行时 ffmpeg.dll 丢失怎么办?从原因排查到完美修复的完整方案
  • 【Kafka系列】第二篇| Kafka 的核心概念、架构设计、底层原理
  • 什么是 TcpCommunicationSpi
  • HTML已死,HTML万岁——重新思考DOM的底层设计理念
  • 【音视频】WebRTC C++ native 编译
  • SpringAI动态调整大模型平台
  • 数据结构----栈和队列认识
  • Spring IoC 容器核心流程(面试必懂)