文档库 最新最全的文档下载
当前位置:文档库 › 变量的定义与声明

变量的定义与声明

变量的定义与声明
变量的定义与声明

1.变量的定义

从前面的章节可以看出,程序中所有的东西几乎都有名字。然而字面量却是个例外,它没有名字。那么使用变量,我们就可以为某个值取名字了。实际上,我们是为系统内存中用于保存数据的某块空间取名字。

ANSI C规定:变量必须“先定义、后使用”,因此当用C定义变量时,不仅需要指定变量名,而且还必须告诉编译器其存储的数据类型,变量类型告诉编译器应该在内存中为变量名分配多大的存储单元,用来存放相应变量的值(变量值),而变量仅仅是存储单元的别名,供变量使用的最小存储单元是字节(Byte)。

由此可见,每个变量都占据一个特定的位置,每个存储单元的位置都由“地址”唯一确定并引用,就像一条街道上的房子由它们的门牌号码标识一样。即从变量中取值就是通过变量名找到相应的存储地址,然后读取该存储单元中的值,而写一个变量就是将变量的值存放到与之相应的存储地址中去。

由于变量的定义不是可执行代码,因此要求局部变量的定义必须位于用“{}包围的程序块”的开头,即在可执行代码的前面。比如:

int lower_limit = 80; //定义lower_limit为整型变量

即在定义lower_limit为int类型数据时,系统就已经为变量lower_limit分配了存储单元。请注意区分变量名和变量值这两个不同的概念,其中,lower_limit为变量名,80为变量lower_limit的值,即存放在变量lower_limit的存储单元中的数据。

那么到底如何获得变量的地址呢?C语言使用“&(地址运算符)加变量名”的方式获取变量的地址,比如,&lower_limit就代表变量lower_limit的地址,详见后续相关章节的描述。

一个定义只能指定一种变量类型,虽然后面所带的变量表可以包含一个或多个该类型的变量:

int lower_limit , upper_limit , sum;

但如果将一个定义语句中的多个变量拆开在多个定义语句中定义的话:

int lower_limit; // lower_limit为数据下限

int upper_limit;// upper_limit为数据上限

int sum;// sum为求和的结果

则可在各个定义语句中添加注释,则大大提高了程序的可阅读性,而且修改起来更加方便,但C编译器会忽略在每行右边用于描述变量用途的注释语句。与此同时还可以在定义中,对变量进行初始化,即允许在变量名的后面紧跟一个等号以及一个表达式。

int lower_limit = 1;

int upper_limit= lower_limit+50;

int sum;

2.外部变量的声明

由于变量lower_limit是在别的文件中定义的,那么只要在引用之前用关键字extern对该变量作“外部变量声明”即可,无需再为变量lower_limit分配存储单元,这种情况称之为声明或引用性声明。比如:

extern int lower_limit; //将已定义的外部变量lower_limit的作用域扩展到此在这里将extern置于变量前,就是为了告诉编译器变量lower_limit这个名字已经在别的文件中被定义了,因此遇到此变量时,需在其它模块中寻找与之相应的定义。

有时程序是由多个源程序文件组成的,那么只需要在其中任一个文件中定义外部变量lower_limit,而在另一个文件中用extern对变量lower_limit作“外部变量声明”,即可将外部变量的作用域扩展到其它文件。

当extern用于声明外部变量时,则类型名可写也可不写,由于声明变量不是定义变量,,则可以不指定类型,只需写出变量名即可。比如:

extern lower_limit;

?注意:extern不仅可用于声明变量,而且还可以用于声明数组和指针,以及用于声明外部函数,详见后续相关章节的描述。

3.静态变量的定义

当用static修饰变量时,则全局变量与局部变量都保存在内存的静态区。即便函数运行结束,而静态变量的值都不会被销毁,以后仍然还可以继续使用。

(1)静态全局(外部)变量

当static用于定义外部变量时,则变量仅被所定义的文件使用,而其它文件则无法使用它。比如:

static unsigned char __GucTask0; // 任务0测试变量

使用静态全局变量的好处就是在进行模块化程序开发时,不用担心外部变量名的冲突,只需在每个文件中定义全局变量时加上static即可。

(2)静态局部变量

静态局部变量则是在函数体内定义的,那么只能在这个函数中使用。

?注意:stati c还可以用于修饰函数,如果在函数前加static,则该函数只能成为被本文件中的其它函数所调用的静态函数(内部函数),其好处就是不用担心函数名的冲突,便于模块化开发,详见后续相关章节的描述。

