标签:
程序是人机交互的媒介,有输出必然也有输入。在C语言中,有多个函数可以从键盘获得用户输入:
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a, b, c, d;
- scanf("%d", &a); //输入整数并赋值给变量a
- scanf("%d", &b); //输入整数并赋值给变量b
- printf("a+b=%d\n", a+b); //计算a+b的值
- scanf("%d %d", &c, &d); //输入两个整数并分别赋值给c、d
- printf("c*d=%d\n", c*d); //计算c*d的值
- system("pause");
- return 0;
- }
↙
表示按下回车键。
从键盘输入12,按下回车键,scanf() 就会读取输入数据并赋值给变量 a,本次输入结束,执行下一条语句。接着给变量b赋值,也是同样的道理。"%d
%d"
之间是有空格的,所以输入数据时也要有空格。也就是说,输入数据的格式要和控制字符串的格式一致。
- scanf("%d %d", &a, &b); // 获取用户输入的两个整数,分别赋值给变量 a 和 b
- printf("%d %d", a, b); // 将变量 a 和 b 的是在显示器上输出。
&
符号;&称为取地址符,也就是获取变量在内存中的地址。int
a;
会在内存中分配四个字节的空间,我们将第一个字节的地址称为变量 a 的地址,也就是&a
的值。对于前面讲到的整数、浮点数、字符,都要使用
& 获取它们的地址,scanf 会根据地址把读取到的数据写入内存。
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a=‘F‘;
- int b=12;
- int c=452;
- printf("&a=%#x, &b=%#x, &c=%#x\n", &a, &b, &c);
- system("pause");
- return 0;
- }
注意:你看到的地址是虚拟地址,并不等于它在物理内存中的地址。虚拟内存是现代操作系统因内存管理的需要才提出的概念,dos 下没有这个概念,用户看到的都是真实的地址。CPU 操作的是物理内存地址,所以虚拟地址必须经过转换才能交给 CPU,这是 OS 的工作,对用户是透明的。再来看一个 scanf 的例子:
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a, b, c;
- scanf("%d %d", &a, &b);
- printf("a+b=%d\n", a+b);
- scanf("%d %d", &a, &b);
- printf("a+b=%d\n", a+b);
- scanf("%d, %d, %d", &a, &b, &c);
- printf("a+b+c=%d\n", a+b+c);
- scanf("%d is bigger than %d", &a, &b);
- printf("a-b=%d\n", a-b);
- system("pause");
- return 0;
- }
10 20↙ a+b=30 100 200↙ a+b=300 56,45,78↙ a+b+c=179 25 is bigger than 11↙ a-b=14
"%d
%d"
,中间有一个空格,而我们却输入了10
20
,中间有多个空格。第二个 scanf() 的格式控制字符串为"%d
%d"
,中间有多个空格,而我们却输入了100
200
,中间只有一个空格。这说明 scanf() 对输入数据之间的空格的处理比较宽松,并不要求空格数严格对应。"%d,
%d, %d"
,中间以逗号分隔,所以输入的整数也要以逗号分隔。is
bigger than
分隔。
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- char c;
- c=getchar();
- printf("c=‘%c‘\n", c);
- system("pause");
- return 0;
- }
char c = getchar();
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- int main()
- {
- char c=getche();
- printf("c=‘%c‘\n", c);
- system("pause");
- return 0;
- }
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- int main()
- {
- char c=getch();
- printf("c=‘%c‘\n", c);
- system("pause");
- return 0;
- }
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- int main()
- {
- char str1[30], str2[30]; //定义两个字符数组
- gets(str1);
- scanf("%s", str2);
- puts(str1);
- puts(str2);
- system("pause");
- return 0;
- }
标签:
原文地址:http://blog.csdn.net/shuimanting520/article/details/51357214