文档视界 最新最全的文档下载
当前位置:文档视界 › c程序设计(第四版)复习资料

c程序设计(第四版)复习资料

c程序设计(第四版)复习资料
c程序设计(第四版)复习资料

1、机器语言:

由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。

2、汇编语言:

汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD 、SUB 等。

3、高级语言:

高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定涵义的数据命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。 高级语言:包括面向过程的高级语言和面向对象的高级语言 。

4、C 语言的特点:

丰富的数据类型、结构化的控制语句、运算符种类丰富、可移植性好。

5、C 语言三类函数及其采用意义:

主函数,用户自定义函数,C 语言提供的库函数,意义:函数可以简化了主函数以及实现模块化程序设计。

6、程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境

7、 8、实型常量指数形式:1.2×10-3 --------- 1.2e-3

例如123.456可以表示为:

123.456e0、12.3456e1、1.23456e2、…

把其中的1.23456e2称为“规范化的指数形式”:

即在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。

9、所有的实型常量均视为双精度类型。

10、字符常量是指用一对单引号括起来的一个字符。如 ‘ a ’ , ‘9’ , ‘!’

11、(1) 基本整型 :以int 表示。

(2) 短整型:以short int 表示,或以short 表示。

(3) 长整型:以long int 表示,或以long 表示。

取值范围:long>=int>=short

int 型变量的值范围:-32768~32767

12、无符号型变量只能存放不带符号的整数,而不能存放负数。一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。

13、数据类型转换有两种方式:自动类型转换、强制类型转换。

无论是自动类型转换还是强制类型转换,都并没有改变变量本身的数据类型。

()()()()()()()()()????????????

