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

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

1. 已知数据组数的输入

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

示例代码:

c 复制代码
#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 函数来实现。

示例代码:

c 复制代码
#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。

示例代码:

c 复制代码
#include <stdio.h>
int main() {
    int num; // 存储输入的整数
    printf("请输入数字(Ctrl + Z 然后回车键 结束输入):\n");
    int sum = 0; // 存储输入数字的总和
    int count = 0; // 统计输入数字的数量

    while (scanf("%d", &num) != EOF) {  // 循环读取整数,直到EOF
        sum += 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),是为了忽略所有的前导空白字符(空格、换行符、制表符等)。这意味着在读取字符时,程序会自动跳过输入缓冲区中任何空白字符,直到找到一个非空白字符进行读取。这在处理用户输入时特别有用,可以防止用户意外输入空白字符导致的错误。

相关推荐
AIFarmer12 分钟前
【无标题】
开发语言·c++·算法
昇腾CANN26 分钟前
TileLang-Ascend 算子性能优化方法与实操
开发语言·javascript·性能优化·昇腾·cann
沐知全栈开发37 分钟前
ionic 手势事件详解
开发语言
lsx2024061 小时前
Bootstrap 按钮
开发语言
神仙别闹1 小时前
基于 Python 实现 BERT 的情感分析模型
开发语言·python·bert
禾叙_1 小时前
【langchain4j】结构化输出(六)
java·开发语言
NQBJT1 小时前
VS Code配置Python人工智能开发环境
开发语言·人工智能·vscode·python
byoass1 小时前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
南境十里·墨染春水1 小时前
C++笔记 STL——set
开发语言·c++·笔记
L1624761 小时前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php