C语言基础(八)

1、标准库函数:

测试代码1:

#include <stdio.h>  // 标准库函数头文件导入 
// 自定义函数  
int add(int a, int b) {  return a + b;  
}  // 声明回调函数类型  
typedef void (*Callback)(int);  // 调用回调函数的函数  
void process(Callback cb, int data) {  cb(data);  
}  // 具体的回调函数实现  
void printData(int data) {  printf("Data: %d\n", data);  
}  // 内联函数  
inline int max(int a, int b) {  return a > b ? a : b;  
}  // 静态函数  
static void privateFunction() {  printf("This is a private function.\n");  
}  // 递归函数  
int factorial(int n) {  if (n == 0) {  return 1;  } else {  return n * factorial(n - 1);  }  
}  int main() {  // 调用用户自定义函数  int sum = add(5, 3);  printf("The sum is: %d\n", sum);  // 调用回调函数  process(printData, 10);  // 调用内联函数  int maxVal = max(7, 9);  printf("The max is: %d\n", maxVal);  // 调用静态函数privateFunction();  // 调用递归函数  int fact = factorial(5);  printf("Factorial of 5 is: %d\n", fact);  return 0;  
}

运行结果如下:

 

测试代码2:

#include <stdio.h>//标准库头文件
#include <time.h>//标准库头文件 
//获取系统时间并计算是第几周第几天。 
int main() {//定义time_t类型的变量rawtime,存储当前的时间戳。time_t rawtime;//定义指向struct tm类型的指针timeinfo,存储时间的详细信息。struct tm *timeinfo;//定义一个大小为80的字符数组buffer,存储格式化后的时间字符串。char buffer[80];//time()函数获取当前的时间戳,并将其保存在rawtime变量中。time(&rawtime);//localtime()函数将时间戳转换为本地时间,并将结果存储在timeinfo指针所指向的结构体中。timeinfo = localtime(&rawtime);//strftime()函数将时间信息按指定的格式写入buffer数组中。strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", timeinfo);//输出当前时间。printf("当前时间: %s\n", buffer);//计算今天是一年中的第几天,并将结果存储在dayOfYear变量中。int dayOfYear = timeinfo->tm_yday + 1;  // 将0-based的天数转换为1-based//获取今天是星期几的信息,并存储在dayOfWeek变量中。int dayOfWeek = timeinfo->tm_wday;//如果dayOfWeek为0(星期日),则将其转换为7(ISO 8601标准中星期一为一周的起始)。if (dayOfWeek == 0) {  // 将星期天转换为 7dayOfWeek = 7;}//计算今天是当年的第几周,通过 (dayOfYear + 6 - dayOfWeek) / 7 这个公式计算。int week = (dayOfYear + 6 - dayOfWeek) / 7;//输出今天是当年的第几周的第几天。 printf("今天是第 %d 周的第 %d 天\n", week, dayOfWeek);//return 0;: 返回值0,表示程序正常结束。return 0;
}

运行结果如下:

 

 

2、自定义函数:

测试代码:

#include <stdio.h>  // 无参无返回值的函数  
void printMessage() {  printf("Hello, this is a function with no parameters and no return value.\n");  
}  // 无参有返回值的函数  
int getNumber() {  // 返回一个整数  return 42;  
}  // 有参无返回值的函数  
void displayNumber(int num) {  printf("The number is: %d\n", num);  
}  // 有参有返回值的函数  
int addNumbers(int a, int b) {  // 返回两个整数的和  return a + b;  
}  int main() {  // 调用无参无返回值的函数  printMessage();  // 调用无参有返回值的函数,并打印返回值  int result1 = getNumber();  printf("The result of getNumber() is: %d\n", result1);  // 调用有参无返回值的函数  displayNumber(10);  // 调用有参有返回值的函数,并打印返回值  int result2 = addNumbers(5, 7);  printf("The result of addNumbers(5, 7) is: %d\n", result2);  return 0;  
}

运行结果如下:

 

3、函数的几种调用方式:

测试代码:

