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

相关推荐
Kisorge36 分钟前
【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数
c语言·开发语言
轻口味2 小时前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学3 小时前
QT-简单视觉框架代码
开发语言·qt
威桑3 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服3 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生3 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生3 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans3 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手3 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Chinese Red Guest3 小时前
python
开发语言·python·pygame