C语言的基本输入输出函数+构造类型数据——数组

C语言的基本输入输出函数

1. 字符输入输出函数 getchar()putchar()

  • getchar():从标准输入(通常是键盘)读取一个字符,并返回其ASCII值。
  • putchar():将指定的字符(由其ASCII值表示)写入标准输出(通常是屏幕)。

示例代码

#include <stdio.h>int main() {char ch;// 使用getchar()读取字符printf("请输入一个字符: ");ch = getchar();// 使用putchar()输出字符printf("你输入的字符是: ");putchar(ch);return 0;
}

2. 格式输入输出函数 scanf()printf()

  • scanf():从标准输入读取格式化的输入。
  • printf():将格式化的数据写入标准输出。

示例代码

#include <stdio.h>int main() {int num;// 使用scanf()读取整数printf("请输入一个整数: ");scanf("%d", &num);// 使用printf()输出整数printf("你输入的整数是: %d\n", num);return 0;
}

3. 字符串输入输出函数 gets()puts()(注意:gets() 在C11标准中已被弃用)

  • gets()(已弃用):从标准输入读取一行,直到遇到换行符或EOF,然后丢弃换行符。由于它不会检查缓冲区溢出,因此不推荐使用。
  • puts():将指定的字符串写入标准输出,并在末尾添加一个换行符。

示例代码(使用 fgets() 替代 gets()):

#include <stdio.h>#define MAX_LINE_LENGTH 100int main() {char line[MAX_LINE_LENGTH];// 使用fgets()读取一行printf("请输入一行文本: ");fgets(line, MAX_LINE_LENGTH, stdin);// 使用puts()输出这行文本puts(line);return 0;
}

注意:在上面的示例中,我使用了 fgets() 函数来替代 gets(),因为 gets() 函数存在缓冲区溢出的风险。fgets() 函数允许你指定一个最大长度,从而防止溢出。

构造类型数据——数组

  1. 一维数组的基本概念,存储方式

一维数组是由具有相同类型的元素的集合所组成的数据结构,这些元素在内存中连续存放,通过数组名和索引(或称为下标)来唯一确定数组中的每个元素。

存储方式:一维数组在内存中是连续存放的,第一个元素的地址是数组的基地址,其他元素的地址是基地址加上偏移量(即元素大小乘以下标)。

2) 一维数组元素的引用、初始化及输入输出

引用:通过数组名和索引来引用数组元素,如 array[index]

初始化:可以在声明数组的同时进行初始化,如 int array[5] = {1, 2, 3, 4, 5};

输入输出:使用循环和 scanfprintf 函数进行输入输出。

#include <stdio.h>int main() {int array[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("%d ", array[i]); // 输出}printf("\n");int value;for (int i = 0; i < 5; i++) {scanf("%d", &array[i]); // 输入}return 0;
}

3) 二维数组的基本概念,存储方式

二维数组是由一维数组组成的数组,即数组的数组。每个一维数组称为二维数组的行。二维数组在内存中也是连续存放的,但先存放第一行的所有元素,再存放第二行的所有元素,以此类推。

存储方式:二维数组在内存中是按行存储的,即先存储第一行的所有元素,然后存储第二行的所有元素,依此类推。

4) 二维数组元素的引用、初始化及输入输出

引用:通过数组名、行索引和列索引来引用二维数组元素,如 array[row][col]

初始化:可以在声明二维数组的同时进行初始化,如 int array[2][3] = {{1, 2, 3}, {4, 5, 6}};

输入输出:使用嵌套循环和 scanfprintf 函数进行输入输出。

#include <stdio.h>int main() {int array[2][3] = {{1, 2, 3}, {4, 5, 6}};for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++) {printf("%d ", array[i][j]); // 输出}printf("\n");}int value;for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++) {scanf("%d", &array[i][j]); // 输入}}return 0;
}

5) 字符数组的基本概念,存储方式

字符数组是用于存储字符的数组,可以存储字符串(以 ‘\0’ 结尾的字符序列)。字符数组在内存中的存储方式与一维数组相同。

6) 字符串的初始化及输入输出

初始化:可以在声明字符数组的同时进行初始化,如 char str[] = "Hello, World!";。注意,字符串会自动在末尾添加 ‘\0’ 作为结束符。

