首页 > 试题广场 >

运行下面的程序,在要求您输入名字时,请输入您的名字和姓氏。会

[问答题]
运行下面的程序,在要求您输入名字时,请输入您的名字和姓氏。会发生什么?为什么?
// talkback.c -- 一个能为您提供一些嘻嘻的对话程序
#include <stdio.h>
#include <string.h>   // 提供strlen()函数的原型
#define DENSITY 62.4  // 人的密度(单位是英镑/每立方英尺)
int main()
{
    float weight, volume;
    int size, letters;
    char name[40];    // name是一个有40个字符的数组
    printf("Hi! What's your first name?\n");
    scanf("%s", name);
    printf("%s, What's your weight in pounds?\n", name);
    scanf("%f", &weight);
    size = sizeof name;
    letters = strlen(name);
    volume = weight / DENSITY;
    printf("Well, %s, your volume is %2.2f cubic feet.\n",
           name, volume);
    printf("Also, your first name has %d letters, \n",
           letters);
    printf("and we have %d bytes to store it in.\n", size);
    return 0;
}
推荐
程序不能正常工作。第一个scanf()语句只是读入您的名而没有读入您的姓,您的姓依然存储在输入“缓冲区”(缓冲区只是一块用来存放输入的临时存储区域)中。当下一个scanf()语句想要读入您的体重时,它从上次读入结束的地方开始,这样就试图把您的姓作为体重来读取。这会使scanf()失败。另一方面,如果您对姓名请求做出像Lasha 144这样的响应,程序会使用144作为您的体重,虽然您是在程序请求体重之前输入144的。
发表于 2018-05-05 22:21:54 回复(0)
为什么只读入了名没有读入姓?
发表于 2020-02-11 12:02:15 回复(0)
发表于 2019-01-15 21:18:28 回复(0)