如果孤独感 发表于 2020-3-7 20:52:11

为什么scanf的第一个字符输入无效

为什么第一次输入时a没有反应总是为0
#include <stdio.h>

int main()
{
        float h,H;
        int n,N,a,b,;

        printf(“输入h”);
        getchar();
        printf(“输入N");
        scanf(”%i%i“,&a,&N);
        printf(”%d,%d“,a,N);

zltzlt 发表于 2020-3-7 20:54:00

你确定这段代码可以运行?

jackz007 发表于 2020-3-7 21:52:56

本帖最后由 jackz007 于 2020-3-7 21:54 编辑

      通篇最大的问题是:所有的括号、逗号、分号都是全角的!!!
#include <stdio.h>

int main()
{
      float h , H            ;
      int n , N , a , b      ;

      printf("输入h : ")       ;
      scanf("%f" , & h)      ;
      printf("h = %.3f\n" , h) ;
      printf("输入N : ")       ;
      scanf("%d" , & N)      ;
      printf("N = %d\n" , N)   ;
}

yexing 发表于 2020-3-7 23:51:22

本帖最后由 yexing 于 2020-3-7 23:59 编辑

这段代码还可以运行?编译就错了!
语法错误,使用全角符号,函数末尾没有右花括号...
改正如下:
#include <stdio.h>

int main()
{
        float h, H;
        int n, N, a, b;
       
        printf("输入h: ");
        scanf("%f", &h);//不要用getchar获取内容,如果硬要用要这样:h = getchar();
        printf("输入N: ");
        scanf("%d%d", &a, &N); //???明明写着输入N却还有a,这里我保留源代码思路,不作修改
        printf("%d, %d", a, N);
       
        return 0;
}
注意你的符号必须为半角符号,也就是英文输入状态下的符号。
编程必须 Speak English!

叫我miniQ 发表于 2020-3-7 23:55:48

先不说你这个;打的就有点离谱
而且“当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止。

major_lyu 发表于 2020-3-8 09:45:36

不管你这代码语法先。
scanf之前的那个getchar()会读掉一个字符。所以你终端给的第一个字符是被getchar()读入并丢弃掉了。第二,三个分别赋值给a和N。

至于语法符号之类的编译器和编辑器的语法检查应该会很明显的提示你的。

如果孤独感 发表于 2020-3-8 14:49:32

zltzlt 发表于 2020-3-7 20:54
你确定这段代码可以运行?

简略的打了一下有疑问的地方不可以复制太麻烦

如果孤独感 发表于 2020-3-8 14:50:06

jackz007 发表于 2020-3-7 21:52
通篇最大的问题是:所有的括号、逗号、分号都是全角的!!!

简略的打了一下有疑问的地方不可以复制太麻烦

如果孤独感 发表于 2020-3-8 14:50:37

yexing 发表于 2020-3-7 23:51
这段代码还可以运行?编译就错了!
语法错误,使用全角符号,函数末尾没有右花括号...
改正如下:


简略的打了一下有疑问的地方不可以复制太麻烦

如果孤独感 发表于 2020-3-8 14:54:42

叫我miniQ 发表于 2020-3-7 23:55
先不说你这个;打的就有点离谱
而且“当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键 ...

简略的打了一下有疑问的地方不可以复制太麻烦
我不太明白这句话的意思?连按两次回车?不行啊

如果孤独感 发表于 2020-3-8 14:57:15

major_lyu 发表于 2020-3-8 09:45
不管你这代码语法先。
scanf之前的那个getchar()会读掉一个字符。所以你终端给的第一个字符是被getchar() ...

简略的打了一下有疑问的地方不可以复制太麻烦,抱歉。
所以只有scanf分开写在编译的时候才可以分两行么?

如果孤独感 发表于 2020-3-8 14:59:09

等回复就给6#major_lyu吧

major_lyu 发表于 2020-3-8 16:11:28

#include <stdio.h>

int main()
{
    float h, H;
    int n, N, a, b;

    printf("输入h:\n");
    //getchar(); //getchar是从终端获取一个字符,读取的数据按字符处理
    //读取float类型的数据应该用scanf
    scanf("%f", &h);
    printf("输入a和N:\n");
    scanf("%d %d", &a, &N);
    printf("%d,%d", a, N);
    return 0;
}

如果孤独感 发表于 2020-3-8 20:39:58

1024-web 发表于 2020-3-8 18:16
#include

main()


谢谢
页: [1]
查看完整版本: 为什么scanf的第一个字符输入无效