超级甲鱼粉 发表于 2019-12-10 00:11:16

c语言初学者求助


这个程序输入1之后不应该直接输出   please input a number:1么,为什么输完1回车以后没有出来东西,再输一个1按回车才出来那个scanf(“%d”,&n)的值,再输1才出现the number is 1 ?
                                                1
                                                the number is 1

#include <stdio.h>

void main()

{
        int n;
        printf("please input a number:");
        scanf("%d",&n);
        printf("%d",scanf("%d",&n));
        while( scanf("%d",&n) != 1)
        {
                printf("you didn't input a number!!\nplease input again!!\n");
                getchar();
        }
        if(n==1)
        {
                printf("the number is %d\n",n);
        }
}

yihipi 发表于 2019-12-10 01:17:40

scanf("%d",&n)

pheron 发表于 2019-12-10 09:54:46

      scanf("%d",&n);
      printf("%d",scanf("%d",&n));
第一个scanf()获取了你第一个值,保存到了n,然后运行到下一行,scanf("%d",&n)又在等待你键入一个数值,键入后输出这个值。然后下一个scanf()又要获取一个输入......

你还不懂电脑的思维方式,看程序要一行一行,一个关键字一个关键字的往下捋,没经过一个关键字,你要考虑到程序做了什么动作,变量发生了什么变化。

bin554385863 发表于 2019-12-10 09:55:29

你先好好看看你的代码对n做了几次赋值再说,再好好捋一捋你的逻辑。

沉默的人e 发表于 2019-12-11 17:09:52

楼主,解释清楚以下几个问题
scanf()这个东西到底是什么?,他到底是干什么的?

不需要你揭示出它的内涵,只需要你解释明白,这个东西的性质,功能是什么,怎么起作用的?

沉默的人e 发表于 2019-12-11 17:16:19


希望在你看这层楼之前,想清楚我之前的问题



1.scanf()是个函数,这个函数的作用是通过用户的键盘输入,以一定的格式传递给你的变量.
所以scanf()是对你的变量下手的,最终scanf尘归尘土归土,什么也没有变,
变的是你的变量.
每一次执行scanf()都会下一次手,每一次执行scanf,他都会朝你要这个变量的值.
所以你上面的代码,一共有几次scanf,他就会向你要几次值.
页: [1]
查看完整版本: c语言初学者求助