1-01 C++起步 —— 最简单的程序
来源:互联网 发布:西安博达软件怎么样 编辑:程序博客网 时间:2024/05/09 17:29
如果要从键盘上输入两个复数, 计算它们的和并输出到屏幕。假设C语言中有复数COMPLEX数据类型, 那么程序写起来就简单了:
#include <iostream>
using namespace std;
int main() {
COMPLEX a, b, c;
cout << "a = ? "; cin >> a; // 输入第一个复数
cout << "b = ? "; cin >> b; // 输入第二个复数
c = a + b; // 求和
cout << "c = " << c << endl; // 输出结果
return 0;
}
然而事实上C语言中并没有复数COMPLEX数据类型, 所以这程序只是画饼充饥。但在C++里, 我们最终可以实现它。
现在刚刚起步, 为了完成这个功能, 我们可能写出下面的代码:
#include <iostream>
using namespace std;
int main() {
double ar, ai, br, bi, cr, ci;
cout << "a = ? "; cin >> ar >> ai; // 输入第一个复数
cout << "b = ? "; cin >> br >> bi; // 输入第二个复数
cr = ar + br; ci = ai + bi; // 求和
cout << "c = (" << cr << ", " << ci << ")/n"; // 输出结果
return 0;
}
假设第一个复数是 3+4i, 第二个复数 2-5i, 运行程序时输入如下数据, 即可得到计算结果:
a = ? 3 4
b = ? 2 -5
c = (5, -1)
在这个程序里, 用六个零散的变量ar, ai, br, bi, cr, ci分别表示三个复数的实部和虚部, 它们之间并无紧密的逻辑联系, 在下一篇文章1-02里将用结构(struct)来组织数据, 得到一个更好的版本。
经常有人问: 主函数main为什么要返回一个零值呢?
C/C++程序启动后, 自动调用main函数; 当main函数执行完毕, 整个程序也就随之结束。显然, 主函数结束以后, 它返回的值也就反馈给操作系统了 —— 所以它也被称为出口代码。这里有个约定, 程序的出口代码为0, 表示正常结束, 否则表示异常结束。
建议大家不要把main函数定义成无值类型的函数, 例如:
void main() {
......
}
这不是好的写法 —— 因为出口代码不明确。
又有人要问: 程序只执行主函数, 那其它函数还有什么用处?
简单地说, 如果其它函数被main函数直接或间接调用到了, 那么它们就会执行, 否则就不会执行。因此, 一般情况下, 主函数里主要是对其它函数的调用, 它包括了整个程序的动作轮廓。
那么主函数与其它函数的区别是什么?
主函数的参数, 即从操作系统获取的信息, 是通过命令行发出的信息, 它是若干个由空格隔开的字符串。它的形式参数有两个, 一个是字符串的个数, 另一个是字符串的数组。由于现在使用的是Windows操作系统, 所以命令行参数的使用越来越少了。主函数的返回值是出口代码, 向操作系统反馈结束的状态——正常, 或异常。下面是主函数的原型:
int main(int argc, char *argv[]);
主函数以外的其它函数, 根据各自的功能编写。它们都从形式参数表中获取调用函数传送过来的信息, 经过计算和处理后得到的结果, 作为函数的返回值反馈给调用函数。下面是计算阶乘的函数, 它从形式参数中获取n的值, 经过计算得到了阶乘值, 反馈给调用函数:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
double Fac(int n);
int main() {
int x;
double y;
cout << "x = ? "; cin >> x;
y = Fac(x);
cout << x << "! = " << y << endl;
return 0;
}
double Fac(int n) {
int k;
double p = 1;
if (n<0) {
cerr << "参数错误!/n";
exit(1);
}
else {
for (k = 1; k <= n; k ++) p *= k;
}
return p;
}
假设用户输入5, 则程序的执行结果如下:
n = ? 5
5! = 120
程序执行的过程是: 程序启动后首先执行主函数, 第7行的输出语句在屏幕上显示: "n = ? ", 输入语句等待用户的输入。若用户输入: "5"并回车, 则数据5存入变量x。第8行调用函数Fac, 将x的值5传递给Fac函数的形式参数n, 经过第19行的循环, 反复做乘法计算, 变量p的值最后变成120, 到第21行由return语句将计算结果送回到主函数。回到第8行, Fac函数的函数值120被存入变量y, 到第9行在屏幕上输出结果: "5! = 120"。
最后要说明的一点是: 主函数可以调用其它函数, 其它函数之间可以互相调用, 但其它函数不能调用主函数!
- 1-01 C++起步 —— 最简单的程序
- Objective-C开发——最简单的Objective-C程序与基础语法解析
- 一个最简单的Objective C 程序
- 编译一个最简单的C程序
- 1.1 起步 一个简单的win32程序
- 《C语言及程序设计》程序阅读——函数起步
- 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法
- 黑马程序员——IOS基础---Objective-C第一节课---最简单的OC程序
- 最简单的程序
- c语言编程基础------0.5.1 c应用程序之最简单的程序---Hello world!
- C#事件演示程序1)——一个最简单的C#事件处理程序
- [Code]最简单的密码鉴别程序(c语言版)
- Prog1: helloworld.c 最简单的MPI程序
- 西南科技大学OJ题 最简单的C程序0612
- 循序渐进做项目系列:最简单的C/S程序——让服务器来做加法
- 最简单的shell程序——yash
- 最简单的window程序——API版本
- 最简单的windows程序——MFC版本
- Tiny Hexer 1.7.1.0 by Markus Stephany
- VC++.NET——新世纪的新构想
- 黑板
- C++指针探讨
- IT从业人员必看的10大论坛
- 1-01 C++起步 —— 最简单的程序
- 嵌套的DataGrid如何为子DataGrid动态增加模板列
- 命令行里改ip!
- SEO工具集
- Linux服务器教程之路4--Linux下Apache HTTP服务器与代理服务器的搭建
- 一个包含详细注释的扫描器C源代码
- 一种新的穿透防火墙的数据传输技术
- 外部符号错误:_MAIN,_WINMAIN@16,__BEGINTHREAD
- WIN2K命令行Sniffer的源码