???????????????????????????????????????????????union struct enum char void double f loat long short C 共用体型结构体型数组型枚举型构造类型字符型空类型指针类型双精度型单精度型浮点型实型长整型短整型基本整型整型基本类型语言的数据类型)()(int

14、

15、表达式=运算符+运算对象

16、单目算术运算符:自增、自减运算符为单目算术运算符,具有右结合性。

作用是使变量的值增1或减1,如:

++i ,--i (在使用i 之前,先使i 的值加(减)1)

i++,i-- (在使用i 之后,使i 的值加(减)1)

17、条件运算符是C语言中唯一的一个三目运算符。

格式:表达式1?表达式2:表达式3

功能:根据表达式1的真假来决定整个条件表达式的取值。

18、字符输出函数putchar()

(1)参数c 可以是字符型变量、整型变量、字符常量或整型常量(要求在0-255范围内)。

(2)函数返回值为输出字符的ASCII 码值。

(3)putchar 函数也可以输出转义字符。

(4)一个putchar 函数只能输出一个字符。

19、字符输入函数 getchar()

(1)函数返回值为输入字符的ASCII 码值。

(2)getchar 函数的值可以赋给一个字符变量或整型变量,也可以不赋给任何变量。

(3)一个getchar 函数只能接收一个字符。

20、printf(格式控制,输出表列)

“格式控制” 包括两种信息:

① 格式说明:由“%”和格式字符组成。② 普通字符:即需要原样输出的字符。

原则上,输出表列中变量的个数和类型应与格式控制中指定的数据的个数和类型应一致,且从左到右一一对应。

(1) printf(“%e ”,123.456); 输出:1.234560e+002。

(2) int n=10;

printf("%d,%o,%x\n",n,n,n);

()()()()()()()()()()()()()()()()?????????????

?????????????????????-+>-??????????????????????????<<=>>====<<>>???====-=+==<=>===<>???--++-+,&,*,,.[](),,^,|,&,^|,&,~%/*||,&&,!!,,,,,11%/*指针运算符成员运算符下标运算符强制运算符专用运算符复合位赋值运算符位移位运算符位逻辑运算符位运算符数据长度运算符条件运算符逗号运算符复合算术赋值运算符基本赋值运算符赋值运算符逻辑运算符关系运算符运算符减增基本算术运算符算术运算符基本运算符语言运算符,sizeof ?:,,,,,,,,,,C

printf("%#o,%#x\n",n,n); 运行结果:10,12,a 012,0xa

(3)float f=123.456;

printf("%f %10f %10.2f %.2f %-10.2f\n", f,f,f,f,f);

输出结果如下:

123.456001 123.456001 123.46 123.46 123.46

21、格式输入函数scanf()

scanf(格式控制,地址表列)

“格式控制”的含义同printf函数;

“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

说明:

1、在执行数据输入时,以一个或多个空格、或回车键、或跳格键(Tab)作为分隔符。

2、“&”是地址运算符,作用于变量,其地址在变量定义时由编译程序确定。

22、(1)可以指定输入数据所占列数,系统自动按它截取所需数据。

scanf("%3d%3d",&a,&b);

输入:123456

系统自动将123赋给a,456赋给b。

(2)此方法也可用于字符型:

scanf(“%3c”,&ch);

如果从键盘连续输入3个字符abc,由于ch只能容纳一个字符,系统就把第一个字符‘a’赋给ch。

(3)输入数据时不能规定精度,例如,

scanf("%7.2f",&a);

是不合法的,不能企图用这样的scanf函数并输入以下数据而使a的值为12345.67。(4)如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。

23、注意:

(1)在scanf中应使用变量的地址。

(2)选择合适的输入分隔符。

(3)可以指定输入数据的宽度,系统自动截取。

(4)在用“%c”输入字符时,空格和“转义字符”都作为有效字符输入,不需要用空格作间隔。

(5)输入数据时不能规定精度。

(6)在输入数据时,遇到以下情况该数据认为结束:遇空格、回车、跳格键(Tab)、遇宽度结束、遇非法输入。

24、表达式语句。表达式语句由表达式加上分号组成。

格式:表达式;功能:计算表达式的值。

说明:C语言中的任何一个表达式都可以构成语句。

注意:如果没有分号,如“x=y+z”只是一个表达式,而不是一条语句。

25、函数调用语句。此类语句由函数调用加上分号构成。

格式:函数名[(实参列表)];

功能:调用函数,以完成函数所规定的功能。

例如:printf(“C Program”);

26、控制语句。控制语句用于控制程序的流程,以实现程序的各种结构方式。

27、空语句。空语句仅由一个分号组成。

格式:;功能:不执行任何操作。

28、编程风格:正确性、可靠性、规范化、可读性、灵活性:

29、if语句格式一:if (表达式)

语句

功能:如果表达式为真,则执行其后的语句,否则不执行语句。

30、格式2:if (表达式)

语句1

else

语句2

功能:如果表达式为真,则执行语句1;否则执行语句2。

31、格式3:if (表达式1)

语句1

else if (表达式2)

语句2

else if (表达式3)

语句3

……

else if (表达式n)

语句n

else

语句n +1

32、if关键字之后均为表达式。该表达式可以是逻辑表达式、关系表达式以及其它表达式。只要表达式运算的结果为非0,就按“真”处理,执行相应的语句;否则按“假”处理,执行相应的语句。

在if语句中的条件判断表达式必须用圆括号括起来,每个语句之后必须加分号。

在if语句的第二、三种形式中,else子句不能作为语句单独使用,必须是if语句的一部分,应与if配对使用。

在if语句的三种形式中,所有的语句应为单个语句,如果想在满足条件时执行一组(多个)语句,则必须把这一组语句用“{}”括起来组成一个复合语句。但是在“}”之后不能加分号。

在if语句的表达式中,一定要避免判断实数与零值的等值比较。

虽然在C里面,常量NULL、零值都是false,非零值都是true,但是为了使得程序清晰易读,建议在表达式中不要使用“if (a)”这样的语句。

33、if语句的嵌套:

格式:if (表达式)

if语句

或者:if (表达式)

if语句

else

if语句

注意:

正确书写格式。一般按层次缩进书写,以便掌握配对关系.

在多重嵌套时,else总是与在它之前出现的、尚未匹配的且离它最近的if匹配。

如果if与else数目不相等,最好用花括号确定配对关系。

形成多重嵌套实质上是为了进行多分支选择,这种问题一般可以使用if语句的第三种形式,即“if-else-if”语句,或者将要介绍的switch语句完成。因此,在一般情况下,较少使用if 语句的嵌套结构,以使程序更便于阅读理解。

34、选择结构——switch语句

格式:switch (表达式)

{

case 常量表达式1:语句1

case 常量表达式2:语句2

case 常量表达式n:语句n

default: 语句n+1

}

功能:计算表达式的值,并逐个与其后的常量表达式进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

说明:

“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch语句。为了避免上述情况,C提供了break语句。

在case后的各个常量表达式的值不能相同,否则会出现错误。

在case后,允许有多个语句,可以不用{}括起来。

各个case和default子句的先后顺序可以变动,不影响程序的执行结果。

default子句可以省略不用,此时当表达式的值与所有case后的常量表达式的值不同时,退出switch语句,继续执行后续程序。

switch后面括号中的表达式只能是整型、字符型、枚举类型,case后的常量表达式的类型必须与之匹配。

各个case之后是常量表达式,一定不要试图使用条件表达式或者逻辑表达式。

多个case可以共用一组执行语句。

35、循环结构——while语句

格式:while (表达式) 语句

功能:计算表达式的值,当值为真时,执行循环体。

说明:(1)while语句中的表达式一般是关系表达式或者逻辑表达式,只要值为真就可以继续执行循环体。

(2)如果循环体包含一个以上的语句,必须用{}括起来构成复合语句。

36、do-while语句

格式:do {

语句

}while(表达式);

功能:先执行一次循环体,再判别表达式的值,如果为真则继续执行循环,否则终止循环。说明:

(1)do-while语句的表达式后必须加分号。

(2)如果循环体由多个语句组成,也必须由{}括起来,组成一个复合语句。

37、for语句

格式:

for (表达式1;表达式2;表达式3)

语句

功能:(1)首先计算表达式1的值;

(2)再计算表达式2的值,若值为真,则执行一次循环体,否则跳出循环;

(3)计算表达式3的值,转回第(2)步重复执行。

38、for语句最易理解的如下形式:

for(循环变量赋初值;循环条件;循环变量增值)

语句

39、说明:

for语句的各个表达式均可省略,但是分号不可缺少。

如果循环变量已经在for语句前赋初始值,那么表达式1可以省略。

如果省略表达式2,一般在循环体中加入break语句来退出循环。

若省略表达式3,应在循环体中修改循环变量,保证循环能结束。

可以同时省略三个表达式中的任意2个。

三个表达式可以全部省略。

循环体可以是空语句。

表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。

表达式2一般是关系表达式或者逻辑表达式,但也可以是数值表达式或者字符表达式,只要其值为非零,就可以执行循环。

表达式3一般是改变循环变量的赋值表达式,但也可以是与循环变量无关的其它表达式。

表达式1和表达式3都可以是逗号表达式。

40、break语句

格式:break;

功能:用于跳出switch结构,和从循环体内中途跳出循环体,即提前结束循环,执行循环下面的语句。

说明:

(1)在循环语句中,break语句一般与if语句一起使用。

(2)break语句不能用于循环语句和switch语句之外的其它任何语句之中。

41、continue语句

格式:continue;

功能:跳过循环体中剩余的语句而强制执行下一次循环,即结束本次循环,跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

说明:continue语句只能用在循环语句中,且一般都是与if语句一起使用。

42、continue语句和break语句的区别是:

continue语句只结束本次循环,而不是终止整个循环的执行。

break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

43、循环结构——百钱买百鸡问题

“百钱买百鸡”是我国古代的著名数学题。问题是这样描述的:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?

方法一:

#include

void main()

{

int i,j,k;

for (i=0;i<=33;i++)

for (j=0;j<=50;j++)

for (k=0;k<=300;k++)

if (3*i+2*j+k/3==100 && i+j+k==100 && k%3==0)

printf("公鸡%d只,母鸡%d只,小鸡%d只。\n",i,j,k); }

方法二:

#include

void main()

{

int i,j,k;

for (i=0;i<=33;i++)

for (j=0;j<=50;j++)

{

k=100-i-j;

if (3*i+2*j+k/3==100 && k%3==0)

printf("公鸡%d只,母鸡%d只,小鸡%d只。\n",i,j,k);

}

}

方法三:

#include

void main()

{

int i,j,k;

for (i=0;i<=33;i++)

for (j=0;j<=(100-3*i)/2;j++)

{

k=100-i-j;

if (3*i+2*j+k/3==100 && k%3==0)

printf("公鸡%d只,母鸡%d只,小鸡%d只。\n",i,j,k);

}

}

44、例输出下列图形:

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

1 2 3 4 5 6

1 2 3 4 5 6 7

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9

#include

void main()

{

int m,n;

for (n=1;n<=9;n++)

{ for(m=1;m<=n;m++)

printf("%4d",m);

printf("\n"); }

}

45、数组是有序数据的集合。

数组中的每一个元素都属于同一个数据类型。

用一个统一的数组名和下标来唯一地确定数组中的元素。46、一维数组的定义

类型数组名[常量表达式];

如:float a[10]; (a[0]~a[9]称为数组元素)

常量表达式中可以包括常量和符号常量,不能包含变量。

47、一维数组元素的引用

数组必须先定义,然后使用。

C语言规定只能逐个引用数组元素而不能一次引用整个数组。

数组元素的表示形式:

数组名[下标]

例如: a[0] = a[5] + a[2*3];

48、int a[10]={0,1,2,3,4};

等价于:

int a[10]={0,1,2,3,4,0,0,0,0,0};

int a[5] = { 1,2,3,4,5 };

可以写成

int a[ ]= { 1,2,3,4,5 };

49、例用冒泡法对6个数排序(由小到大)。

#include

#define N 6

void main()

{

int a[N];

int i,j,t;

printf("input numbers:\n");

for(i=0;i

scanf("%d",&a[i]);

printf("the unsorted numbers:\n");

for(i=0;i

printf("%d ",a[i]);

printf("\n");

//核心代码部分:开始冒泡排序

for(i=1;i<=N-1;i++)

for(j=1;j<=N-i;j++)

if(a[j-1]>a[j])

{ t=a[j-1]; a[j-1]=a[j]; a[j]=t; }

printf("the sorted numbers:\n");

for(i=0;i

printf("%d ",a[i]);

}

50、二维数组的定义

类型数组名[常量表达式1][常量表达式2];

常量表达式1声明二维数组的行数

常量表达式2声明二位数组的列数;

例如:

float b[3][4] ;//a为3×4(3行4列)的数组。

不能写成:

float b[3,4];

51、二维数组的引用

二维数组的元素的表示形式为:

数组名[下标][下标]

在使用数组元素时,应该注意下标值应在已定义的数组大小

的范围内。

常出现的错误是:

int a[3][4]; //a为3×4的数组

a[3][4]=3; //引用a]3]]4]超过了数组的范围

52、二维数组的初始化

二维数组初始化:

(1) 分行给二维数组赋初值。如

int a[3][4] = { { 1,2,3,4 } , { 5,6,7,8 } , { 9,10,11,12 } };

(2) 将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(3) 可以对部分元素赋初值。

int a[3][4] = { {1} , {5} , {9} };

可以只对某几行元素赋初值:

int a[3][4] = { {1} , {5,6} };

(4) 如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

等价于:

int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(5)有的编译系统,如VC6.0中,初始化数组时不能出现空的花括号,如

int a[3][4]={{1,2},{},{3,4}};

53、字符数组

用来存放字符数据的数组是字符数组。

54、一维字符数组的定义

格式:char 字符数组名[常量表达式]

功能:定义一维字符数组

【例如】char a[4], str[5];

【说明】

(1)字符型数据在内存中存放的是ASCII码,每个字符占一个字节的存储空间。

(2)C语言允许使用整型数组来存放字符型数据。如

int a[5];

a[0]=’a’;

scanf(”%c”,&a[1]);

55、C语言中,字符串作为一维字符数组存放在内存中。如字符串“C Language”,包含字符个数为10,但在内存中占11个字节,最后一个字节存放空字符‘\0’。

说明:

字符串最后的空字符‘\0’称为字符串结束标志,其ASCII码为0,由系统自动加上。程序中主要依靠检测‘\0’的位置来判定字符串是否结束,而非根据数组的长度来判断。【说明】字符串输出时不包括结束符‘\0’

56、字符数组的初始化

(1)逐个字符初始化字符数组。如

char str[4]={‘A’,‘B’,‘C’,’\0’};

char str[4]={65,66,67,0};

char str[ ]={‘A’,‘B’,‘C’,’\0’};

char str[4]={‘A’,‘B’,‘C’};

(2)用字符串常量初始化字符数组。如

char str[4]={“ABC”};

char str[4]=“ABC”;

char str[ ]=“ABC”;

【说明】

字符串对应的字符数组必然以‘\0’结尾,但字符数组也可不含‘\0’字符,也可以包含多个空字符‘\0’,甚至‘\0’后可以有非空字符。如char a[3]={ ‘A’,‘B’,‘C’};

char str[6]={‘A’,‘B’,‘\0’,‘C’‘\0’‘\0’};

【注意】

以字符串常量初始化字符数组时,字符数组的长度要比字符串有效长度大1。

57、二维字符数组可以看作一个特殊的一维数组,该一维数组的每个元素都是一个一维字符数组。每个一维字符数组可以存放一个字符串,因此,一个N行M列的二维字符数组就可以用来存放N个字符串,且每个字符串的最大有效长度为M-1。

58、字符数组的输入输出

字符数组的输入输出可以有两种方法:

逐个字符输入输出。用“%c”输入或输出一个字符。

即在scanf和printf函数中用格式符“%c”进行输入或输出。

例如:char str[5]; int i;

for(i=0;i<5;i++)scanf(“%c”,&str[i]);

for(i=4;i>=0;i--)printf(“%c”,str[i]);

(2) 将整个字符串一次输入或输出。用“%s”输出字符串。例如:

char c[ ]={"china"};

printf(“%s",c);

在内存中数组c的状态如图所示。

请注意:

(1) 输出字符不包括结束符‘\0’。

(2) 用“%s”格式符输出字符串时,printf函数中的输出项是字

符数组名,而不是数组元素名。写成下面这样是不对的:

printf("%s",c[0]);

(3) 如果数组长度大于字符串实际长度,也只输出到遇‘\ 0’结

束。如:

char c[10]={"china"};

printf("%s",c); 输出“china”

(4)可以用scanf函数输入一个字符串。例如:

char c[6];

scanf("%s",c); 输入:china

如果利用一个scanf函数输入多个字符串,则以空格分隔。例如:

char strl[5],str2[5],str3[5];

scanf("%s%s%s",str1,str2,str3);

59、字符串处理函数

下面介绍几种常用的函数。

1. puts(字符数组)

其作用是:将一个字符串(以‘\0’结束的字符序列)输出到终端。

用puts函数输出的字符串中可以包含转义字符。

使用puts函数或以字符串整体进行输出时,系统一旦遇到‘\0’便停止输出,而且只有遇到‘\0’才停止输出。

使用puts(str);或printf(“%s”,str);输出字符数组str时,str中一定要有‘\0’。

2. gets(字符数组)

其作用是:

从键盘输入一个字符串(该字符串中可以包含空格),直至遇到回车符为止,并将该字符串存放到由指定的数组中(或内存区域)。

并且得到一个函数值。该函数值是该字符数组的起始地址。

注意:

用puts和gets函数只能输入或输出一个字符串,

不能写成puts(str1,str2)或gets(str1,str2)

使用gets函数或以字符串整体进行输入时,系统自动在末尾添加‘\0’;

输入字符串时,gets函数以回车作输入结束标志,而scanf以空格、Tab及回车符作为结束标志。

3. strcat(字符数组1,字符数组2)

作用是:连接两个字符数组中的字符串,把字符串2接到字

符串1的后面,结果放在字符数组1中,函数调用后得到一个

函数值——字符数组1的地址。

说明:

字符数组1必须足够大,以便容纳连接后的新字符串。

连接前两个字符串的后面都有一个‘\0’,连接时将字符串1后面的‘\0’取消,只在新串最后保留一个‘\0’。

4、strcpy(字符数组1,字符串2)

它是“字符串复制函数”。作用是将字符串2复制到字符数组1

中去。例如:

char str1[10],str2[ ]={"china"};

strcpy(str1,str2);

说明:

(1) 字符数组1必须定义得足够大。

(2) strcpy(str1,"china");作用与前相同。

(3) 复制时连同字符串后面的‘\0’一起复制到字符数组1中。

(4)复制后字符数组1原来内容被覆盖。

(5) 下面两行都是不合法的:

str1={"china"};

str1=str2;

5. strcmp(字符串1,字符串2)

作用是比较字符串1和字符串2。例如:

strcmp(str1,str2);

strcmp("china","Korea");

strcmp(str1,"beijing");

字符串比较的规则:对两个字符串自左至右逐个字符相比(按

ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。

如全部字符相同,则认为相等;若出现不相同的字符,则以

第一个不相同的字符的比较结果为准。

“a”<“b”,“a”>“A”,“computer”>“compare”,“these”>“that”,“36+54”>“!&#”,“china”>“canada”,“DOG”<“cat”。

比较的结果由函数值带回。

(1) 如果字符串1=字符串2,函数值为0。

(2) 如果字符串1>字符串2,函数值为一正整数。

(3) 如果字符串1<字符串2,函数值为一负整数。

注意:对两个字符串比较,不能用以下形式:

if(str1==str2) printf(“yes");

而只能用

if(strcmp(str1,str2)==0) printf(“yes”);

6. strlen(字符数组)

测试字符串长度的函数。函数的值为字符串中的实际长度,

不包括‘\0’在内。

7. strlwr(字符串)

函数的作用是将字符串中大写字母换成小写字母。

8. strupr(字符串)

函数的作用是将字符串中小写字母换成大写字母。

60、输出杨辉三角形的前10行

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

. . . . . . .

#include

#define N 10

void main( )

{

int a[N][N],i,j;

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

printf("杨辉三角的前%d行为:\n",N);

for(i=0;i

{

for(j=0;j<=i;j++)

printf("%5d",a[i][j]);

printf("\n");

}

}

61、一个C程序可由一个主函数和若干个函数构成。

由主函数调用其他函数,其他函数也可以互相调用。

同一个函数可以被一个或多个函数调用任意多次。

62、函数定义的一般形式

类型标识符函数名(类型标识符形参1 , 类型标识符形参2 , …){

函数体变量定义或声明部分;

函数体可执行语句部分;

}

例如:

int max(int x,int y)

{

int z;

z=x>y?x:y;

return z;

}

63、说明:

1. 如果是定义无参函数,则“形参表列”就不再需要,但括弧不能省略。

2. 当函数只完成特定的操作而不需要返回值时,可用类型标识符void。

3. 可以有“空函数”。即函数体为空。它的形式为:

类型说明符函数名(类型标识符形参1 , 类型标识符形参2 , …)

{ }

“空函数”表明“这里要调用一个函数”,而现在这个函数没有起作用,等以后扩充函数功能时补充上。

4.在同一个C程序中不可定义同名的变量,同样也不能定义同名的函数。

64、函数的调用

函数调用的一般形式

函数名(实参表列);

如果是调用无参函数,则“实参表列”可以没有,但括弧不能

省略。即:函数名( );

形参:函数定义时“()”内的参数为形参。

实参:函数调用时“()”内的参数为实参。

如果实参表列包含多个实参,则各参数间用逗号隔开。

实参与形参的个数应相等,类型应一致。

实参与形参按顺序对应,一一传递数据。

65、函数调用的方式

1.函数语句

把函数调用作为一个语句。

2.函数表达式

函数出现在一个表达式中,这种表达式称为函数表达式。

3. 函数参数

函数调用作为一个函数的实参。

66、函数的声明

函数“声明”的作用:

把函数类型、函数的名字以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。

函数“声明”的格式:

已定义的函数的首部,再加一个分号。

如:float circle_area(int r) ;

函数声明中也可以不写形参名,而只写形参的类型。

如:float circle_area(int) ;

在C语言中,把以上形式的函数声明称为函数原型。

函数原型的一般形式为:

(1) 函数类型函数名(参数类型1,参数类型2……);

(2) 函数类型函数名(参数类型1 参数名1,

参数类型2 参数名2……);

编译系统不检查参数名。因此参数名是什么都无所谓。

67、对被调用函数的声明

首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。

如果使用库函数,一般还应该在本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。例如,#include

如果使用用户自己定义的函数,而且该函数与调用它的函数(即主调函数)在同一个文件中,一般还应该在主调函数中对被调用的函数作声明。

68、函数参数:形式参数和实际参数

在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称“形参”);

在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。

Ps:关于形参与实参的说明:

(1) 当发生函数调用时,函数swap中的形参才被分配内存单元。在调用结束后,形参所占的内存单元即被释放。

(2)实参可以是常量、变量或表达式,如:

max(3 , a+b);

但要求它们有确定的值。

(3) 在被定义的函数中,必须指定形参的类型。

(4) 实参和形参在类型上应当相同或者赋值兼容。

例如:上例中输入:3.14 , 6.2

(5) C语言规定,实参变量对形参变量的数据传递都是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。

69、函数的返回值

(1) 函数的返回值是通过函数中的return语句获得的。

return z; 与return(z); 等价。

(2) 函数值的类型。

int max(float x,float y) /* 函数值为整型*/

double min(int x,int y) /* 函数值为双精度型*/

(3) 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。即函数类型决定返回值的类型。

建议不要采用这种方法,而应做到使函数类型与return返回值的类型一致。

(4)如果被调用函数中没有return语句,并不是指函数不带回值,而只是带回的是一个不确定的值。

(5)为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空类型”)。

