文档库 最新最全的文档下载
当前位置:文档库 › 程序设计基础期末复习汇总.doc

程序设计基础期末复习汇总.doc

程序设计基础期末复习汇总.doc
程序设计基础期末复习汇总.doc

《程序设计基础》期末复习

考试题型和分值。

一、单选题(20小题,每题2分)

二、填空题(共20题,计20分)

三、编程填空题(给出程序的输出结果,共5题,14分)

四、读程序题(补充程序,共2小题,,共26分)

程序练习:

1. 输出1-10之间所有的偶数和它们的平方。

2. 输出所有的水仙花数。

3. 从键盘输入一行字符,统计其中有多少个单词。假设单词之间是以空格分开。

4. 编程先由计算机“想” 一个1?100之间的数请人猜,如果人猜对了,贝U

结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。

5. 编写程序,要求在main函数接受一个整型变量,将其作为参数传入IsPrime 函数中,IsPrime函数根据传入的值确定返回值,如果<2,返回0;如果不是素数,返回1;

如果是素数,返回2O主函数根据返回值输出相应的提示信息:输入不合法,不是素数,是素数。

6. 编写程序:给学生出一道加法运算题,然后判断学生输入的答案对错与否。

通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示

“Right!,”否则提示重做,显示“ Not correct! Try again!",重复要求输入答案,直到输入结果正确,程序结束。

要求:用Add函数来进行两个整数的加法运算;用Print函数判断输入的答案正确与否;用main 函数输入两个相加的数和学生的答案,然后调用Add函数和Print函数判进行判断和显示输出。

7. 利用指针编写两个整数交换的函数。

8. 从10个元素的数组中找出最大值和最小值,并记录最大值和最小值对应的元

素的下标位置。

9. 给定40个数,按照要求进行排序并输出排序的结果。

程序设计ABC

1. 程序运行的方式分为哪两种?(编译运行和解释运行)

2 .什么叫编译器,其功能是什么?(把程序设计语言转换成目标代码的软件称为编译器)

数据类型、运算符与表达式

4.C程序的特点?

函数是C程序的基本单位。一个C程序有且仅有一个main函数(主函数),

总是从main函数开始执行,在main函数中结束,与其位置无关;

函数由函数头和函数体组成

C程序的书写格式:C语句都以分号结束;允许一行多句,但最好一行一

句并按照锯齿形(缩进式)书写,提高可读性和可测试性;适当使用注释

(注释中的语句不参与编译,不能发现其中的拼写错误)。

2. C语言标识符的命名规则,会判断哪些是合法的哪些不合法。

3. 如何判断表达式的数据类型?(取高精度的)

4. 常量:程序运行过程中其值不变的量。

实型常量的表示。分为十进制小数(123.45. -0.5. .9& 18.均合法)和

e3、2e3?5、.e3 不合法)。

