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

C语言中的输入控制重要基础

在C语言编程中,处理输入数据是一个常见的任务。根据不同的情况,我们可以采用不同的输入控制方法。本文将介绍三类输入控制方式,分别是已知数据组数的输入、以特定符号结束的输入,以及以EOF结束的输入。

1. 已知数据组数的输入

在某些情况下,输入的数据组数是已知的。这种情况下,我们可以首先读取一个整数,表示数据组数,然后通过循环逐组处理数据。

示例代码:

#include <stdio.h>
int main() {int n; // 数据组数printf("请输入数据组数: ");scanf("%d", &n);  // 读取数据组数for (int i = 0; i < n; i++) {int num1, num2;printf("请输入第 %d 组数据 (两个整数,用空格分隔): ", i + 1);scanf("%d %d", &num1, &num2);  // 读取每组数据printf("第 %d 组数据是: %d 和 %d,和为: %d\n", i + 1, num1, num2, num1 + num2);}return 0;
}

输入输出示例:

请输入数据组数: 3
请输入第 1 组数据 (两个整数,用空格分隔): 5 10
第 1 组数据是: 5 和 10,和为: 15
请输入第 2 组数据 (两个整数,用空格分隔): 3 4
第 2 组数据是: 3 和 4,和为: 7
请输入第 3 组数据 (两个整数,用空格分隔): 8 2
第 3 组数据是: 8 和 2,和为: 10

解释:

  • 用户输入的数据组数为3,每组数据由两个整数构成,程序输出它们的和。
  • 第一步:通过 scanf("%d", &n) 读取数据组数 n
  • 第二步:使用 for 循环遍历 n 次,逐组读取数据并进行处理。

2. 以特定符号结束的输入

在一些情况下,输入的数据组数是不确定的,但可以通过某个特定符号(如 @-1 等)来结束输入。可以使用 while 循环和 scanf 函数来实现。

示例代码:

#include <stdio.h>int main() {char c; // 用于存储输入字符printf("请输入数据(输入 '@' 结束):\n");int count = 0; // 统计输入字符的数量while (scanf(" %c", &c) && c != '@') {  // 读取字符,直到遇到 '@'printf("你输入的字符是: %c\n", c);count++;}printf("你总共输入了 %d 个字符。\n", count);return 0;
}

输入输出示例:

请输入数据(输入 '@' 结束):
a
你输入的字符是: a
b
你输入的字符是: b
c
你输入的字符是: c
@
你总共输入了 3 个字符。

解释:

  • 用户输入多个字符,直到输入 @ 为止,程序统计并输出输入的字符数量。
  • 条件判断while 循环读取字符,直到遇到 @scanf(" %c", &c) 中的空格用于忽略前导空格和换行符注意%c前面的空格.
  • 处理输入:在每次循环中,程序输出读取的字符。

3. 以EOF结束的输入

在某些情况下,输入没有明确的结束项,而是通过文件结束符(EOF)来结束。可以通过检查 scanf 的返回值来实现此功能。在Windows系统中,可以通过 Ctrl + Z 组合键然后按回车键模拟EOF。

示例代码:

#include <stdio.h>
int main() {int num; // 存储输入的整数printf("请输入数字(Ctrl + Z 然后回车键 结束输入):\n");int sum = 0; // 存储输入数字的总和int count = 0; // 统计输入数字的数量while (scanf("%d", &num) != EOF) {  // 循环读取整数,直到EOFsum += num;count++;printf("你输入的数字是: %d\n", num);}if (count > 0) {printf("你总共输入了 %d 个数字,和为: %d\n", count, sum);} else {printf("没有输入任何数字。\n");}return 0;
}

输入输出示例:

请输入数字(Ctrl + Z 结束输入):
1
你输入的数字是: 1
2
你输入的数字是: 2
3
你输入的数字是: 3
Ctrl + Z
你总共输入了 3 个数字,和为: 6

解释:

  • 用户输入多个整数,程序在用户输入 EOF 时结束读取,并输出输入的数字总和和数量。
  • EOF检测:通过 scanf("%d", &num) != EOF 检查输入是否结束。
  • 数据处理:在每次成功读取整数后,输出该数字。

总结

在C语言中,输入控制的方式多种多样。根据数据的特点和输入的要求,可以选择合适的方法进行数据读取:

  1. 已知数据组数:使用 scanf 读取组数,然后循环处理每组数据。
  2. 特定符号结束:使用 while 循环,直到输入特定字符结束。
  3. EOF结束:使用 while 循环,检测输入是否结束。

这些方法能够帮助你灵活地处理输入数据,适应不同的需求和场景。

注解:
在格式字符串的开头添加空格,例如 scanf(" %c", &c),是为了忽略所有的前导空白字符(空格、换行符、制表符等)。这意味着在读取字符时,程序会自动跳过输入缓冲区中任何空白字符,直到找到一个非空白字符进行读取。这在处理用户输入时特别有用,可以防止用户意外输入空白字符导致的错误。

http://www.lryc.cn/news/448517.html

相关文章:

  • Vue 学习
  • Redis集群的两种方式
  • QT--基础
  • 一、前后端分离及drf的概念
  • AI垃圾溢出识别摄像机
  • 【抽代复习笔记】29-群(二十三):生成子群的两道例题及子群陪集的定义
  • 安全防护装备检测系统源码分享
  • easyexcel常见问题分析
  • 精通推荐算法31:行为序列建模之ETA — 基于SimHash实现检索索引在线化
  • Python知识点:如何使用Python进行卫星数据分析
  • Python实现Phong着色模型算法
  • 异步框架 fastapi -- 连接mysql数据库
  • Spring 全家桶使用教程 —— 后端开发从入门到精通
  • AI动漫转真人终极教程!3步做出爆款内容,音乐推广号变现
  • vue2 vconsole有助于移动端开发页面调试
  • 别再使用[]来获取字典的值了,来尝试一下这些方法
  • 如果你不愿意冒一切风险,就不要成为创业者:如何建立一个年收入 1800 万美元的支付业务
  • 4.浮点数二分【求数的平方根】
  • 简站wordpress主题产品多图ACF插件设置方法
  • USB设备在Linux系统中的识别和加载过程
  • nacos通过@Value动态刷新配置
  • [研发工具箱] 系列3.机电类常用的分类网站
  • volatile关键字最全原理剖析
  • mysql学习教程,从入门到精通,SQL RIGHT JOIN语句(24)
  • LeaferJS 动画、状态、过渡、游戏框架
  • 14年408-计算机网络
  • 告别熬夜,追求高效写作:芝士AI写作,效率与质量的双重提升
  • stm32单片机个人学习笔记8(TIM输出比较)
  • 【qt】QQ仿真项目1
  • Vue3:shallowRef与shallowReactive