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

《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.xdnf.cn/news/17415.html

相关文章:

  • 通过CNN、LSTM、CNN-LSTM及SSA-CNN-LSTM模型对数据进行预测,并进行全面的性能对比与可视化分析
  • 前端开发工具大全
  • day069-Jenkins基础使用与参数化构建
  • 【论文阅读】基于元模型的体系知识图谱构建
  • DataEase官方出品丨SQLBot:基于大模型和RAG的智能问数系统
  • C++高频知识点(十五)
  • 浅谈欧拉函数与素数筛法思想
  • Flink的运行模式
  • [网格图DP]3363. 最多可收集的水果数目
  • 水库大坝安全监测系统主要概述
  • 函数、方法和计算属性
  • P1037 [NOIP 2002 普及组] 产生数
  • 【论坛系统自动化功能测试报告】
  • 【深度学习机器学习】构建情绪对话模型:从数据到部署的完整实践
  • 如何使用 pnpm创建Vue 3 项目
  • 神策埋点是什么
  • 7. 什么是事件委托
  • 数据结构学习之二叉树
  • 【Java】Predicate使用案例
  • 制造业中小企业数字化转型“三步走”:业务系统稳健筑基,BI赋能智慧决策
  • 分布式面经
  • 分布式事务与分布式锁
  • STM32 串口控制电机运行系统
  • 深度学习中主要库的使用:(一)pandas,读取 excel 文件,支持主流的 .xlsx/.xls 格式
  • 【Zephyr】02_从零教你开发芯片级ADC驱动(HAL层篇)
  • IIS7.5下的https无法绑定主机头,显示灰色如何处理?
  • 基于 MATLAB 的 QPSK 调制、解调、通过高斯信道的误码率计算,并绘制误码率图和眼图、星座图
  • Numpy科学计算与数据分析:Numpy数学函数入门与实践
  • web前端结合Microsoft Office Online 在线预览,vue实现(PPT、Word、Excel、PDF等)
  • nlp-句法分析