MST

星途 面试题库

面试题:C语言中printf()和scanf()的格式控制问题

在C语言中,已知有一个整型变量num,一个浮点型变量f,一个字符型变量ch。请用printf()和scanf()分别实现将用户输入的值正确赋给这些变量,并以合适的格式输出这些变量的值。同时,解释如果scanf()中格式控制字符串与输入数据类型不匹配会出现什么情况。
23.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int num;
    float f;
    char ch;

    // 使用scanf获取用户输入
    printf("请输入一个整数、一个浮点数和一个字符,中间用空格隔开:\n");
    scanf("%d %f %c", &num, &f, &ch);

    // 使用printf输出变量的值
    printf("整数 num: %d\n", num);
    printf("浮点数 f: %.2f\n", f);
    printf("字符 ch: %c\n", ch);

    return 0;
}

如果scanf()中格式控制字符串与输入数据类型不匹配,可能出现以下情况:

  1. 数据读取错误:例如,使用%d读取一个非整数(如字符),scanf将无法正确读取数据,导致变量的值可能是未初始化的垃圾值。
  2. 输入流混乱:错误的格式匹配可能使输入流中的数据没有被正确消耗,影响后续scanf操作。例如,在期望读取整数时输入了字符,该字符可能会残留在输入流中,影响下一个scanf操作的正常读取。
  3. 返回值异常scanf函数返回成功匹配并赋值的输入项数。当格式不匹配时,返回值可能小于预期,通过检查返回值可以判断scanf操作是否成功。