后记:任何一本教材都有一定的侧重点和面向的读者群,本教材是为“高等学校电类专业新概念教材.卓越工程师教育丛书”而写作的配套图书,适当淡化了计算机应用软件的编程,重点强化了嵌入式系统应用中的程序设计,并将后续教材中与常用算法以及嵌入式操作系统微小内核关联较大的内容提前作了铺垫,为初学者读懂《项目驱动——单片机应用设计基础》教材中的TingOS51操作系统微小内核源代码,并最终独立写出一个属于自己的基于32位Cortex-M0核的嵌入式操作系统MiCOS(《ARM嵌入式系统初级教程(基于Cortex-M0)》教材的最后一章仅详细地介绍了一个微小内核的设计思想,但未给出源代码,要求初学者自己完成)打下扎实基础。

虽然过来人常常告诉初学者,学习程序设计一定多阅读经典程序,一定要多上机编程,但总不见他们“多”起来,90%以上的大学生却感到写程序是一件非常痛苦的事情,以至于对所学的专业没有丝毫的兴趣。而大多数人普遍缺乏阅读源代码的方法和耐心,说句实在话,连“书(即程序的设计思想)”都没有“真正地”看懂(想一想什么是“真正地”?),那又怎么会编程呢?虽然大凡高手都是“山寨”过来的,但要“山寨”出水平来却不是一件容易的事情。其实并不难,关键是方法出了问题,我们都是“凡人”,不要与那些“聪明人”相比,我们应该下点苦功夫,用点土办法,踏踏实实地卖苦力,肯定会有所突破,我将另行撰文作经验介绍。

其实刚开始我也没有搞清楚“声明与定义”的概念和含义,只会编程搞得我云里雾里,到底有没有办法搞清楚?其实“定义”不仅说明了保存的数据类型,而且还为变量分配了空间,即变量所占的字节数,那么你不妨写一段程序,看看与之对应的汇编代码便知道了。由此可见,“声明”一个常量其实也是“定义”,比如,“const int width = 80;”,因为系统为width分配了一个与之对应的存储单元。

暂时没有搞清楚没有关系,但一定不能放过!!!

虽然很多人阅读过μC/OS-II操作系统的源代码,可到头来还是不会写一个简单的OS,即便有些人很认真地“写”了一个,但实际上却是“抄”来的,为什么?很多人想要通过修改,期望搞出一点“不一样”的意思出来却非常困难。

我认为,当初学者只有具备了一定的基础之后,才有成为高手的兴趣和可能,这就是作者的教学思想和出发点。

4.常变量的声明

为了提高程序的可阅读性与可维护性,ANSI C允许用户命名常量(named constant,声明为const的变量)。

当它被初始化之后,它的值便不能改变。

ANSI C规定:可以使用const关键字声明常量,修饰符const可以用在类型说明符前,也可以用在类型说明符后。比如:

int const MAX_LENGTH = 78; //命名常变量的最佳方式是使用大写字母

const int MAX_LENGTH = 78; // MAX_LENGTH的初值为78

虽然const修饰的值是常量,而实际上MAX_LENGTH却是一个只读变量。通过汇编代码可以看出,编译器仅

仅给出了MAX_LENGTH变量对应的内存地址,却并没有为MAX_LENGTH变量分配存储空间,而是将其保存在符号表中,编译器在编译时直接进行“替换”优化。

?注意:const除了可以修饰只读变量之外,还可以用于修饰数组、指针、函数的参数与函数的返回值,详见后续相关章节的描述。

5. 标识符

ANSI C规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。比如:

__GucTask0

?注意:C是区分大小写字母的语言,也就是说,由相同字母组成的字符,如果大小写不同,就会被看做不同的字符。比如,命名age与sum的变量与Age或AGE以及Sum

的变量就是不同的变量。一般来说,变量名常用小写字母来表示,比较符合人们的阅读习惯。

虽然ANSI C并没有规定标识符的长度,但各个编译器都有自己的规定,比如,Turbo C 则允许变量名最多不超过32个字母。

?关键知识点:变量的声明与定义

广义地说,声明包含定义,但并非所有的声明都是定义。对于“int lower_limit;”来说,它既是声明又是定义;而对“extern lower_limit;”来说,它是声明不是定义。

“声明”仅仅告诉编译器变量名的值的类型而已,不会生成目标代码,当然也不会给它分配存储空间,更不会增大可执行程序的体积。由于声明并不分配存储空间,因此同一个声明可以在程序中多次出现。它的位置可在执行代码之外,也可在执行代码里面。

而“定义”不仅要告诉编译器变量名的值的类型,而且还要给变量分配存储空间。既然在定义变量时就已经建立了存储空间,那么变量的定义只能出现一次,且它的位置在所有执行代码之外。

