C语言入门教程100讲(4)输入输出

文章目录

      • [1. 什么是输入输出?](#1. 什么是输入输出?)
      • [2. 标准输入输出函数](#2. 标准输入输出函数)
        • [2.1 `printf` 函数](#2.1 printf 函数)
        • [2.2 `scanf` 函数](#2.2 scanf 函数)
      • [3. 格式化占位符](#3. 格式化占位符)
      • [4. 示例代码](#4. 示例代码)
      • [5. 常见问题](#5. 常见问题)
        • [问题 1:`scanf` 中的 `&` 是什么作用?](#问题 1:scanf 中的 & 是什么作用?)
        • [问题 2:`printf` 和 `scanf` 的格式化字符串必须匹配吗?](#问题 2:printf 和 scanf 的格式化字符串必须匹配吗?)
        • [问题 3:如何读取字符串?](#问题 3:如何读取字符串?)
      • [6. 扩展练习](#6. 扩展练习)

1. 什么是输入输出?

在 C 语言中,输入输出(I/O)是指程序与用户或外部设备之间的数据交互。常见的输入输出操作包括从键盘读取数据(输入)和将数据打印到屏幕(输出)。

2. 标准输入输出函数

C 语言提供了标准库函数 printf 和 scanf,分别用于输出和输入。

2.1 printf 函数

printf 用于将数据格式化输出到屏幕。语法如下:

c 复制代码
printf("格式化字符串", 参数列表);

例如:

c 复制代码
int age = 25;
printf("年龄: %d\n", age);
  • %d 是格式化占位符,表示输出整数。
  • \n 是换行符,表示输出后换行。
2.2 scanf 函数

scanf 用于从键盘读取数据。语法如下:

c 复制代码
scanf("格式化字符串", &变量);

例如:

c 复制代码
int age;
scanf("%d", &age);
  • %d 是格式化占位符,表示读取整数。
  • & 是取地址运算符,用于获取变量的地址。

3. 格式化占位符

以下是一些常用的格式化占位符:

占位符 数据类型 示例
%d 整数 int age = 25;
%f 浮点数 float price = 99.99;
%c 字符 char letter = 'A';
%s 字符串 char name[] = "Alice";
%lf 双精度浮点数 double pi = 3.14159;

4. 示例代码

以下是一个使用 printf 和 scanf 的示例程序:

c 复制代码
#include <stdio.h>

int main() {
    int age;
    float height;

    // 输入年龄和身高
    printf("请输入年龄: ");
    scanf("%d", &age);
    printf("请输入身高 (米): ");
    scanf("%f", &height);

    // 输出结果
    printf("年龄: %d\n", age);
    printf("身高: %.2f 米\n", height);

    return 0;
}
代码解析:
  1. 输入部分:

    • 使用 scanf 从键盘读取用户的年龄和身高。
  2. 输出部分:

    • 使用 printf 将输入的年龄和身高格式化输出到屏幕。
    • %.2f 表示保留两位小数的浮点数。
输出结果:
复制代码
请输入年龄: 25
请输入身高 (米): 1.75
年龄: 25
身高: 1.75 米

5. 常见问题

问题 1:scanf 中的 & 是什么作用?
  • & 是取地址运算符,用于获取变量的内存地址。scanf 需要知道变量的地址才能将输入的值存储到变量中。
问题 2:printf 和 scanf 的格式化字符串必须匹配吗?
  • 是的。格式化字符串中的占位符必须与变量的数据类型匹配,否则会导致错误或意外行为。
问题 3:如何读取字符串?
  • 使用 %s 占位符读取字符串。例如:

    c 复制代码
    char name[50];
    scanf("%s", name);
    • 注意:scanf 读取字符串时遇到空格会停止。

6. 扩展练习

  1. 修改程序,读取用户的名字并输出。
  2. 尝试读取多个值(如年龄、身高、体重)并输出。
  3. 使用 printf 输出一个表格,包含姓名、年龄和身高。
相关推荐
Decay__3 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子5 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF6 小时前
Linux
linux·服务器·网络
万联WANFLOW6 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
听风说ml6 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
学逆向的7 小时前
C 局部静态变量
c语言·开发语言·网络安全
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
Decay__9 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff10 小时前
压缩命令笔记
linux
江华森10 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维