067. 编写代码处理不同数据类型的输入输出

在C语言中,处理不同数据类型的输入输出是一个常见的任务。C语言提供了多种格式化输入输出函数,如 printfscanf,用于处理不同类型的数据。以下是一些常见的数据类型及其对应的输入输出格式。

1. 基本数据类型的输入输出

1.1 整数类型

#include <stdio.h>

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num); // 输入整数
    printf("输入的整数是:%d\n", num); // 输出整数

    return 0;
}

1.2 浮点数类型

#include <stdio.h>

int main() {
    float num;
    printf("请输入一个浮点数:");
    scanf("%f", &num); // 输入浮点数
    printf("输入的浮点数是:%.2f\n", num); // 输出浮点数,保留两位小数

    return 0;
}

1.3 字符类型

#include <stdio.h>

int main() {
    char ch;
    printf("请输入一个字符:");
    scanf(" %c", &ch); // 输入字符,注意前面的空格用于跳过空白字符
    printf("输入的字符是:%c\n", ch); // 输出字符

    return 0;
}

1.4 字符串类型

#include <stdio.h>

int main() {
    char str[100];
    printf("请输入一个字符串:");
    scanf("%s", str); // 输入字符串
    printf("输入的字符串是:%s\n", str); // 输出字符串

    return 0;
}

2. 复合数据类型的输入输出

2.1 结构体类型

#include <stdio.h>

typedef struct {
    int id;
    char name[50];
    float score;
} Student;

int main() {
    Student s;
    printf("请输入学生ID:");
    scanf("%d", &s.id);
    printf("请输入学生姓名:");
    scanf("%s", s.name);
    printf("请输入学生成绩:");
    scanf("%f", &s.score);

    printf("学生信息:\n");
    printf("ID: %d\n", s.id);
    printf("姓名: %s\n", s.name);
    printf("成绩: %.2f\n", s.score);

    return 0;
}

2.2 数组类型

#include <stdio.h>

int main() {
    int arr[5];
    printf("请输入5个整数:\n");
    for (int i = 0; i < 5; i++) {
        scanf("%d", &arr[i]);
    }

    printf("输入的数组是:");
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

3. 格式化输入输出

3.1 格式化输出

#include <stdio.h>

int main() {
    int num = 123;
    float fnum = 3.14159;
    char ch = 'A';
    char str[] = "Hello, World!";

    printf("整数:%d\n", num);
    printf("浮点数:%.2f\n", fnum);
    printf("字符:%c\n", ch);
    printf("字符串:%s\n", str);

    return 0;
}

3.2 格式化输入

#include <stdio.h>

int main() {
    int num;
    float fnum;
    char ch;
    char str[100];

    printf("请输入一个整数:");
    scanf("%d", &num);
    printf("请输入一个浮点数:");
    scanf("%f", &fnum);
    printf("请输入一个字符:");
    scanf(" %c", &ch); // 注意前面的空格用于跳过空白字符
    printf("请输入一个字符串:");
    scanf("%s", str);

    printf("输入的整数是:%d\n", num);
    printf("输入的浮点数是:%.2f\n", fnum);
    printf("输入的字符是:%c\n", ch);
    printf("输入的字符串是:%s\n", str);

    return 0;
}

4. 处理多种数据类型的输入输出

4.1 示例代码

#include <stdio.h>

int main() {
    int num;
    float fnum;
    char ch;
    char str[100];

    printf("请输入一个整数:");
    scanf("%d", &num);
    printf("请输入一个浮点数:");
    scanf("%f", &fnum);
    printf("请输入一个字符:");
    scanf(" %c", &ch); // 注意前面的空格用于跳过空白字符
    printf("请输入一个字符串:");
    scanf("%s", str);

    printf("输入的整数是:%d\n", num);
    printf("输入的浮点数是:%.2f\n", fnum);
    printf("输入的字符是:%c\n", ch);
    printf("输入的字符串是:%s\n", str);

    return 0;
}

示例运行

输入:

请输入一个整数:123
请输入一个浮点数:3.14
请输入一个字符:A
请输入一个字符串:Hello, World!

输出:

输入的整数是:123
输入的浮点数是:3.14
输入的字符是:A
输入的字符串是:Hello, World!

注意事项

  1. 输入缓冲区问题:在使用 scanf 输入字符时,前面加上一个空格(scanf(" %c", &ch)),可以跳过输入缓冲区中的空白字符(如换行符)。
  2. 字符串输入:使用 scanf("%s", str) 输入字符串时,遇到空格会停止读取。如果需要读取包含空格的字符串,可以使用 fgets
  3. 格式化输出:使用 printf 的格式化字符串可以控制输出的格式,如保留小数位数、对齐方式等。
  4. 数据类型匹配:确保输入输出的格式化字符串与变量类型匹配,避免类型不匹配导致的错误。

通过合理使用 scanfprintf,可以方便地处理不同数据类型的输入输出。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)