70、函数的递归调用

在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。

例用递归方法求n!。

可用下面的递归公式表示:

n!=1 (n=0,1)

n!=n*(n-1)! (n>1)

有了上例的基础,很容易写出本题的程序:

#include

long fac(int n)

{

long f;

if(n<0) printf("n<0,dataerror!");

else if(n==0||n==1) f=1;

else f=fac(n-1)*n;

return f;

}void main()

{

int n;

long y;

printf("input an integer number:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%10ld",n,y);

}

71、数组作为函数参数

数组名也可以作实参和形参,传递的是整个数组。

1. 数组元素作函数实参

数组元素作为函数的实参,是单向传递,即“值传送”方式。

2. 数组名可作函数参数

(1) 用数组名作函数参数,应该在主调函数和被调用函数分别定义数组。

(2) 实参数组与形参数组类型应一致。

(3) C编译对形参数组大小不做检查,只是将实参数组的首地址传给形参数组。因此,score[n]和array[n]指的是同一单元。

(4) 形参数组也可以不指定大小,在定义数组时在数组名后面跟一个空的方括弧,为了在被调用函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数,上例可以改写为下例形式。

(5) 最后应当说明一点: 用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共占同一段内存单元。形参数组中各元素的值如发生变化会使实参数组元素的值同时发生变化,这一点是与变量做函数参数的情况不相同的,务请注意。在程序设计中可以有意识地利用这一特点改变实参数组元素的值(如排序)。例用冒泡法对数组中10个整数按由小到大排序。