输入输出:使用 scanfprintfgetsputs 函数进行输入输出。但 scanf 在读取字符串时不会读取空格,所以通常使用 fgets 来读取包含空格的字符串。

#include <stdio.h>int main() {char str[20] = "Hello, World!";printf("%s\n", str); // 输出fgets(str, 20, stdin); // 输入,注意 fgets 会读取换行符,但通常我们不需要它,所以可能需要手动去除str[strcspn(str, "\n")] = 0; // 去除换行符printf("%s\n", str); // 输出return 0;
}

注意:strcspn 函数用于获取字符串中第一个指定字符集(这里是换行符)之前的子串的长度,这里用来去除换行符。如果你的编译器或环境中
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

10_Transformer预热---注意力机制(Attention)

1.1 什么是注意力机制(attention) 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在神经网络中用于增强模型处理特定输入特征的能力的技术。它最早被应用于自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;特别是在机器翻译中&#xff0c;如Google的…

python14 字典类型

字典类型 键值对方式&#xff0c;可变数据类型&#xff0c;所以有增删改功能 声明方式1 {} 大括号&#xff0c;示例 d {key1 : value1, key2 : value2, key3 : value3 ....} 声明方式2 使用内置函数 dict() 创建1)通过映射函数创建字典zip(list1,list2) 继承了序列的所有操作 …

Linux基础I/O之文件描述符fd 重定向(上)

目录 一、预备知识 二、C语言中的文件接口 三、系统调用中的文件接口 一、预备知识 首先我们要明确的一个观点是 --- 文件 内容 属性。而且我们之前也还将过一个概念&#xff0c;那就是Linux下一切皆文件。 内容是数据&#xff0c;属性也是数据 --- 那么也就是说我…

使用STL算法函数有效提升STL列表的搜索速度(附源码)

STL(Standard Templete Library)活动模板库已被广泛地应用于各种C++程序的开发中,STL中vector、list、map等列表极大地方便了我们日常的开发,不再需要我们去实现链表等数据结构,使用这些列表能基本能解决开发过程中遇到的各种问题。网上关于STL的文章比较多,今天我们就来…

代码随想录——组合总和Ⅱ(Leetcode 40)需要回顾

题目链接 回溯 本题的难点在于&#xff1a;集合&#xff08;数组candidates&#xff09;有重复元素&#xff0c;但还不能有重复的组合。 思想&#xff1a;元素在同一个组合内是可以重复的&#xff0c;怎么重复都没事&#xff0c;但两个组合不能相同。所以要去重的是同一树…

统计套利—配对交易策略

配对交易是一种基于统计学的交易策略&#xff0c;通过两只股票的差价来获取收益&#xff0c;因而与很多策略不同&#xff0c;它是一种中性策略&#xff0c;理论上可以做到和大盘走势完全无关。 配对交易的基本原理是&#xff0c;两个相似公司的股票&#xff0c;其股价走势虽然在…

[Linux] TCP协议介绍(3): TCP协议的“四次挥手“过程、状态分析...

TCP协议是面向连接的 上一篇文章简单分析了TCP通信非常重要的建立连接的"三次握手"的过程 本篇文章来分析TCP通信中同样非常重要的断开连接的"四次挥手"的过程 TCP的"四次挥手" TCP协议建立连接 需要"三次握手". "三次挥手&q…

基于STM32和人工智能的自动驾驶小车系统

目录 引言环境准备自动驾驶小车系统基础代码实现&#xff1a;实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…

稀疏矩阵是什么 如何求

稀疏矩阵是一种特殊类型的矩阵&#xff0c;其中大多数元素都是零。由于稀疏矩阵中非零元素的数量远少于零元素&#xff0c;因此可以使用特定的数据结构和算法来高效地存储和处理它们&#xff0c;从而节省存储空间和计算时间。 RowPtr 数组中的每个元素表示对应行的第一个非零元…

变压器纵联差动保护的Simulink仿真

利用Simulink在变压器空载合闸励磁涌流的仿真模型的基础上将变压器改为采用Yd11联结且不考虑饱和特性,增加外部故障模块Fault2,得到新的仿真模型如图1所示。 图1 变压器的Simulink仿真模型 在建立模型时,请注意三相电压电流测量模块Um,UN的方向。比率制动特性纵差保护…