由于系统是根据外部变量的“定义”来分配存储空间的,因此对外部变量的初始化只能在“定义”时进行,不能在“声明”中进行,而“声明”则是告诉编译器,该变量已经存在。

若变量均已正确定义并赋值

若变量均已正确定义并赋值,以下合法的C语言赋值语句是(c)。 A、x+n=I; B、x==5; C、x=n/2.5; D、5=x=4+1; 下述错误的C语言常量是:( c). A、0xf B、5. C、090 D、.25 根据下面的程序,使a=123,c1='o',c2='k'哪一种是正确的键盘输入方法?(b )。(规定用字符串[CR]表示回车,U表示空格) main() {int a; char c1,c2; scanf("%d%c%c", &a,&c1,&c2); } A、123UoUk[CR] B、123ok[CR] C、123Uok[CR] D、123oUk[CR] 已知键入a=4,b=3,执行下面程序输出的结果是( b). main() { int a,b,s; scanf("%d%d",&a,&b); s=a; if(a>b) s=b; s=s*s; printf("%d\n", s); } A、13 B、9 C、16 D、15 执行下面程序段后,i的值是( a). int i=10; switch(i) {case 9: i+=1; case 10: i--; case 11: i*=3; case 12: ++i; } A、28 B、10 C、9 D、27 以下不是无限循环的语句为(d)。

A、while(1){x++;} B、for(;;x++=i); C、for(i=10;;i--) sum+=i; D、for(y=0,x=1;x>++y;x=i++) i=x 下面程序段运行的结果是(a ). x=-1; do{ x=x*x; }while (!x); A、循环执行一次 B、有语法错误 C、死循环 D、循环执行两次 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(a)。 A、3 B、无确定值 C、4 D、2 若定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g; 则数值为4的表达式是 ( d). A、a[4] B、a[g-c] C、a['d'-'c'] D、a['d'-c] 以下叙述中正确的是(c)。 A、可以在一个函数中定义另一个函数 B、main()函数必须放在其它函数之前 C、构成C程序的基本单位是函数 D、所有被调用的函数一定要在调用之前进行定义 下述函数的功能是(c ). int fun(char *x) { char *y=x; while(*y++); return y-x-1; } A、比较两个字符串的大小 B、求字符串存放位置 C、求字符串的长度 D、将字符串x连接到字符串y后面 有关"文件包含"命令说法,下列叙述正确的是( a). A、将预处理的结果作为一个源程序编译,得到一个目标文件. B、一个 include 命令可指定多个被包含文件. C、将预处理的结果作为多个文件编译. D、被包含的文件可以是源文件或目标文件. 在声明语句:int *f();中,标识符f代表的是(a)。 A、一个返回值为指针型的函数名 B、一个用于指向函数的指针变量 C、一个用于指向一维数组的行指针 D、一个用于指向整型数据的指针变量

c语言选择题

1.以下运算符中优先级最低的是(C)。 A、&& B、| C、|| D、& 2.不合法的if语句是:(D) A、if(表达式) 语句1 else 语句2 B、if(表达式) 语句 C、if(表达式1)语句1 else if(表达式2)语句2 else 语句3。 D、if 关系表达式语句1 else 语句2 3.以下不是无限循环的语句为(D)。 A、while(1){x++;} B、for(;;x++=i); C、for(i=10;;i--) sum+=i; D、for(y=0,x=1;x>++y;x=i++) i=x; 4.调用函数时,基本类型变量做函数参数, 实参和对应的形参(B). A、不占用存储单元 B、各自占用独立的存储单元 C、同名时才能共用存储单元 D、共占用一个存储单元 5.已知有宏定义#define F(a) a*(a+2),则F(4+3)的值为(D). A、24 B、15 C、63 D、31 a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是(D) A、for(i=1;i<11;i++)a[i]=i; B、for(i=1;i<11;i++)a[0]=1; C、for(i=1;i<11;i++)a[i+1]=i; D、for(i=1;i<11;i++)a[i-1]=i; 7.若有说明:int a[3][4];则数组a中各元素(A)。 A 、不能得到确定的初值B、可在程序的编译阶段得到初值0 C、可在程序的运行阶段得到初值0 D、可在程序的编译或运行阶段得到初值0 8. 已定义float a; int i;选择正确的输入语句(C). A、scanf("%6.2f%3d", &a,&i); B、scanf("%f%s", &a,&i); C、scanf("%6f%3d",&a,&i); D、scanf("%f%d", a,i); 9 执行下面程序段后,k的值是:(B) int k=2; switch(k+1) { case 3:k+=1; case 4:k--;break; case 5:k*=3; case 6:++k;} A、10 B、2 C、28 b D、27 11.以下程序段中,能够正确地执行循环的是(B)。 A、int s=6; m:if(s<100) exit(0); else s-=2; goto m: B、int s=6; do s-=2; while(s); C、for(i=1;i>10;i++) D、static int a; while(a) 12.运行结果是" 11 12"的程序段是:请在A处填写正确内容(B)。 for(i=1;i<=2;i++) ___A___ A、for(j=1;j<=2;j++)printf("%3d",10*i+j);break; B、{for(j=1;j<=2;j++) printf("%3d",10*i+j);break;} C、for(j=1;j<=2;j++)printf("%3d",10*i+j);continue; D、{for(j=1;j<=2;j++)printf("%3d",10*i+j);continue;} 13.设有以下定义: int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=a; 则数值为6的表达式是(D). A、p+5 B、*p+6 C、*(p+6) D、*p+=5 14. 语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(B)(说明:'\b'是退格符)。 A、a\bre\'hi\'y\\\bou B、re'hi'you C、a\bre\'hi\'y\bou D、abre'hi'y\bou 14.执行下面程序段后,i的值是(A).