#include

void sort(int array[],int n)

{

int i,j,k,t;

for(i=0;i<=n-2;i++)

{

for(j=0;j<=n-2-i;j++)

{

if(array[j]>array[j+1])

{

t=array[j];

array[j]=array[j+1];

array[j+1]=t;

}

}

}

}

void main()

{

int i,j;

int nArray[10]={20,30,12,45,78,8,9,56,2,12};

printf("排序前的数组是:\n");

for(i=0;i<10;i++)

printf("%d ",nArray[i]);

sort(nArray,10);

printf("\n排序后的数组是:\n");

for(i=0;i<10;i++)

printf("%d ",nArray[i]);

}

3. 用多维数组名作函数参数

可以用多维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。

int array[3][10]; //合法

int array[ ][10]; //合法

int array[ ][ ]; //不合法

int array[3][ ]; //不合法

形参数组第一维的大小可以是任意的。

如:实参数组定义为int score[5][10];

形参数组定义为int array[3][10]; //合法

C编译不检查第一维的大小。

c语言程序设计试题答案

习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); }

B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障

网络程序设计—ASP考试试题(A卷)答案[1]

《网络程序设计—ASP》考试试题1答案 一、单项选择题(本大题共15小题.每小题1分。共15分) 1.A 2. D 3. B 4. B 5. B 6. B 7. A 8.C 9.B 10.B 11.A 12.D 13.B 14.A 15.C 二、判断题(本大题10小题,每小题1.5分,共15分)。 16.ABCD 17.AD 18.AB 19. ABCD 20.CD 21. ABCD 22. BD 23. CD 24. ABCD 25. AB 三、程序填空题(本大题10小题,每空1.5分,共15分) 26. “11”、2、“11”、“11”27. ac 28. 3 29.2 30. 空(Empty)31. 空(Empty)32. "<p>" 33. &lt;p&gt; 34. 与intAge的值有关35.全部 四、名词解释(本大题5小题,每小题2分,共10分) 36.静态网页——所谓静态网页,就是说该网页文件里没有程序代码,只有HTML标记,这种网页的扩展名一般是.htm或.html。静态网页一经制成,内容就不会再变化,不管何时何人访问,显示的都是同样的内容,如果要修改内容,就必须修改源文件,然后重新上传到服务器上。 37.相对路径——所谓相对路径,就是以“/”或“\”开头的路径。 38.子程序——就是只执行程序而不返回值的程序模块。 39.会话——是指用户访问网站的过程;状态,就是指会话过程中的一些变量、设置等信息。 40.数据库——所谓数据库,就是按照一定数据模型组织、存储在一起的,能为多个用户共享的,与应用程序相对独立的、相互关联的数据集合。 五、简答题(本大题4小题,每小题4分,共20分) 41.什么是应用程序?为什么要建立应用程序? 答案:简单的说,添加了虚拟目录的文件夹就可以称为应用程序。建立应用程序后,多个网站之间就可以独立了,一些公共变量就不会混淆。 42.如果同时设置了背景颜色和背景图片,会出现什么情况? 答案:如果同时设置了背景颜色和背景图片,将只有背景图片起作用。 43.请简述四类运算符的优先级顺序。 答案:算术运算符>连接运算符>比较运算符>逻辑运算符。 44.某程序可以显示记录,但不能更新记录,请简述可能的原因。 答案:可能是没有对数据库文件设置相应的访问权限。(比如,去掉只读;对于Windows 2000、Windows XP 系统,如果安装时采用了NTFS文件系统,还要设置“Internet来宾帐户”可以完全控制该数据库文件。) 六、编程题(本大题2小题,第1小题15分,第二小题10分,共25分) 45.请编写程序段,随机产生一个0到9的整数。如果是偶数,则在页面上输出“生成的是偶数”,否则输出“生成的是奇数”。 程序清单: <% Dim s s=Int(10 * Rnd()) If (s Mod 2)=0 Then Response.Write "生成的是偶数" Else Response.Write "生成的是奇数"

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 0 4.1 设计环境和目标分析 0 4.1.1 设计环境 0 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (1) 4.3 控制模块详细设计 (2) 4.3 爬虫模块详细设计 (2) 4.3.1 URL管理器设计 (2) 4.3.2 网页下载器设计 (2) 4.3.3 网页解析器设计 (2) 4.4数据输出器详细设计 (3) 5 调试与测试 (3) 5.1 调试过程中遇到的问题 (3) 5.2测试数据及结果显示 (4) 6 课程设计心得与体会 (4) 7 参考文献 (5) 8 附录1 网络爬虫程序设计代码 (5) 9 附录2 网络爬虫爬取的数据文档 (8)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

