水深 发表于 2019-9-14 08:34:46

第18课问题

#include <stdio.h>

int main()
{
    int i,n;

    printf("请输入字符的个数:");
    scanf("%d",&n);

    char a;

    printf("请输入字符:");
    for (i = 0; i < n; i++)
    {
      scanf("%c",&a);
    }
    a = '\0';
    printf("你输入的字符串是:%s",a);

    return 0;
}

为什么能直接输入一段字符,不是for循环吗?
以及最后的printf("你输入的字符串是:%s",a)为何能实现依次写入字符

蜡笔小舅 发表于 2019-9-14 10:52:47

第一个问题:因为scanf函数在for循环里面,for每循环一次,也就是i每增加一,都会执行一次scanf,在运行过程中,你每输入一个字符,就会实现一次循环,然后i加一,自动进入下一次循环,你就可以再次输入一个字符,因为这个时间非常短,表面上看就是直接输入了一段字符。
第二个问题:这个printf函数里的a是数组名,和指针很像,这个a指向的是数组中的第一个元素,当执行printf函数时,从a指向的第一个元素开始,把整个数组都调出来了。我刚学到指针这块,所以说的不是太清晰,等你学到指针就懂了。
页: [1]
查看完整版本: 第18课问题