2014福师《C++语言程序设计》在线作业二答案

福师《C++语言程序设计》在线作业二 一、单选题(共20 道试题,共40 分。) 1. C++程序源文件默认的扩展名是(B ) A. cs B. obj C. cpp D. exe 满分:2 分 2. 设void f1(int * m,long & n);int a;long b;则以下调用合法的是(B )。 A. f1(a,b); B. f1(&a,b); C. f1(a,&b); D. f1(&a,&b); 满分:2 分 3. 循环while(int i=0) i--;执行次数是(A)。 A. 0 B. 1 C. 5 D. 无限 满分:2 分 4. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c

C. 1 D. 4 满分:2 分 5. 在C++语言中,数据封装要解决的问题是____D_____。 A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 满分:2 分 6. C++语言中函数返回值的类型是由(C)决定的? A. return语句中的表达式类型 B. 调用该函数的主调函数类型 C. 定义函数时所指定的函数类型 D. 以上说法都不正确 满分:2 分 7. 将小写字母n赋值给字符变量one_char,正确的操作是(C)。 A. one_char=…\n?; B. one_char=“n”; C. one_char=110; D. one_char=…N?; 满分:2 分 8. 下列哪个是C++语言的有效标识符? A A. _No1 B. No.1

JAVA期末复习资料 含答案