C语言程序设计期末考试选择题题库

第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束

5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab'

4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0

网络程序设计复习题(带答案)

网络程序设计复习题 1、为了实现网络的互联,互联网技术必须保证使用不同硬件结构的计算机能够进行通信 适用于多种不同的操作系统、能够使用多种分组交换网络硬件 2、因特网体系结构委员会的英文简称是ICCB 3、协议的实现要落实到一个个具体的硬件模块和软件模块上,在网络中将这些实现特定功能的模块称为实体 4、连接控制、流控制、报文分段等属于传输层功能 5、IP数据报协议标识字段指明了IP数据报封装的协议,当标识字段为 6 时 表示封装的是TCP协议 6、ICMP报文不包括地址解析报文 7、套接字是指IP地址和端口号的组合。 8、SOCKET编程中的全相关是指源端口号、目的端口号、源IP、目的IP、协议 9、IP分组的中的TTL值描述,每经过一个路由器,它的值会减1是正确的 10、TELNET通过TCP/IP协议模块在客户机和远程登录服务器之间建立一个TCP 11、以下提供可靠服务不是UDP协议的特性 12、虚拟局域网通常采用交换机端口号、MAC地址、网络层地址或IP广播组地 址定义 13、办公自动化服务不是网络操作系统提供的服务 14、分析IP数据报所携带的TCP内容不是IP路由器应具备的主要功能 15、java当中网络编程的接口是在https://www.docsj.com/doc/a516896625.html,包当中提供的。 16、会话的建立、维护和交互过程中的同步等属于会话层功能 17、在网络层,IP模块根据IP数据报首部中的协议值决定将数据报中的数据交 给哪一个模块去处理,当协议值为17,应将数据交给UDP模块处理 18、ARP请求帧在物理网络中是以广播方式发送的 19、ICMP在重组定时器超时情况下会产生数据报超时报告。 20、回应请求与应答报文的目的是对网络进行诊断和测试,使用它可以了解 设备的可达性 21、网络的功能主要由各层的协议来完成,互联网技术经过多年的发展形成了现在的TCP/IP协议。 22、为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。 23、IP协议是TCP/IP协议簇中的核心协议,提供数据传输的最基本服务,是实现网络互联的基本协议。 24、ICMP协议将请求转变为ICMP报文,然后将报文封装在IP协议中进行发送。包含ICMP报文的IP数据报首部的协议字段为1。

