为什么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); 你确定这段代码可以运行? 本帖最后由 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: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! 先不说你这个;打的就有点离谱
而且“当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止。 不管你这代码语法先。
scanf之前的那个getchar()会读掉一个字符。所以你终端给的第一个字符是被getchar()读入并丢弃掉了。第二,三个分别赋值给a和N。
至于语法符号之类的编译器和编辑器的语法检查应该会很明显的提示你的。 zltzlt 发表于 2020-3-7 20:54
你确定这段代码可以运行?
简略的打了一下有疑问的地方不可以复制太麻烦 jackz007 发表于 2020-3-7 21:52
通篇最大的问题是:所有的括号、逗号、分号都是全角的!!!
简略的打了一下有疑问的地方不可以复制太麻烦 yexing 发表于 2020-3-7 23:51
这段代码还可以运行?编译就错了!
语法错误,使用全角符号,函数末尾没有右花括号...
改正如下:
简略的打了一下有疑问的地方不可以复制太麻烦 叫我miniQ 发表于 2020-3-7 23:55
先不说你这个;打的就有点离谱
而且“当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键 ...
简略的打了一下有疑问的地方不可以复制太麻烦
我不太明白这句话的意思?连按两次回车?不行啊 major_lyu 发表于 2020-3-8 09:45
不管你这代码语法先。
scanf之前的那个getchar()会读掉一个字符。所以你终端给的第一个字符是被getchar() ...
简略的打了一下有疑问的地方不可以复制太麻烦,抱歉。
所以只有scanf分开写在编译的时候才可以分两行么? 等回复就给6#major_lyu吧 #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;
}
1024-web 发表于 2020-3-8 18:16
#include
main()
谢谢
页:
[1]