#include <stdio.h>  
// 函数的4种调用方式: 基本调用、递归调用、通过指针调用、作为另一个函数的参数 
// 定义一个函数  
int add(int a, int b) {  return a + b;  
}  
// 使用递归计算阶乘  
int factorial(int n) {  if (n == 0) {  return 1;  } else {  return n * factorial(n - 1); // 在函数中调用函数自身称为递归调用。}  
} // 声明一个函数指针  void (*funcPtr)();  
// 定义一个函数  
void sayHello() {  printf("Hello, World!\n");  
}  // 一个简单的函数  
void func1() {  printf("Function 1 called\n");  
}  // 另一个简单的函数  
void func2() {  printf("Function 2 called\n");  
}  // 接收函数指针作为参数的函数  
void callFunction(void (*func)()) {  func();  
}  int main() {  // 基本调用直接使用函数名和括号包围的参数列表(如果有参数的话)来调用函数。// 如果函数有返回值,将该返回值赋给一个变量,或者直接在表达式中使用它。// 调用函数并打印结果  int sum = add(5, 3); // 将函数的返回值赋给变量sum  printf("The sum is: %d\n", sum);  // 也可以在调用时直接使用函数的返回值  printf("Direct use: %d\n", add(2, 4)); //调用递归函数 printf("5! = %d\n", factorial(5));  // 将函数地址赋给函数指针  funcPtr = sayHello;  // 通过函数指针调用函数 // 函数指针指向函数的地址,可以像调用普通函数一样通过它们调用函数。 (*funcPtr)();  // 或者 funcPtr();  // 函数指针作为参数传递给其他函数,这里传递给func1 // 调用callFunction,传递func1的地址  callFunction(func1);  // 函数指针作为参数传递给其他函数,这里传递给func2 // 调用callFunction,传递func2的地址  callFunction(func2);  return 0;  
}

运行结果如下:

 

4、函数的嵌套调用:

测试代码:

// 函数声明  
double power(double base, int exponent);  
double multiply(double a, double b);  
double add(double a, double b);  
void printResult(double result);  int main() {  // 调用最外层的函数  printResult(add(multiply(2.0, 3.0), power(2.0, 3)));  return 0;  
}  // 幂运算函数  
double power(double base, int exponent) {  double result = 1.0;  for (int i = 0; i < exponent; i++) {  result *= base;  }  return result;  
}  // 乘法函数  
double multiply(double a, double b) {  return a * b;  
}  // 加法函数  
double add(double a, double b) {  return a + b;  
}  // 输出结果函数  
void printResult(double result) {  printf("Result: %f\n", result);  
}

运行结果如下:

 

5、 求合数和

测试代码:

#include <stdio.h>  
#include <stdbool.h>  
#include <stdio.h>  
#include <stdbool.h>  // 函数声明,用于检查一个数是否为合数  
bool isComposite(int num);  int main() {  int n, sum = 0; printf("请输入一个整数n: ");  scanf("%d", &n);  // 遍历从2到n的所有数(注意:1不是合数)  for (int i = 2; i <= n; i++) {  if (isComposite(i)) {  printf("%d ", i); // 如果是合数,则打印出来  }  }  printf("\n"); // 打印换行符以美化输出// 遍历从2到n的所有数(注意:1不是合数)  for (int i = 2; i <= n; i++) {  if (isComposite(i)) {  sum += i; // 如果是合数,则加到总和中  }  }  printf("小于等于%d的全部合数的和是: %d\n", n, sum);  return 0;  
}  // 函数定义,检查一个数是否为合数  
bool isComposite(int num) {  if (num <= 1) return false; // 1和负数、0都不是合数  if (num == 2 || num == 3) return false; // 2和3是质数,不是合数  if (num % 2 == 0) return true; // 偶数(除了2)都是合数  // 只需检查到sqrt(num)即可  for (int i = 3; i * i <= num; i += 2) {  if (num % i == 0) return true; // 如果找到一个因子,则num是合数  }  return false; // 如果没有找到因子,则num是质数  
}

运行结果如下:

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405839.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的EXPLAIN的详解

一、介绍 官网介绍&#xff1a; https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlhttps://dev.mysql.com/doc/refman/8.0/en/explain-output.htmlexplain&#xff08;执行计划&#xff09;&#xff0c;使用explain关键字可以模拟优化器执行sql查询语句&#xff…

QT 与 C++实现基于[ TCP ]的聊天室界面

TCP客户端 Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket> //客户端类 #include <QMessageBox> #include <QListWidgetItem> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } …

SpingBoot集成kafka发送读取消息

SpingBoot集成kafka开发 kafka的几个常见概念 1、springboot和kafka对应版本&#xff08;重要&#xff09;2、创建springboot项目&#xff0c;引入kafka依赖2.1、生产者EventProducer2.2、消费者EventConsumer2.3、启动生产者的方法SpringBoot01KafkaBaseApplication2.4、appli…

map与set容器初识:初步运用map与set

前言&#xff1a; 本文主要讲解的时对于map与set容器的初步使用&#xff0c;希望大家对map与set容器不熟悉的看了之后可以快速运用set与map到日常中来。&#xff08;本文适合对vector等基础容器有一定基础的同学&#xff09; 一、set与map容器常见接口 迭代器接口与以往的所…

12 程序控制语句:循环控制(while、do-while、for、多重嵌套循环、死循环)

目录 1 while 循环 1.1 基本语法 1.2 流程图 1.3 计数循环 1.3.1 实现原则 1.3.2 案例&#xff1a;循环输出语句 1.3.3 案例&#xff1a;循环输出数字 7~15 1.3.4 案例&#xff1a;倒序输出数字 56 ~ 43 1.3.5 案例&#xff1a;输出 10&#xff08;包括 10&…

使用 Go 语言将 Base64 编码转换为 PDF 文件

使用Go语言将PDF文件转换为Base64编码-CSDN博客文章浏览阅读104次&#xff0c;点赞2次&#xff0c;收藏5次。本文介绍了如何使用 Go 语言将 PDF 文件转换为 Base64 编码&#xff0c;并保存到文件中。https://blog.csdn.net/qq_45519030/article/details/141224319 在现代编程中…

【WebSocket】websocket学习【二】

1.需求&#xff1a;通过websocket实现在线聊天室 2.流程分析 3.消息格式 客户端 --> 服务端 {"toName":"张三","message":"你好"}服务端 --> 客户端 系统消息格式&#xff1a;{"system":true,"fromName"…

SQL注入(head、报错、盲注)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 1. 报错注入 1.1 那么什么是报错注入呢&#xff1f; 1.2 报错注入原理 extractvalue函数 updatexml函数 1.3 靶场解析 靶场练习 2. HEAD注入 2.1 相关全局变量 2.2 靶场解析 burp暴力破解 靶场练习 3…

Spring核心思想讲解之控制反转(IOC)

控制反转概述 控制反转实现方式 XML方式 方式一 方式二 方式三 注解方式 第一步 第二步 第三步 依赖注入&#xff08;DI&#xff09;实现方式 XML方式 手动注入 set注入 构造器注入 自动注入 set注入 构造方法注入 注解方式 方式一&#xff1a; 方式二&…

Transformer模型中的Position Embedding实现

引言 在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;Transformer模型自2017年提出以来&#xff0c;已成为许多任务的基础架构&#xff0c;包括机器翻译、文本摘要和问答系统等。Transformer模型的核心之一是其处理序列数据的能力&#xff0c;而Position Embedding在…

python之matplotlib (1 介绍及基本用法)

介绍 matplotlib是Python中的一个绘图库&#xff0c;它提供了一个类似于 MATLAB 的绘图系统。使用matplotlib你可以生成图表、直方图、功率谱、条形图、错误图、散点图等。matplotlib广泛用于数据可视化领域&#xff0c;是 Python 中最著名的绘图库之一。 同样matplotlib的安…

Java数组怎么转List,Stream的基本方法使用教程

Stream流 Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。 一、创建 Stream 从集合创建: List<String> list = Ar…

NGINX 之 location 匹配优先级

章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 location 基础语法 1.1 location 语法说明表 1.2 URI部分简单介绍 2 location 匹配优先级 2.1 URI匹配的规则与顺序 2.2 精确匹配(location /1.txt) 2.3 区…

Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归

全文链接&#xff1a;https://tecdat.cn/?p37423 原文出处&#xff1a;拓端数据部落公众号 “你的命运早在出生那一刻起便被决定了。”这样无力的话语&#xff0c;无数次在年轻人的脑海中回响&#xff0c;尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国…

企业级WEB应用服务器——TOMCAT

一、WEB技术 1.1、HTTP协议和B/S 结构 最早出现了CGI&#xff08;Common Gateway Interface&#xff09;通用网关接口&#xff0c;通过浏览器中输入URL直接映射到一个 服务器端的脚本程序执行&#xff0c;这个脚本可以查询数据库并返回结果给浏览器端。这种将用户请求使用程…

AWS不同类型的EC2实例分别适合哪些场景?

Amazon Web Services&#xff08;AWS&#xff09;的弹性计算云&#xff08;EC2&#xff09;提供了多种实例类型&#xff0c;以满足不同的应用需求和工作负载。了解不同类型的 EC2 实例及其适用场景&#xff0c;可以帮助用户更好地优化性能和控制成本。九河云和大家一起了解一下…

安恒信息总裁宋端智,辞职了!活捉一枚新鲜出炉的餐饮人!

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

I/O模型

文章目录 I/O模型相关概念网络I/O模型阻塞型I/O模型非阻塞型I/O模型多路复用I/O型信号驱动式I/O型异步I/O模型 apache和nginx的区别&#xff0c;什么时候选择apache&#xff0c;什么时候选择nginx 文章相关连接如下&#xff1a; 如果想更多了解nginx&#xff0c;请点击&#x…

为什么要使用TikTok云手机

随着TikTok平台的日益繁荣&#xff0c;TikTok云手机作为一种新兴的运营工具&#xff0c;正以其独特的云端技术和用户体验&#xff0c;赢得广大用户的青睐。相较于传统手机&#xff0c;TikTok云手机通过云端技术为用户带来了一系列新的优势&#xff0c;让TikTok运营变得更加灵活…

涂料耐久性氙灯老化试验箱

涂料氙灯老化试验箱是现代检测手段中常用的一种设备&#xff0c;它能够模拟自然光照、光照老化等环境条件&#xff0c;对涂料、染料、塑料、橡胶、纺织品、涂层等材料进行老化试验&#xff0c;以评估其耐久性和使用寿命。本文将详细介绍涂料氙灯老化试验箱的工作原理、使用注意…