《.NET程序设计》课程设计报告

《.NET程序设计》课程设计报告 班级:计算机1403 学号:1411640305 姓名:黄世增

一、实验名称 作者信息管理系统 二、实验目的 1.进一步掌握并加深“.NET程序设计”课程的基本知识,理解“.NET程序设计”课程中重点讲解的https://www.docsj.com/doc/a516896625.html,技术在项目开发中的应用。 2.培养正确的程序设计思想,提高分析问题、解决问题的能力。 3.提高学生进行技术总结和撰写说明书的能力。 三、系统设计描述 实验设计内容: 本次实验设计的内容是使用https://www.docsj.com/doc/a516896625.html,技术为某出版社设计并实现一个小型作者信息管理系统。出版社的工作人员登录该系统后,可以查看该社出版的各类书籍的作者的信息,并可以对作者信息进行各类查询,便于工作人员对作者信息进行管理。 系统数据库设计: 在SQL Server Express中为作者信息管理系统建立一个名为作者信息管理系统的数据库,并设计以下2张数据表: 1.系统管理员表 该表用来记录使用本系统的管理员的基本信息,包括管理员账户及密码。 【思考题】 (1)数据库中的一条记录中有若干个属性,若其中某一个属性(注

意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 统管理员表中用户名应设为主键。 (2)用户名和密码都设为varchar字符型。 2.作者个人信息表 该表用来记录作者个人的基本信息,包括作者编号、姓名、联系地址、电话、email。 【思考题】 (1)表中作者编号应设为主键。 (2)表中作者ID、电话号码和Email为nchar字符串型,姓名和联系人地址为nvarchar字符串型。 设计好数据库的两个表后,分别在两个表中输入数据,如下图所示:

c语言程序设计期末试题B(含答案)

c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include main( ) { int a = 1, b = 2, c = 3; printf(“%d”, c>b>a); } A) 2 B) 1 C) 0 D) 3 3.以下正确的叙述是() A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是() A) 0 B) 0.5 C) 1 D) 2 6. D 7. D 8. A 9. C 10. D 6.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是() A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是() main( ) { int a,b,c,d; scanf(“%d,%d,%d%d”,&a,&b,&c,&d); … } A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4

《网络程序设计》期末考试试题.doc

学习中心_________ 姓名_____________ 学号 西安电子科技大学网络与继续教育学院 2019学年上学期 《网络程序设计》期末考试试题 (综合大作业) 考试说明: 1、大作业试题于2019年4月25日公布,2019年4月26日至2019年5月12日在线上传大作业答卷(最多上传10张图片); 2、考试必须独立完成,如发现抄袭、雷同均按零分计; 3、答案须用《西安电子科技大学网络与继续教育学院综合大作业答题纸》手写完成,要求字迹工整、卷面干净; 4、文字描述部分需手写,系统界面以图片形式保存,且总页面不超过10页,上传考试系统。 一、(30分/题,共1个)以access数据库作为后台数据库,完成某学校教材信息的录入、修改和查询。要求所有教材信息必须存储在数据库中,最终提交作业报告,内容包括题目内容,题目总体分析,实现方案,数据库设计,功能模块设计,网页结构设计,运行结果,主要源程序。 总体分析 根据题目要求选择了使用桌面应用程序实现,而没有选择web实现。所以选择java作为开发语言,使用java提供的swing组件实现交互界面。题目要求使用access做为后台数据库,java提供了JDBC-ODBC驱动连接access数据库。

实现方案 使用access数据库(JDBC-ODBC连接) 使用java语言编程(JDK1.6) 使用swing实现交互界面 使用Netbeans7.0 IDE 数据库设计 表结构: 表:book 字段类型说明Id 长整型图书编号 book_name 字符串书名 author 字符串作者 publisher 字符串出版社 publish_date 时间出版时间 功能模块设计 程序中实现了图书信息的查询、添加、修改、删除。 1、查询模块 可以显示所有的图书信息, 可以按条件查询,可分别通过书名、作者、出版社进行查询相关图书信息。 2、添加模块 添加新的图书信息到数据库中 3、修改模块 对数据库中存储的图书信息进行修改。 4、删除模块 删除数据库中的图书信息。 详细设计 代码结构:

java网络编程课程设计终极版

枣庄学院 信息科学与工程学院课程设计任务书题目:基于UDP的聊天系统 小组成员:谭德鹏、崔浩、王珂、李洪康 成员学号:201212120221、201212120202 201212120224、201212120209 专业班级:网络工程、2012级本2班 课程:Java网络编程 指导教师:吕加国职称:副教授 完成时间:2015年4 月----2015年6 月 枣庄学院信息科学与工程学院制 2015年4 月15日

课程设计任务书及成绩评定 课程设计的任务和具体要求 任务:运用JDK和Eclipse开发环境,完成一个聊天或通讯系统的设计,初步掌握利用Java语言和JDK开发网络通信程序的基本方法。 具体要求: 1、需求分析:根据自己的选题,绘制用例图、功能结构图等。 2、系统设计:合理划分系统的功能结构,写清楚各个功能模块之间的关系。 3、详细设计:根据自己选题的业务逻辑,完成系统的界面设计、代码设计。 4、设计小结:总结课程设计的过程、体会及建议。 6、其他:参考文献等。 指导教师签字:吕加国日期: 2015-11-10 指导教师评语 成绩:____________指导教师签字:日期: 2015-1-10