1.下面说法正确的是( C )。 A)Java 程序的源文件名称与主类(公共类)的名称相同,后缀可以是java或txt等。 B)JDK的编译命令是java。 C)一个java源程序编译后可能产生几个字节码文件。 D)在命令行运行编译好的字节码文件,只需在命令行直接键入程序名即可运行该程序。 2.下面的说法正确的是(ABCD)。 A) Java 语言是面向对象的、解释执行的网络编程语言。 B) Java 语言具有可移植性,是与平台无关的编程语言。 C) Java 语言可对内存垃圾自动收集。 D) Java 语言编写的程序虽然是“一次编译,到处运行”,但必须要java的运行环境。 3.下面main()方法的定义哪些是正确的(ACD)? A)public static void main(String args[]) {} B)public static void main(String[]) {} C)public static void main(String[] args) {} D)public static void main(String [] x) {} 4.用于定义数据简单类型的一组关键字是(B)。 A) class, float, main, public B) float, boolean, int, long C) char, extends, float, double D) int, long, float, import 5.以下的变量定义中,合法的语句是(B)。 A) float 1_variable = 3.4; B) int abc_ = 21; C) double a = 1 + 4e2.5; D) short do = 15; 6.定义变量如下: int i=18; long L=5; float f=9.8f; double d=1.2; String s="123"; 以下赋值语句正确的是(ABD)。 A) s=s+i; B) f=L+i; C) L=f+i; D) s=s+i+f+d; 7.以下语句输出的结果是(A) String str="123"; int x=4,y=5; str=str+(x+y); System.out.println(str); A)1239 B)12345 C)会产生编译错误D)123+4+5 8.以下语句中没有编译错误或警告提示信息的是(B)? A)byte b=256; B)double d=89L; C)char c="a"; D)short s=8.6f; 9. 下面的程序输出结果是:1+2=3,请将程序补充完整。 public class App2 { public static void main(String args[]) { int x=1,y=2; System.out.println(______________); } } 答案:x+"+"+y+"="+(x+y) 10.阅读下面的程序,回答问题。 程序如下: public class App1 { public static void main(String args[]) { char ch='\n'; System.out.print("The first snow came,"+ch+"How beautiful it was!"); }

IBM选择题 IBM java考试题目

1.下面说法正确的是()。 (A) Java程序的源文件名称与主类(公共类)的名称相同,后缀可以是.java或.txt等。 (B) JDK的编译命令是java。 (C) 一个Java源程序编译后可能产生几个字节码文件。 (D) 在命令行运行编译好的字节码文件,只需要在命令行直接键入程序名即可运行该程序。 2.下面的说法正确的是()。 (A) Java语言面向对象的、解释执行的网络编程语言。 (B) Java语言具有可移植性,是与平台无关的编程语言。 (C) Java语言可对内存垃圾自动收集。 (D) Java语言编写的程序虽然是“一次编译,到处运行”,但必须要Java的运行环境。 3.下面()不是Java的关键字。 (A) integer (B) double (C) float (D) char 4.以下语句中没有编译错误或警告提示信息的是()。 (A) byte b=256;(B)double d=89L;(C) char c=”a”;(D) short s=8.6; 5.以下选项中能正确表示Java语言中的一个整型常量的是()。 (A) 35.d (B) -20 (C) 1,234 (4) “123” 6.下面的数据类型()是float型。 (A) 33.8 (B) 129 (C) 89L (D) 8.6F 7.以下的变量定义中,合法的语句是()。 (A) float l_variable=3.4;(B) int abc_=21; (C) double a=1+4e2.5;(D) short do=15; 8.以下语句输出的没有编译错误的是()。 (A) int i=7.8;(B) float f=7.8;(C) Boolean b=l;(D) String str=null; 9.以下赋值语句,错误的是()。 (A) char c1=?\””;(B) char c3=?x?; (C) char c4=??;(D) char c5=65; 10.定义变量如下: char c=?w?; int i=8; long L=15; float f=8.9; 以下赋值语句正确的是()。 (A) i=c+i;(B) c=c+i;(C)L=f+L;(D) f=i+L+f;

《离散型随机变量的概念》教学设计

离散型随机变量的概念》教学设计 一、教材分析 《离散型随机变量的概念》是人教A版《普通高中课程标准实验教科书 数学选修2-3》第二章随机变量及其分布的第一节离散型随机变量及其分布列的第一课时。本章是在必修三中学习了基本的概率统计知识的基础上,进一步学习 随机变量及其分布的知识。本节内容一方面承接了必修三的知识;另一方面,掌握好这一节课将有助于后续的学习,因此它在知识体系上起着承上启下的作用。随机变量是连接随机现象和实数空间的一座桥梁,从而使得更多的数学工具有了用武之地。离散型随机变量是最简单的随机变量。本节课主要通过离散型随机变量展示用实数空间刻画随机现象的方法。 二、学情分析 学生在必修3概率一章中学习过的随机试验、随机事件、简单的概率模型和必修1中学习过的变量、函数、映射等知识是学习、领悟和“接纳”随机变量概念的重要知识基础,教学时应充分注意这一教学条件;另外,为更好地形成随机变量和离散型随机变量两个概念,教学中可借助媒体列举和展现丰富的实例和问题,以留给学生更多的时间思考和概括。 三、教学策略分析 学生是教学的主体,本节课要给学生提供各种参与机会。本课以情境为载体,以学生为主体,以问题为手段,激发学生观察思考、猜想探究的兴趣。注重引导帮助学生充分体验“从实际问题到数学问题”的建构过程,培养学生分析问题、解决问题的能力。 四、目标分析 1、知识与技能目标:理解随机变量和离散型随机变量的概念,能够运用随机变量表示随机事件,学会恰当的定义随机变量; 2、过程与方法目标:在教学过程中,以不同的实际问题为导向,弓I导学生分析问题的特点,归纳问题的共性,提高理解分析能力和抽象概括能力;

昆明理工大学c语言期末考试题库

昆明理工大学C语言期末考试题库 包含百分之九十五的原题 1. main函数是C程序的入口,由计算机系统负责调用。 A.对 B.错 2. C语言不允许使用关键字作为变量的名称,但可以使用保留字为变量命名。 A.对 B.错 3. C语言本身不提供输入输出语句,但可以通过输入输出函数来实现数据的输入输出。 A.对 B.错 4. 假定已有整型变量x的定义,则(x+1)++是一个合法的表达式。 A.对 B.错 5. 使用条件表达式可以构成各种各样的两路选择结构。 A.对 B.错 6. 与表达式“!(x> 0)”等价的表达式是“x< =0”。 A.对 B.错 7. 二重循环for(i=0;I < 5;i+=2) for(j=0;j < 5;j++)的循环体的执行次数为15。

A.对 B.错 8. 在循环体内和switch语句体内使用break语句。 A.对 B.错 9. 函数strcpy(str1,str2)是将字符串str2 连接到字符串str1之后。 A.对 B.错 10. 可以对实型数组进行整体输入、输出。 A.对 B.错 11. 若用数组名作为函数调用的实参,传递给形参的是数组中的第一个元素的值。 A.对 B.错 12. 在main()函数中定义的变量称为全局变量。 A.对 B.错 13. 共用体可以作为结构体的成员,但结构体不能作为共用体的成员。 A.对 B.错 14. 在定义了枚举变量后,系统才为该变量分配内存空间。 A.对

B.错 15. 变量的指针,其含义是指该变量的一个标志。 A.对 B.错 16. 当以参数w打开文件时,若指定路径下已有同名文件,则覆盖原有文件。 A.对 B.错 单选题 1. 下面有关C语言特点的说法中,错误的是______。 A.C语言编写的代码较为紧凑,执行速度也较快 B.C语言不仅适合编写各种应用软件,还适于编写各种系统软件 C.C语言是一种模块化和结构化的语言 D.C语言编写的程序通常不具备移植性 2. 以下程序的输出结果是______。 #include "stdio.h" void main() { int a=2,b=3,c=4; printf("%d,%d,%d\n",c,b,a); } A.4 3 2 B.2,3,4 C.4,3,2 D.2 3 4 3. 以下选项中,能用作数据常量的是________。 A.0119

随机变量附其分布列概念公式总结

随机变量及其分布总结 1、定义:随着试验结果变化而变化的变量称为随机变量 .随机变量常用字母 X , Y ,ξ,η,… 表示. 2、定义:所有取值可以一一列出的随机变量,称为离散型随机变量 3、分布列:设离散型随机变量ξ可能取得值为 x 1,x 2,…,x 3,…, ξ取每一个值x i (i =1,2,…)的概率为()i i P x p ξ==,则称表 为随机变量ξ的概率分布,简称ξ的分布列 4. 分布列的两个性质: (1)P i ≥0,i =1,2,…; (2)P 1+P 2+…=1. 5.求离散型随机变量ξ的概率分布的步骤: (1)确定随机变量的所有可能的值x i (2)求出各取值的概率p(ξ=x i )=p i (3)画出表格 6.两点分布列: 7超几何分布列: 一般地,在含有M 件次品的 N 件产品中,任取 n 件,其中恰有X 件次品 数,则事件 {X=k }发生的概率为(),0,1,2,,k n k M N M n N C C P X k k m C --===,其中 mi n {,}m M n =,且,,,,n N M N n M N N *≤≤∈.称分布列

为超几何分布列.如果随机变量 X 的分布列为超几何分布列,则称随机变量 X 服从超几何分布 8.离散型随机变量的二项分布:在一次随机试验中,某事件可能发生也可能不发生,在n 次独立重复试验中这个事件发生的次数ξ是一个随机变量.如果在一次试验中某事件发生的概率是P ,那么在n 次独立重复试验中这个事件恰好发生k 次的概率是 k n k k n n q p C k P -==)(ξ, (k =0,1,2,…,n ,p q -=1). 于是得到随机变量ξ的概率分布如下: ξ 1 … k … n P n n q p C 00 111-n n q p C … k n k k n q p C - … q p C n n n 称这样的随机变量ξ服从二项分布,记作ξ~B (n ,p ),其中n ,p 为参数。 9.离散型随机变量的均值或数学期望: 一般地,若离散型随机变量ξ的概率分布为 则称 =ξE +11p x +22p x …++n n p x … 为ξ的均值或数学期望,简称期望. 10.离散型随机变量的均值或数学期望的性质: (1)若ξ服从两点分布,则=ξE p . (2)若ξ~B (n ,p ),则=ξE np . (3)()c c E =,c 为常数 (4)ξ~N (μ,2σ),则=ξE μ (5)b aE b a E +=+ξξ)( 11.方差: 对于离散型随机变量ξ,如果它所有可能取的值是1x ,2x ,…,n x ,…,且取这些值的概率分别是1p ,2p ,…,n p ,…,那么, ξD =121)(p E x ?-ξ+222)(p E x ?-ξ+…+n n p E x ?-2)(ξ+…

福师《C++语言程序设计》在线作业1答案

一、单选题(共30 道试题,共60 分。) 1. 下面列出的保留字中,不能作为函数的返回类型的是(C) A. void B. int C. new D. long 2. 下面关于类的对象性质的描述,正确的是(D ) A. 对象之间不可以相互赋值 B. 不可以说明指向对象的指针 C. 对象不能用作数组元素 D. 一个对象能用作另一个对象的成员 3. 循环体至少被执行一次的语句为(C) A. for循环 B. while循环 C. do循环 D. 任一种循环 4. 要使几个不同数据类型的数据共享同一块内存区域,应使用(C ) A. 数组 B. 结构 C. 联合 D. 文件 5. 要声明一个有10个int型元素的数组,正确的语句是(A) A. int a[10]; B. int a[2,5]; C. int a[]; D. int *a[10]; 6. 下面程序的结果是什么?Int i=3,j=4;i?i++:j++;printf(“%d %d\n”,i,j);(B) A. 3 3 B. 4 4 C. 3 4 D. 4 3 7. 下列运算符中,运算对象必须是整型的是(B) A. / B. % C. = D. & 8. 下面关于new 和delete操作符的说法中,不正确的是(D ) A. 使用new操作符,可以动态分配全局堆中的内存资源 B. 若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会被调用 C. 实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中 D. 执行语句A * p=new A[100]时,类A的构造函数只会被调用1次 9. 下列叙述正确的是(A ) A. 一个程序中可以有多个#include命令行 B. 在#include命令行中,用双引号和用尖括号将被包含的文件名括起来没有区别 C. #include命令行只能放在程序开始位置 D. #include命令后也必须以分号结束 10. 表达式9!=10的值为(D) A. 非零值B. true C. 0 D. 1 11. 下面说法中,正确的是(C ) A. 公有派生类的成员函数可以访问基类的私有成员 B. 私有派生类的成员函数可以访问基类的私有成员 C. 无论公有派生还是私有派生,派生类的成员函数均可以访问基类的公有成员 D. 无论公有派生还是私有派生,派生类的成员函数均可以访问基类的私有成员 12. 下列关于C++语言类的描述中错误的是(C ) A. 类用于描述事物的属性和对事物的操作 B. 类与类之间通过封装而具有明确的独立性 C. 类与类之间必须是平等的关系,而不能组成层次结构 D. 类与类之间可以通过一些方法进行通信和联络 13. 在C++语言中,为了使得类中的某些数据成员及某些成员函数的返回值能取任意类型,应使用(B ) A. 类 B. 类模板 C. 抽象类 D. 虚基类 14. 虚函数使用关键字(A ) A. virtual B. static C. public D. private

C语言试题及答案

C语言试题及答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开 头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以/* 符号作为开始标记,以 */ 符号作为结束标记。

C语言 第四章 选择结构程序设计期末测试习题与答案

C语言第四章选择结构程序设计期末测试习题与答案 1、下列条件语句中,功能与其他语句不同的是 ( )。 A.if(a==0) prinff("%d\n",y); else printf("%d\n",x); B.if(a) printf("%d\n",x); else prinf("%d\n",y); C.if(a!=0) printf("%d\n",x); else printf("%d\n",y); D.if(a==0) printf("%d\n",x); else printf("%d\n",y); 参考答案:D 2、假定所有变量均已正确说明,下列程序段运行后x的值是( )。 a=b=c=0;x=12; if(!a)x--; else x=5; if(c) x=3; else x=4; A.3 B.4 C.12 D.11 参考答案:B 3、下列叙述中正确的是 ( )。 A.在switch语句中,不一定使用break语句 B.在switch语句中必须使用default C.break语句只能用于switch语句 D.break语句必须与switch语句中的case配对使用 参考答案:A 4、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。 int a=1,b=3,c=5; if(c=a+b) printf("yes\n"); else printf("no\n"); A.3 B.5

C.1 D.2 参考答案:A 5、当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是 ( )。 A. k%2==1 B. !k%2==1 C.(k%2)!=0 D. k%2 参考答案:B 6、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。 int n=0,m=l,x=2; if(!n) x-=l; if(!m) x-=2; if(!x) x-=3; printf (" %d\n",x); A.1 B.3 C.6 D.2 参考答案:A 7、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。 int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c); A. 3,5,5 B.3,5,7 C.程序段有语法错 D.3,5,3 参考答案:D 8、假定所有变量均已正确说明,执行以下程序段时,从键盘上输入1和2,则结果是( )。