指数形式(1e-2> 4.5e3、3,e2、?8e?5 均合法, 字符

常量的表示。除了转义字符外单引号中仅有一个字符(X ‘X’ X"

XY')、转义字符。(\h‘表示一个字符)(P23)

5. 字符串常量。双引号。(注意与字符常量的区别)

6. 宏常量。如何声明一个宏常量?

例如:#define PI 3.14159

#define A(x) 3*x*x -2

printf(%d”, A(1+3)); 结果?

7. 变量:程序运行过程中其值可以改变的量。

变量的声明与初始化。遵循“先定义、后使用”

变量名由用户定义的标识符。

变量的属性:变量名、变量类型、变量的值、变量的存储单元一一地址

使用变量注意的问题

8. 常用运算符及表达式。

不能给表达式赋值。例如:x+y=3 优先级和结合性。

算术运算符。(1)两个整数相除结果为整数。6/4=1

(2)有一个操作数为实数,结果为double型。674=1.5 (3)求余运算的两个

操作数必须为整数。

将算术表达式转换为C语言表达式。(常见错误P34)

例如:3 < x < 4” 或’x < -5

关系运算符。>,>=,<,<=,==,!= (关系运算符运算出的结果为0

和非0)(常见错误见P35)

逻辑运算符。逻辑运算符两侧的运算对象可以是任意合法的表达式。

&& (同真为真,否则为假。)、|| (有一个为真结果为真,同假为假)!(a 的值不变)例如:判断是否为字母;

例如:当a=1 ,b=2,c=3,x=4,y=3 时!b

会将自然语言翻译成逻辑、关系表达式。例如:

收入(income)大于5000并且小于10000

赋值运算符。左边只能是变量。复合运算符,例如:n *=m + 2

三目运算符:w < x ? w : y

增量或减量运算符,则相当于执行加 4或减1操作,若用在复合语句中就 有区别。m = n++; m = +4-n ; printf ( “%d ”, ++n ); printf ( “%d”, n++);

9. 类型转换。不会自动进行四舍五入;将取值范围小的类型转为范围大的类型 是安全的。反之是

不安全的。

注意表达式赋值后的类型转换 例如:intxl = 1, x2 = 2, x3 =3;

简的C 程序谟

1. 表达式和表达式语句的区别。

2. 字符输入/输出。字符输出函数putchar (ch ):向终端显示屏幕输出一个字符 ch 。 字符输

入函数getchar (),使用格式: 变量 =getchar ()

功能:从键盘输入一个字符,按回车表示输入结束,函数值为从输入搂 收的字符。

3. 格式输入/输出。

scant :不要忘紀符号;多个变量输入值之间的符号;特别要注意类型

的匹配;忽略修饰符等。(具体见书

printf :注意类型匹配;域宽、精度等。(具体见箱)

4. 要能够判断程序的锵(如变量、常量的声明、输入输出格式等问题)。

)运算符。

增量( + + )和减量 注意前置和后置运 若单独一个

程序的控制结构

1. 什么是算法?什么是程序?算法的五个特性是什么?

程序:是为解决某一问题而用特定的计算机语言编写的,用以指择算

机完成预定功能的一系列计算机指令

算法是程序处理问题的步骤和滋;

算法的特性:有穷性、确定性、有效性、没有输入或多个输入、有一个或多个输出。(要

清楚各个特性的含义)

2. 程序的三种基本结构。

3. 逻辑运算符和关系运算符的使用。

4. 选择结构。

if形式、if ■?- else… 形式、if…else??-嵌套形式、switch多路开关

(特别注意括号的使用、else与if配对问题、关系判断使用==、浮点数不能进行==比较)使用条件语句应注意以闹题:

是否需要包含相等的情况。

表达相当的关系使用的是==,不要把

if(a= = b) 写成if(a二b)。

例如:

int x = 2, y=3, z = 4;

if( x = y)

printf( %d\n”,z);

else

printf( %d\n”,y);

对于float变量,由于存在精度问题,所以要避免使用“==”或

“!= ”进行数字比较。可以设法转换成“>=”或“v=”形式。

语句嵌套结构中if与else的配对!

if和else配对原则:缺省{ }时,else总是和它上面离它最近的未

配对的if配对。

实现if~else正确配对方法:力口 { }0

switch多路开关:

switch(表达式)

{

case常量1 :

}

表达式需为整型、字符型或枚举型。

各常量表达式的值必须互不相同;

需用break跳出;

case后可包含多个可执行语句,且不必加{};

switch可嵌套,多个case可共用一组执行语句;

default可以省略,但建议使用。

例如:

i=0;

while(i < 3)

{

switch(i)

{

case 0: printf( %d”,i);

case 2: printf( %d”,i);

default: printf( %d”,i);

}

4.循环结构。

循环的三种形式以及语法。

循环的要素:循环入口、重复执行的内容、循环测试、终止条件、循环

退出。

注意:

在for和while语句之后一般没有分号,do-while的while后必须有

分号。

循环体有多条语句必须用{}括起来。

有分号表示循环体就是分号之前的内容(空循环体)

while (i< 100);

i++;

for (i = 0; i < 100; i++); for(i = 1; i < 5; i += 2)

printf(”%d", i); printf(”%d", i);

选择循环的一般原则

如果循环次数已知,用for;

如果循环次数未知,用while;

如果循环体至少要执行一次,用do-whileo

循环的嵌套:外层、內层循环的次数。

例如:

main()

{

int i, x = 0;

for (i = 2; i < 5; i++) {

do

{

if (i%3)

conti nue;

x++;

}while( !i);

x++;

printf( x=%d\n,,,x);

}

流程的转移控制:

break语句:可以用在switch结构中,终止当前case;可以用在循环结构中,退出当前所在的循环。

continue语句:用于循环结构中,中断此次循环体的执行,也就是停止continue语句后面的内容,开始下一次。

第三章函数

1. 熟悉一些简单的数学库函数。

2. 函数的定义。

函数定义的语法。

“函数名”是函数的唯一标识,其命名规则与命名雷同。

函数不能嵌套定义,可以嵌套调用。

函数头和函数体之间不能有分号。

3. 函数原型,也叫函数声明。

函数原型就是不带函数体的函数声明;

函数原型就是函数头加分号;

函数原型必须放在调用者之前,通常放在main函数之前;

函数原型和函数定义中的函数返回类型、函数名和形参数表(形参的个数、类型、位置)必

须完全一致,否则,编译器会报告有编译错误。

4. 函数参数。

形参:子函数(被调函数)内部准备接受数据的参数叫形参。形参必须指定类型。形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放。

实参:调用者提供的参数叫实参,实参是实际参与运算的数据。实参必须有确定的值。

5. 函数调用。

调用函数将实参的值传给(赋值)被调函数的形参,此时实参和形参就有各自的存储空间,所以形参值的变化不会影响实参。

函数调用时,调用者提供的参数个数、类型、顺序应与子函数声明、定

义时相同。

有返回值调用。放到一个数值表达式中,女口c = max(a, b);

作为另一个函数调用的参数,如I c = max( max(a,b) ,c);

printf(”%d\n", max(a,b));

例如:

int fun(int n)

{

return (n/3);

}

main()

{

int x,y;

scanf( %d”,&x);

y = fun(fun(fun(x)));

printf( %d\n”,y); 〃结果:45}

无返回值函数的调用

函数调用表达式,单独一行使用,如display(a, b);

函数的递归调用。

例如:

int fun(int n)

{

int m;

if(n二二0|| n 二二1)

return 1;

m = n ?fun(n -2);

return m;

}

main()

{

printf("%d\n", fun(5));

}

6. 函数的返回值。

函数返回值的类型最终取决于函数定义时函数首部所说明的函数类型

返回值只有一个,可以是除了数组之外的任何类型,也可以是void类型;

有返回值函数必须有return语句,无返回值函数不要求有return语句。

7. 变量的作用域。

作用域是指在源程序中定义变量的位置及其能被读写访问的范围。

变量作用域规则:每个变量仅在定义它的语句块(包含下级语句块)内有效,并且拥有自己的内存空间。

同一个语句块内不能定义同名变量。(不同的函数中可以使用相同名字的变量)

8. 局部变量

在语句块内定义的变量

形参也是局部变量

定义时不会自动初始化,除非程序员指定初值。

进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效。(函数退出后失效,再次进入函数,变量值重新初始化。)并列语句块各自定义的同名变量互不干扰

9. 全局变量

在所有函数之外定义的变量。

在程序中定义它的位置以后都有效;

从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存;

使函数之间的数据交换更容易,也更高效。

因为谁都可以改写全局变量,所以很难确定是谁改写了它。

10. 静态变量

在变量类型前面用static修饰;

变量的值可以保存到下次进入函数,使函数具有记忆功能。

静态变量和全局变量都是静态存储类型

若没有被初始化,则自动被初始化为0;

从静态存储区分配,生存期为整个程序运行期间。

数组

1. 数组的定义和初始化

数组的概念:由若干类型相同的相关数据按顺序存储在一起形成的一组同

类型有序数据的集合,称为数组。

什么是数组元素?什么是下标?下标的取值是多少(下界、上界)?什么

是维数?

定义数组的大小必须使用整型常量或者整型常量表达式,不允许使用变

量。数组大小最好用宏来定义,以适应未来可能的变化。

C语言的数组在内存中是按行存放的。二维数组的数组元素的存放顺序是

也是按行存放。

数组占用的内存空间如何计算?

数组定义后的初值仍是随机数,一般需我们来初始化。

int a[5] = {12, 34, 56 ,78 ,9 };

int a[5] = { 0 };

int a[5] = {1 , 2};是怎样赋值的?

int a[] = {11, 22, 33, 44, 55 };

int a[][4] = {0,0};

int a[3][4] ; //第5个元素是谁?行下标范围?列下标范围?

int a[3][4] = {{1,2},{0},{4,5,8.10}}//a[2][3] 的值?

2. 向函数传递一维数组。

用数组名作参数,就是将数组的首地址传递给函数。

实参数组与形参数组占用同一段内存。

若在被调函数中改变形参数组元素的值,则实参数组元素的值也会随之发生改变,这是由于形参和实参两数组在内存中因指向统一地址而共享这一段内存造成的。

对形参数组进行说明时,在方括号内可以给出数组的长度说明,即说明为

固定长度数组,也可以不给出数组的长度说明,即说明为可变长度数组,一般此时用另一个

整型参数来给定数组长度。

3. 字符串

一串以‘0’结尾的字符在C语言中被看作字符串。

用双引号括起的一串字符是字符串常量,C语言自动为其添加0'终结符。C语言并没有为字符串提供任何专门的表示法,完全使用字符数组(一维数组)和字符指针来处理。

要区分字符和字符串的概念。不要用错了单引号和双引号。

4. 字符数组

每个元素都是字符类型的数组。

初始化:可以采用逐个字符进行初始化(若没有’0',仅仅是字符数组,

不能把它当作字符串来处理);也可以采用字符串常量赋值。

一个字符型的一维数组并不一定是一个字符串,只有当字符型一维数组中的最后一个元为’\0',它才构成字符串。

用字符型数据对数组进行初始化

char str[6] = {'C'/h'/i'/n'/a'/XO'};

用字符串常量直接对数组初始化

char str[6] = {"China"};

char str⑹="China";

Char str[] = “china ” ;

charstr[5] = “China” ;

charweekday[7][10]={ “Sunda”y'Mpnday” ” Tuesday ”,” Wednesdaf , ”

Thursday ” , ” Friday ” , ” ;Saturday ” }

charweekday[ ][1O]={ “Sunday”,” Mo”ncte晞dqy” ” VVednesdat”,

” Thursday M M friday Saturday }

字符数组的输入和输出:

按c格式一个字符一个字符地单独输入/输出:%c (需要用到循环结构)

按S格式符将字符串作为一个整体输入/输出:%s

char str[1O]; scanf(“%s” , str); printf(“%s”,str);

字符数组名本身代表该数组存放的字符串的首地址,故用scanf的%$格式

输入字符串时,字符数组名的前面不能再加取地址运算符,其后也不需要用方括号指明下标。输入字符串时应确保输入的字符串长度不超过数组所能容纳的空间大小。空格、回车或跳格符(Tab)作为按%s格式输入

字符串的分隔符,因而不能被读入,输入遇到这些字符时,系统认为字符串输入结束。

用字符串处理函数gets()或puts()输入/输出一个字符串。

字符串处理函数。vstring.h>

字符串复制strcpy (字符数组1,字符串2);

例如:char str1[3],str2[]=芒hina”;

str1 = str2; 〃编译错误,

printf( %s\n,,,str1);

求字符串长度strlen (字符串);

字符串连接strcat (字符数组1,字符串2);

字符长比较strcmp (字符串1,字符串2);

例如:

判断字符串S1是否大于字符串S2:

指针

1. 指针:专门用来存放其他变量地址的一种特殊变量。

2. 什么是内存地址?什么是变量地址?什么是变量内容?

3. 什么是直接寻址?什么是间接寻址?

4. 指针的定义、初始化。

声明为指针类型的变量,专门存放地址数据的变量定义指针变量

例如:int*p p是变量,int*是类型。

指针的指向

5. &和*的意义

例如:

main()

{

int x =10;

int *px = &x; //*表示指针 &表示取地址

printf( %d\n,,,*px); //* 表示取内容

}

6. 指针运算。

一般只进行指针和整数的加减运算,同类型指针之间的减法运算关系运算

赋值运算

7. 指针变量作为函数的参数

属于赋地址调用,将实参指针(地址)传给形参,形参也是一指针。在函数调用时,实参指针将其地址值传给形参指针。

8. 字符指针

指向字符类型的指针char*p; 字符指针是变量,而数组名是地址常量。

例如:char s[] = ABCD\*p;

for (p = s; p < s + 4; p++)

printf( %s”,p);//ABCDBCDCDD

9. 一维数组的地址和指针的关系。

数组名就是一个指针

只是不能修改这个指针的指向,可以定义函数的参数为数组。

指针也可当作数组名使用

int *p, a[10]; p = a;

double x[10], *p = &x[3],则p[3]表示的数组元素是a[4]

指针也可当作数组名使用

相关文档