课程设计所需软件、硬件等 ?硬件环境:Iterl(R) Core(TM)2 Duo CPU,主频2.31GHz;内存3G; 硬盘320G以上;1024×768显示分辨率 ?软件环境: JDK XXX、Eclipse XXX 课程设计进度计划 起至日期工作内容备注 6月10日~6月20日 我们小组根据所选的题目以及在这学期所学的软件工程的知识,严格按照软件生产的流程(使用的是瀑布模型)来完成此作品,小组成员各职其所,都完成了预期所做的工作! 参考文献、资料索引 序号文献、资料名称编著者出版单位[1]《Java网络编程基础》(第2版).作者:朱喜福戴舒樽王晓勇

C语言程序设计模拟试题1附答案

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。

《网络程序设计》期末总复习_最新版 苏大

前言: 陆老师:“附件中为经修改、增添内容后的最新《网络程序设计总复习题》,请转发全班同学,以复习这个为准,考试也已这个为准。 另外,考试的读程序部分,要求能读懂Linux Berkeley Socket编写的程序、Windows Winsock编写的程序,其中Windows MFC程序要求能读懂书上的对话框界面的Talkc程序中的各个类的程序编写,也请转告各位同学。 祝你们全班都能考个好成绩。 陆建德,即日” 第一章网络编程基础 1.实现网间进程通信必须解决哪些问题? 答:(1)网间进程的标识问题; (2)如何与网络协议栈连接的问题; (3)协议的识别问题; (4)不同的通信服务的问题 2. 说明TCP/IP中,端口的概念和端口的分配机制。 答:端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。 对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。保留端口的范围是0—1023,又称为众所周知的端口或熟知端口(well-known port),其余的端口号,1024-65535,称为自由端口号,采用本地分配,又称为动态分配的方法。 总之,TCP或UDP端口的分配规则是: 端口0:不使用,或者作为特殊的使用;

端口1-255:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务; 端口256-1023:保留给其他的服务,如路由; 端口1024-4999:可以用作任意客户的端口; 端口5000-65535:可以用作用户的服务器端口。 3. 什么是网络应用进程的网络地址?说明三元组和五元组的概念。 答:(传输层协议,主机的IP地址,传输层的端口号)标识了因特网中,进程间通信的一个端点,也把它称为网络应用进程的网络地址。 (传输层协议,主机的IP地址,传输层的端口号),这样一个三元组,叫做一个半相关(half-association)。 (传输层协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口),这样一个五元组称为一个全相关(association)。即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。 4. 举例说明面向消息的协议与基于流动协议有什么不同。 答:例如甲向乙发送三个消息,分别是:128、64和32字节。 面向消息的协议中,如果接受缓冲区是256字节,足以接收3条消息,且这三条消息全部达到。乙仍然需要发送3条读取消息。分别返回128、64、32字节,而不用一次读取来调用者单个数据包。 基于流的消息协议中,在接收端乙的堆栈把所有进来的消息数据包聚集在一起,放入堆栈,等待应用进程读取。进程发送读取命令,指定了进程接收缓冲区,如果进程缓冲区有256字节,系统马上返回全部224字节。 5.说明C/S模式的概念、工作过程和特点。 答:C/S模式即客户机/服务器模式,是应用程序最常用的通信模式。 服务器的工作过程是:(1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上接收客户请求。(2)等待客户的请求到达该端口。(3)服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线

《网络应用程序设计》课程设计报告书

网络应用程序设计课程设计报告书 题目:局域网多人聊天室 班级:0991132 学号:1099113202 姓名:赵燃 指导教师:宋毅、王家宁、徐红梅、姚璐 周期:一周 成绩: 2011年12 月23 日

一、课程设计的目的与要求( (一)课程设计目的与任务 (1)课程设计的目的:《网络高级程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用vc++语言进行面向对象设计的基本方法。提高运用面向对象知识分析实际问题、解决实际问题的能力。 (2)课程设计任务:局域网多人聊天室 该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。 客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。 服务器端程序:可将消息发送到客户端和接受客户端发送来的消息。 (二)题目要求 该系统要求完成聊天室的全过程,包括客户端和服务器两大部分的编程及其连接。服务器端聊天程序负责接收和发送来自客户端的聊天信息,客户端聊天程序负责建立和维护与服务器端的连接,想服务器发送本客户的聊天内容。系统采用VISUAL C++语言程序设计编程实现。并且按要求编写程序设计报告书,能正确编写分析、设计、编码、测试等技术文档。 二、设计正文 1系统分析 (1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。 (2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息除源端外的所有客户发送过去。 (3)服务器还要监控这些连接的状态。在客户主动离开或发生故障时从列表删除相应的表项,并及时更新连接表。 2功能详细描述及框图 用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天,客户端的聊天分为对群聊天和私聊的信息,该信息应通过程序控制分别进行处理。

《网络程序设计》期末考试复习题及参考答案

网络程序设计复习题 (课程代码 252284) 一.选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. java B. class C. html D. exe 2、设int型变量x = 1 , y = 2 , z = 3,则表达式y+=z--/x++ 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 3、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成一些画图操作。 A. start( ) B. stop( ) C. init( ) D. paint( ) 4、不允许作为类及类成员的访问控制符的是( )。 A. public B. private C. static D. protected 5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 6、下列浏览器中,可以运行HTML中的Applet,而忽略其他HTML命令的是( )。 A. Netscape 3.0 B. Internet Explorer5.0 C. Hot Java D. Appletviewer 7、以下哪一个不是JA V A的标准数据流( )。 A. 标准输出数据流 B. 标准输入数据流 C. 标准错误数据流 D. 标准运算数据流 8、下面声明数组的写法错误()。 A. int a[ ]; B: int[ ] a; C: int[ ][ ] a[3][ ]; D; int[ ][ ] a[ ][3]; 9: 设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char 型变量,则表达式x+y*a/x+b/y+c的值为( )类型。

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

最新网络编程技术复习题1--java习题

一 练习题1 ?问题:Java网络程序位于TCP/IP参考模型的哪一层?(单选) ?选项:B –a) 网络层互联层 –b) 应用层 –c) 传输层网络 –d) 主机-网络层 练习题2 ?问题:以下哪些协议位于传输层?(多选) ?选项:AD –a) TCP –b) HTTP –c) SMTP –d) UDP –f)IP 练习题3 ?问题:假定一个进程已经占用TCP的80端口,它还能否占用UDP的80端口?(单选)A ?选项: –a)可以 –b)不可以 练习题4 ?问题:.一个客户进程执行以下代码 Socket socket1=new Socket(host,port); Socket socket2=new Socket(host,port); 以下哪些说法正确?(多选) ?选项:AC –a)socket1与socket2占用不同的本地端口。 –b) Socket构造方法中的port参数指定占用的本地端口。 –c) 当Socket构造方法成功返回,就表明建立了与服务器的一个TCP连接。 –d) 执行第二行程序代码会抛出异常,因为一个客户进程只能与服务器端建立一个TCP连接。 练习题5 ?问题:有一种协议规定:如果客户端发送一行字符串“date”,服务器端就返回当前日期信息,如果客户端发送一行字符串“exit”,服务器端就结束与客户端的通信。这种协议应该属于哪一层的协议?(单选)?选项:B –a) 网络层互联层 –b) 应用层 –c) 传输层网络 –d) 主机-网络层 练习题6 ?问题:HTTP协议规定,默认情况下,HTTP服务器占用的TCP端口号是什么?(单选) ?选项:C –a)21 –b)23 –c)80 –d)任意一个未被占用的端口号 练习题7 ?问题:在客户/服务器通信模式中,客户与服务器程序的主要任务是什么?(多选) ?选项:BC

