博文
C++入门 第4章 函数声明的位置可以在调用函数所在的函数(2008-09-04 17:08:00)
摘要:
函数声明的位置可以在调用函数所在的函数中,也可以在函数之外。如果函数声明放在函数的外部,在所有函数定义之前,则在各个主调函数中不必对所调用的函数再作声明。例如:
char letter(char,char); //本行和以下两行函数声明在所有函数之前且在函数外部
float f(float,float); //因而作用域是整个文件
int i(float, float);
int main( )
{…} //在main函数中不必对它所调用的函数作声明
char letter(char c1,char c2) //定义letter函数
{…}
float f(float x,float y) //定义f函数
{…}
int i(float j,float k) //定义i函数
{…}
如果一个函数被多个函数所调用,用这种方法比较好,不必在每个主调函数中重复声明。
......
C++入门 第4章 对被调用函数的声明和函数原型[续](2008-09-04 17:07:00)
摘要:
说明:
(1) 前面已说明,如果被调用函数的定义出现在主调函数之前,可以不必加以声明。因为编译系统已经事先知道了已定义的函数类型,会根据函数首部提供的信息对函数的调用作正确性检查。
有经验的程序编制人员一般都把main函数写在最前面,这样对整个程序的结构和作用一目了然,统览全局,然后再具体了解各函数的细节。此外,用函数原型来声明函数,还能减少编写程序时可能出现的错误。由于函数声明的位置与函数调用语句的位置比较近,因此在写程序时便于就近参照函数原型来书写函数调用,不易出错。所以应养成对所有用到的函数作声明的习惯。这是保证程序正确性和可读性的重要环节。
......
C++入门 第4章 函数的调用(2008-09-04 17:07:00)
摘要:
4.4 函数的调用
4.4.1 函数调用的一般形式
函数名([实参表列])
如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。实参与形参按顺序对应,一对一地传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。
4.4.2 函数调用的方式
按函数在语句中的作用来分,可以有以下3种函数调用方式:
1. 函数语句
把函数调用单独作为一个语句,并不要求函数带回一个值,只是要求函数完成一定的操作。如例4.1中的printstar( );
2. 函数表达式
函数出现在一个表达式中,这时要求函数带回一个确定的值以参加表达式的运算。如c=2*max(a,b);
3. 函数参数
函数调用作为一个函数的实参。如
m=max(a,max(b,c)); //max(b,c)是函数调用,其值作为外层max函数调用的一个实参
4.4.3 对被调用函数的声明和函数原型
在一个函数中调用另一个函数(即被调用函数)需要具备哪些条件呢?
(1) 首先被调用的函数必须是已经存在的函数。
(2) 如果使用库函数,一般还应该在本文件开头用#include命令将有关头文件“包含”到本文件中来。
(3) 如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)在同一个程序单位中,且位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。
所谓函数声明(declare),就是在函数尚在未定义的情况下,事先将该函数的有关信息通知编译系统,以便使编译能正常进行。
例4.3 对被调用的函数作声明。
#include <iostream>
using namespace std;
int main( )
{float add(float x,float y); //对add函数作声明
float a,b,c;
cout&l......
sql 2005 数据库字段类型说明(2008-09-04 17:01:00)
摘要:
数据类型
类型
描 述
bit
整型
bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off
int
整型
int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节
smallint
整型
smallint 数据类型可以存储从- 215(-32768)到215(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间
tinyint
整型
tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节
numeric
精确数值型
numeric数据类型与decimal 型相同
decimal
精确数值型
decimal 数据类型能用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数
money
货币型
money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一
smallmoney
货币型
smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一
float
近似数值型
float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E......
C++入门 第四章 定义函数的一般形式[续](2008-09-03 18:08:00)
摘要:
有关形参与实参的说明:
(1) 在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此称它们是形式参数或虚拟参数,表示它们并不是实际存在的数据,只有在发生函数调用时,函数max中的形参才被分配内存单元,以便接收从实参传来的数据。在调用结束后,形参所占的内存单元也被释放。
(2) 实参可以是常量、变量或表达式,如max(3, a+b);但要求a和b有确定的值。以便在调用函数时将实参的值赋给形参。
(3) 在定义函数时,必须在函数首部指定形参的类型(见例4.2程序第3行)。
(4) 实参与形参的类型应相同或赋值兼容。例4.2中实参和形参都是整型,这是合法的、正确的。如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换。例如实参a的值为3.5,而形参x为整型,则将3.5转换成整数3,然后送到形参b。字符型与整型可以互相通用。
(5) 实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在调用函数时,编译系统临时给形参分配存储单元。请注意: 实参单元与形参单元是不同的单元。图4.3表示将实参a和b的值2和3传递给对应的形参x和y。
调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。例如,若在执行max函数过程中形参x和y的值变为10和15,调用结束后,实参a和b仍为2和3,见图4.4。
......
C++入门 第四章 定义函数的一般形式(2008-09-03 18:05:00)
摘要:
4.2.1 定义无参函数的一般形式
定义无参函数的一般形式为
类型标识符 函数名([void])
{声明部分
语句
}
例4.1中的printstar和print_message函数都是无参函数。用类型标识符指定函数的类型,即函数带回来的值的类型。
4.2.2 定义有参函数的一般形式
定义有参函数的一般形式为
类型标识符 函数名(形式参数表列)
{声明部分
语句
}
例如:
int max(int x,int y) //函数首部,函数值为整型,有两个整型形参
{int z; //函数体中的声明部分
z=x>y?x:y; //将x和y中的大者的值赋给整型变量z
return (z); //将z的值作为函数值返回调用点
}
C++要求在定义函数时必须指定函数的类型。
4.3 函数参数和函数的值
4.3.1 形式参数和实际参数
在调用函数时,大多数情况下,函数是带参数的。主调函数和被调用函数之间有数据传递关系。前面已提到:在定义函数时函数名后面括号中的变量名称为形式参数(formal parameter,简称形参),在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为实际参数(actual parameter,简称实参)。
例4.2 调用函数时的数据传递。
#include <iostream>......
C++入门 第4章 续--函数与预处理(示例讲解)(2008-09-02 18:33:00)
摘要:
从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们。
(2) 用户自己定义的函数。用以解决用户的专门需要。
从函数的形式看,函数分两类:
(1) 无参函数。调用函数时不必给出参数。
(2) 有参函数。在调用函数时,要给出参数。在主调函数和被调用函数之间有数据传递。
......
C++入门 第4章 函数与预处理(2008-09-02 18:30:00)
摘要:
4.1 概述
4.2 定义函数的一般形式
4.3 函数参数和函数的值
4.4 函数的调用
*4.5 内置函数
*4.6 函数的重载
*4.7 函数模板
*4.8 有默认参数的函数
4.9 函数的嵌套调用
4.10 函数的递归调用
4.11 局部变量和全局变量
4.12 变量的存储类别
4.13 变量属性小结
4.14 关于变量的声明和定义
4.15 内部函数和外部函数
4.16 预处理命令
4.1 概述
个较大的程序不可能完全由一个人从头至尾地完成,更不可能把所有的内容都放在一个主函数中。为了便于规划、组织、编程和调试,一般的做法是把一个大的程序划分为若干个程序模块(即程序文件),每一个模块实现一部分功能。不同的程序模块可以由不同的人来完成。在程序进行编译时,以程序模块为编译单位,即分别对每一个编译单位进行编译。如果发现错误,可以在本程序模块范围内查错并改正。在分别通过编译后,才进行连接,把各模块的目标文件以及系统文件连接在一起形成可执行文件。
在一个程序文件中可以包含若干个函数。无论把一个程序划分为多少个程序模块,只能有一个main函数。程序总是从main函数开始执行的。在程序运行过程中,由主函数调用其他函数,其他函数也可以互相调用。在C语言中没有类和对象,在程序模块中直接定义函数。可以认为,一个C程序是由若干个函数组成的,C语言被认为是面向函数的语言。C++面向过程的程序设计沿用了C语言使用函数的方法。在C++面向对象的程序设计中,主函数以外的函数大多是被封装在类中的。主函数或其他函数可以通过类对象调用类中的函数。无论是C还是C++,程序中的各项操作基本上都是由函数来实现的,程序编写者要根据需要编写一个个函数,每个函数用来实现某一功能。因此,读者必须掌握函数的概念以及学会设计和使用函数。
“函数”这个名词是从英文function翻译过来的,其实function的原意是......
C++ 找出100~200间的全部素数(2008-09-02 18:27:00)
摘要:
编写程序如下:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main( )
{int m,k,i,n=0;
bool prime; //定义布尔变量prime
for(m=101;m<=200;m=m+2) //判别m是否为素数,m由101变化到200,增量为2
{prime=true; //循环开始时设prime为真,即先认为m为素数
k=int(sqrt(m)); //用k代表根号m的整数部分
for(i=2;i<=k;i++) //此循环作用是将m被2~根号m除,检查是否能整除
if(m%i==0) //如果能整除,表示m不是素数
{ prime=false; //使prime变为假
break; //终止执行本循环
}
if (prime) //如果m为素数
{cout......
C++语言程序设计试题[2](2008-09-08 17:38:00)
摘要:试题答案及评分标准
(供参考)
一、选择题(每小题1分,共6分)
评分标准:选对者得1分,否则不得分。
1. B 2. C 3. D
1. C 5. A 6. D
二、填空题(每小题2分,共24分)
评分标准:每题与参考答案相同者得2分,否则酌情给分。
1. 43-18=25 2. H
3. 初始化 4. ++x
5. false 或 0 &n......