第二讲:输入输出
//
课次
:
第二讲
//
时间
:2008.4.13(
晚上
)
//
基本内容:
C
语言的输入输出
目录
在早期的时候,计算机的最主要的工作是计算。也就是“程序员”通过纸带将一些必须的数据输入给计算机,然后计算机执行相应的程序,最后,计算机将执行的结果输出。
在信息技术高度发达的今天,计算机运行程序的工作流程还是同早期差不多。不过,今天的计算机最主要的功能不再是计算,而是信息的管理。由于操作系统的极大进步,数据的输入也不再是“程序员”通过纸带输入,而是由操作系统给用户提供更多更好的友好界面。
从上面的描述,我们可以知道计算机执行一个程序的基本流程:
1.
程序员(用户)输入一些交互的数据。
2.
计算机执行程序。
3.
计算机输出结果。
由此我们可以得出这么一个结论:“输入”和“输出”是一个非常重要的部分。
补充:
顺便说一句,今后我们的编程都是要涉及到“输入”和“输出”。
本次课程要涉及到两种输入输出的方式:
C
的输入输出方式、
C++
的输入输出方式。
C 的输入输出方式
首先我们看一段代码:
#include <stdio.h>
int
main()
{
int a = 0; //
定义一个int类型的变量
char ch = '/0'; //
定义一个char类型的变量
float f = 0.0; //
定义一个float类型的变量
double d = 0.0; //
定义一个double类型的变量
//input
printf("please input ch:");
scanf("%c", &ch); //
获得一个char类型的输入,并把它赋值给ch
printf("please input a:");
scanf("%d", &a);//
获得一个int类型的输入,并把它赋值给a
printf("please input f:");
scanf("%f", &f);//
获得一个float类型的输入,并把它赋值给f
printf("please input d:");
scanf("%lf", &d);//
获得一个double类型的输入,并把它赋值给d
//output
//
将刚刚输入的数据都输出来
printf("a = %d/tch = %c/tf = %f/td = %lf/n", a, ch, f, d);
return 0;
}
|
现在将对上面的代码做一些解释
:
注释:
所谓的注释就是可以写在代码中帮助记忆、理解代码的一些语句。但是,这些语句不会被编译器所识别,因此不影响其他代码。在
C/C++
中可以利用
”
//”
和
”
/* */”
注释代码。
a)
”//”
表示
:
行注释,在“
//
”之后这一行的代码都被注释。
b)
“/* */”:
段注释,所有的在
”
/*”
和
”
*/”
之间的代码都被注释。
头文件:
#include <stdio.h>
将
stdio.h
这个头文件包含到这个工程中来。
主函数:
int
main()
主函数,每个
C/C++
程序必须有一个
main
函数,其格式见源代码。
定义变量:
int
a = 0;
定义一个变量,其格式为
:
变量类型
变量名
(=
初始值
);
其中括号中的可有可无。
变量的类型:
整体上可以分为这么几个部分:整数、字符类型、数组类型、指针类型。
整形:
int
long short
。我们通过
sizeof
()
的得到变量所占内存的大小。
int
的大小不确定,是于编译器有关系的。在
Visual studio 2003
中
int
是
4
个字节。
long
占
4
个字节。
short
占
2
个字节。同时整形的都可以分成
signed(
有符号
)
的和
unsigned
无符号的。有符号的指该变量允许可正可负,无符号的只允许正数(包括
0
)。
字符型
:char
,相当于有符号的整形,但是在内存中的大小只占一个字节。
数组类型:暂时不讲。
指针类型:暂时不讲。
输出函数:
printf
函数
:printf
Header(
头文件
): stdlib.h.
Link Library(
动态链接库
): coredll.dll.
函数原型:
int
printf(
const char* format [, argument]...
);
参数含义:
format(
第一个参数
)
:格式化的字串。
%d: int
型的变量
; %f: float
型的变量
; %ld:long
型的变量
; %lf: double
型的变量
; %c:char
型的变量
; %s:
字符串类型的变量。
”/t”
表示一个
”tab”
,
”/n”
表示回车换行。
...(
第二个参数
):
根据
format
填入相应的变量。
返回值:
如果程序执行成功返回打印的字符串数目。
|
输入函数:
scanf
函数
:scanf
Header(
头文件
): stdlib.h.
Link Library(
动态链接库
): coredll.dll.
函数原型
:
int
scanf(
const char *format [,
argument]...
);
参数含义:
(
与
printf
的参数一致
)
format(
第一个参数
)
:格式化的字串。
%d: int
型的变量
; %f: float
型的变量
; %ld:long
型的变量
; %lf: double
型的变量
; %c:char
型的变量
; %s:
字符串类型的变量。
”/t”
表示一个
”tab”
,
”/n”
表示回车换行。
...(
第二个参数
):
根据
format
填入相应的变量。
返回值:
返回已经成功转换和赋值的输入字符串的个数。如果,输入的字符串没有被成功的赋值则不包括在返回值中。
|
函数的使用:
输出一个变量:
int i = 0; printf(“i = %d”, i); (
输入一个
int
类型的变量,其他类型见源代码。
从键盘获得一个输入:
int i = 0; scanf(“%d”, &i); (
从键盘获取一个
int
类型的变量,其它类型见源代码
)
。
C++的输入输出方式
看看
c++
源代码
#include <iostream>
using namespace std;
int
main()
{
int a = 0; //
定义一个int类型的变量
char ch = '/0'; //
定义一个char类型的变量
float f = 0.0; //
定义一个float类型的变量
double d = 0.0; //
定义一个double类型的变量
//input
cout << "please input ch:" << endl;
cin >> ch; //
获得一个char类型的输入,并把它赋值给ch
cout << "please input a:" << endl;
cin >> a;//
获得一个int类型的输入,并把它赋值给a
cout << "please input f:" << endl;
cin >> f;//
获得一个float类型的输入,并把它赋值给f
cout << "please input d:" << endl;
cin >> d;//
获得一个double类型的输入,并把它赋值给d
//output
//
将刚刚输入的数据都输出来
cout << "a = " << a << endl;
cout << "ch = " << ch << endl;
cout << "f = " << f << endl;
cout << "d = " << d << endl;
return 0;
}
|
一些解释:
头文件
#include <iostream>
using
namespace std;
在
C++
中引入了名字空间
(namespace)
来解决命名冲突的问题。上面两句的含义相当于
: #include <iostream.h>
C++
输入函数
cin >>
变量
; cin
是一个
istream
的变量。
cin
是一个保存在
std
名字空间(
namespace
)下面的全局的变量。
>>
是
istream
(一个
class
)实现的操作符重载。(后面课程中解释)
C++
输出函数
cout <<
变量
; cout
是一个
ostream
(
一个
class)
的变量。
cout
是一个保存在
std
名字空间(
namespace
)下面的全局的变量。
<<
是
ostream
(一个
class
)实现的操作符重载。(后面课程中解释)
1)
练习用“
C
输入输出函数”和“
c++
输入输出函数”两套函数。
2)
复习变量的类型,以及它们这件的区别。
3)
测试“
C/C++
输入函数”,比如第一个
int
类型变量输入一个其他类型的数值,看看会发生什么结果。
我们发现用
C++
的输入输出函数比
C
的输入输出函数简单的多,所以,以后我们在今后的“
C
编程之旅”的输入输出函数就选择“
C++
的输入输出函数”。