2015秋计算机基础及C语言复习题(客观题)-1

2015秋计算机基础及C语言复习题(客观题) C语言部分 一、填空 1、一个C程序必须包含一个()函数. 答案: main 或主 2、若有如下输入函数:scanf("%d%d%d",&a,&b,&c);则可以使用空格、()或制表符作为输入数据的间隔符。 答案:换行符或 \n 或回车换行符 3、表达式13/2的结果是(). 答案: 6 4、C语言中,将某个表达式用作条件判断时, 只要该表达式的值不等于(),则条件成立. 答案: 0 或零或 '0' 或 \0 5、表达式 !'A' 的值等于(). 答案: 0 6、C语言的标识符的第一个字符必须是字母或(). 答案: _ 或下划线 7、若n是int型变量,则表达式n=123,n%10*100+n/10%10*10+n/100的值是(). 答案: 321 8、若x和y是整型变量,且变量均已赋值,则表达式x>y>-1的值是(). 答案: 1 9、若变量a,b和c都是int型变量,下面的程序段执行后,变量b的值是(). a=2;b=3;c=a>1||b-->0; 答案: 3 10、函数printf("%2s","ABCD")的输出结果是(). 答案: ABCD 11、函数getchar()的功能是从标准输入设备输入一个(). 答案:字符 12、若C语言中,一个int型数据占2个字节,则int型数据能表示的最小值是(). 答案: -32768 13、表达式'd'-'5'+'3'表示的字符是().