网络编程课程设计

课程设计说明书 课程名称:Windows网络编程 设计题目:基于JA V A网络聊天室设计 学院:计算机科学与信息工程学院 专业班级:网络工程12级 指导教师: 小组成员: 2015年6月 目录 摘要 (1) 引言: (1) 1.需求分析 (1) 1.1需求分析 (1) 1.2系统简介 (2) 2. 系统开发技术 (2)

2.1 JAVA网络编程技术 (2) 2.2 Socket套接字 (3) 2.3 TCP三次握手 (3) 3. 系统总框图与功能分析 (4) 3.1系统总框图 (4) 3.2系统功能模块分析 (5) 4. 系统模块代码设计与分析 (6) 4.1系统流程分析 (6) 4.2类的设计与分析 (7) 4.3客户端模块部分代码 (7) 4.4服务器端模块部分代码: (9) 5.系统测试 (11) 6. 总结 (13) 7.成员分工 (13) 参考文献: (14)

网络聊天室 摘要:随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所介绍的网络聊天系统是基于JAVA应用程序开发设计的,其主要特性是简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。 关键词:局域网、聊天室、JAVA、Socket、WindowsSocket 引言:目前,基于TCP/IP协议的网络得到了普及和飞速的发展,Windows下的网络程序越来越显得重要。利用TCP/IP协议提供的编程接口———Socket(套接字)可以开发出TCP/IP应用程序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows 环境下顺利进行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用程序是通过客户机/服务器(C/S)作用方式模式在网络(应用)编程界面实现的。本次实验采用java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与服务器端之间的数据传输。 1.需求分析 1.1需求分析 根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而小组成员也都学习过JAVA 语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,小组成

网络程序设计试题A卷- 最新版本

西安电子科技大学《网络程序设计》试题 (2013年A卷) 考试时间120 分钟试卷编号 班级学号姓名任课老师姓名 一、单选题(10×2分=20分) 1.以下字段中,不属于IP首部的是 A. 协议类型 B. 生存时间 C. 源IP地址 D. 目的端口号 2.以下函数中,不会产生阻塞的是 A. send( ) B. sendto( ) C. connect( ) D. listen( ) 3.进程A是进程B的父进程,当A正在运行时B退出,下列叙述中正确的是 A.进程A也将退出 B.进程A将收到SIGCHLD信号 D.进程A将收到SIGKILL信号 D.进程A会成为僵尸进程

4.整数0x12345678在little-endian字节序主机内存中的存储形式是_________(注:内存由低到高) A. 12 34 56 78 B. 78 56 34 12 C. 34 12 78 56 D. 56 78 12 34 5.使用信号驱动I/O时哪一个不是必须要执行的操作 A.为信号SIGIO关联一个信号处理函数 B.设置套接字为非阻塞模式 C.设置套接字所有者 D.允许套接字进行信号驱动I/O 6.对使用UDP协议的套接字调用connect函数,下面叙述中正确的是A.connect函数将阻塞 B.connect函数将导致3次握手操作 C.connect函数记录对方的IP地址和端口后立刻返回 D.不能对使用UDP协议的套接字描述符调用connect函数 7.对函数调用send(sockfd,“12xyz”,5,MSG_OOB)的描述中正确的是 A.只有字符z被写入发送缓冲区 B.只有字符串12xy被写入发送缓冲区 C.字符串12xyz中的每个字符都将作为带外数据发送 D.TCP协议发送的下一个报文段中URG标志将置位 8.在给网络地址附值时,程序如果使用“INADDR_ANY”,则表明A.对于只有一个IP地址的主机,使用“127.0.0.1”地址 B.对于有多个网卡的主机,使用其中任意一个IP地址 C.对于有多个网卡的主机,表示所有IP地址,并处理所有地址的请求D.以上均不对

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

计算机网络课程设计题目和要求

计算机网络课程设计通过课程设计,使学生在对计算机网络技术与发展整体了解的基础上,掌握网络的主要种类和常用协议的概念及原理,初步掌握以TCP/IP协议族为主的网络协议结构,培养学生在TCP/IP协议和LAN、WAN上的实际工作能力;学会网络构建、网络日常维护以及网络管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能。运用网络工程和软件工程思想,按照需求分析、规划、设计、配置的基本流程,经历一个完整的网络工程过程,培养学生调查研究、查阅技术文献、资料、手册以及编写技术文档的能力,培养学生将理论知识应用于实践的能力。 一、格式要求及须知: (1)使用学院网站的课程设计模版,要求格式美观,字体及编号要求见表1。 表1 字体及编号要求

(2)参考文献:参考课本的参考文献格式(附录C)。但编号换成[1]、[2]……(3)附录:课程设计中的代码或得到的数据包等数据将作为该设计附件或附录,题目需要但没有的相应代码及数据包文件的将记整组不及格,需要重做。 (4)成绩记录:该设计成绩将记录到教务处成绩管理系统中。 (5)打印:经审查(发邮件到指导老师处或当面交流修改)后,方可打印、存档。打印后递送到指导老师的信箱。 (6)如发现两组设计雷同或抄袭互联网,该组重做! 二、任务完成形式: 交付课程设计说明书、设计作品(需要验收)。 设计作品指的是完整的源程序代码(对于第二类题目为仿真文件)。 课程设计说明书(纸质+电子版),内容包括:设计任务、需求分析、总体设计、详细设计(相应地给出关键的代码)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 设计工作计划与进度安排: 根据所选题目,合理安排进度计划,总体上需要40个小时。以下仅供参考: 1. 原理知识 4小时 2. 程序设计技术 4小时 3. 开发环境与程序调试环境 4小时 4. 总体设计、关键环节的详细设计 8小时

相关文档
相关文档 最新文档