目标检测算法SSD与FasterRCNN

目标检测算法SSD与FasterRCNN SSD:&#xff08; Single Shot MultiBox Detector&#xff09;特点是在不同特征尺度上预测不同尺度的目标。 SSD网络结构 首先对网络的特征进行说明&#xff1a;输入的图像是300x300的三通道彩色图像。 网络的第一个部分贯穿到Vgg16模型 Conv5的…

工厂方法模式实战之某商场一次促销活动

目录 1.5.1、前言1.5.2、实战场景简介1.5.3、开发环境1.5.4、用传统的if-else语句实现1.5.4.1、工程结构1.5.4.2、if-else需求实现1.5.4.3、测试验证 1.5.5、工厂模式优化代码1.5.5.1、工程结构1.5.5.2、代码实现1.5.5.2.1、定义各种商品发放接口及接口实现1.5.5.2.2、定义工厂…

Android开发系列:高性能视图组件Surfaceview

一、Surfaceview概述 在Android应用开发领域&#xff0c;面对视频播放、游戏构建及相机实时预览等高性能需求场景&#xff0c;直接操控图像数据并即时展示于屏幕成为必要条件。传统View组件在此类情境下显现局限性&#xff1a; 性能瓶颈&#xff1a;传统View的绘制任务由UI主…

Spring系统学习 -Spring IOC 的XML管理Bean之类类型属性赋值、数组类型属性赋值、集合类属性赋值

类类型属性赋值&#xff1a; 在XML配置中&#xff0c;可以使用 <property> 元素为类类型属性赋值。通过指定属性的名称和值&#xff0c;可以直接将其他Bean的实例引用注入到目标Bean的属性中。这种方式可以建立对象之间的关联关系。例如&#xff0c;可以将一个Address对象…

Element-UI - 解决el-table中图片悬浮被遮挡问题

在开发中&#xff0c;发现element-ui在el-table中添加图片悬浮显示时&#xff0c;会被单元格遮挡的问题。通过查询得到的解决办法&#xff0c;大多是修改.el-table类中相关样式属性&#xff0c;但经过验证发现会影响到其他正常功能的使用。对于此问题解决其实也并不难&#xff…

生产者消费者模型的同步与互斥:C++代码实现

文章目录 一、引言二、生产者消费者模型概述1、基本概念和核心思想2、生产者消费者模型的优点 三、消费者和生产者之间的同步与互斥四、代码实现1、事前准备2、环形队列的实现3、阻塞队列的实现4、两种实现方式的区别 一、引言 在现代计算机系统中&#xff0c;很多任务需要同时…

【机器学习】机器学习与教育科技在个性化教学中的融合应用与性能优化新探索

文章目录 引言机器学习与教育科技的基本概念机器学习概述监督学习无监督学习强化学习 教育科技概述学生学习行为分析个性化学习路径推荐智能化教育评估 机器学习与教育科技的融合应用实时学习数据分析数据预处理特征工程 学生成绩预测与优化模型训练模型评估 个性化学习路径推荐…

【AI实践】Ollama本地安装大模型服务

Ollama安装运行 安装与配置 Download Ollama 安装默认在C盘&#xff0c;成功后&#xff0c;window任务栏图标会有Ollama Logo 为了不占用C盘更大的空间&#xff0c;修改模型下载路径&#xff0c;修改环境变量 下载模型 由于我电脑是第六代Intel&#xff0c;集显&#xff0c;…

【算法题】搜索二维矩阵,一文彻底弄会!

目录 一、题目描述 二、解题思路 1、引言 2、思路推导过程 三、参考答案 一、题目描述 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数…

【C++】多态|原理|override|final|抽象类|多继承虚函数表|对象模型|虚表打印|(万字详解版)

目录 ​编辑 一.多态的概念 二.多态的构建 虚函数 重写 虚函数重写的例外 协变 隐藏 析构函数的重写 三.重载、重写(覆盖)、隐藏(重定义)的对比 四.C11新增的 override 和 final override final 五.抽象类 六.多态的原理 虚函数表 总结&#xff1a; 引用…