答案: b 14、若d是int型变量,则表达式d=9,2/5*d的值是(). 答案: 0 15、x是一个变量,表达式x&&!x的值等于(). 答案: 0 16、表达式 'A' - 'D' 的值等于(). 答案: -3 17、设变量c占一个字节的空间,下面程序段的输出结果是(). char c='A'; c+=3; printf("%d",c); 答案: 68 18、若变量i和m的类型分别是int和long,则表达式3.2+i*m的数据类型是(). 答案: double 或双精度或双精度类型 19、表达式 -2

§3.1多维随机变量的概念

第三章多维随机变量及其分布 在实际应用中,有些随机现象需要同时用两个或两个以上的随机变量来描述.例如,研究某地区学龄前儿童的发育情况时,就要同时抽查儿童的身高H 、体重 W ,这里,H 和W 是定义在同一个样本空间上的两个随机变量.又如,考察某次射 击中弹着点的位置时,就要同时考察弹着点的横坐标X 和纵坐标Y .在这种情况下,我们不但要研究多个随机变量各自的统计规律,而且还要研究它们之间的统计相依关系,因而还需考察它们的联合取值的统计规律,即多为随机变量的分布.由于从二维推广到多维一般无实质性的困难,故我们重点讨论二维随机变量. §3.1多维随机变量的概念 一、二维随机变量及分布函数 1定义:由随机变量,X Y 构成的有序数),(Y X ,称),(Y X 为二维随机变量或二维随机向量. 注:(),X Y 在几何上,二维随机变量可看作平面上的随机点的坐标. 2定义:设),(Y X 是二维随机变量,对任意实数y x ,,二元函数 },{)} {()}{(),(y Y x X P y Y P x X P y x F ≤≤≤≤=记为 称为二维随机变量),(Y X 的分布函数或称为随机变量X 和Y 的联合分布函数. 3二元分布函数的几何意义 (,)(,)X Y X Y 若将二维随机变量看成是平面上随机点的,(,)(,)F x y X Y 的坐标则分布函数就表示随机点落在以点(,)x y 为顶点的左下方的无限矩形域内的概率 4随机点(,)X Y 落在矩形区域:1212,x X x y Y y <≤<≤内的概率为

1212{,}P x X x y Y y <≤<≤=22122111(,)(,)(,)(,)F x y F x y F x y F x y --+ 5分布函数(,)F x y 的性质: (1),1),(0≤≤y x F 且对任意固定的,y ,0),(=-∞y F 对任意固定的, 0),(,=-∞x F x ;1),(,0),(=+∞+∞=-∞-∞F F (2)),(y x F 关于x 和y 均为单调不减函数,即 对任意固定的,y 当),,(),(,1212y x F y x F x x ≥> 对任意固定的,x 当);,(),(,1212y x F y x F y y ≥> (3)),(y x F 关于x 和y 均为右连续,即).0,(),(),,0(),(+=+=y x F y x F y x F y x F 4()对任意的11221212(,),(,),,x y x y x x y y <<有 22122111(,)(,)(,)(,)0F x y F x y F x y F x y --+≥ 注:上述四条性质是二维随机变量分布函数的最基本的性质,即任何二维随机变量的分布函数都具有这四条性质;更进一步地,我们还可以证明:如果某一二元函数。具有这四条性质,那么,它一定是某一二维随机变量的分布函数.破坏之一,则不是。 二、二维离散型随机变量及其概率分布 1定义:若二维随机变量),(Y X 只取有限对或可数对值,则称),(Y X 为二维离散型随机变量. 结论:),(Y X 为二维离散型随机变量当且仅当Y X ,均为离散型随机变量. 2定义:若二维离散型随机变量),(Y X 所有可能的取值为),(j i y x ,,2,1, =j i 则

相关文档