程序设计基础期末复习.docx
- 文档编号:18094645
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:16
- 大小:180.47KB
程序设计基础期末复习.docx
《程序设计基础期末复习.docx》由会员分享,可在线阅读,更多相关《程序设计基础期末复习.docx(16页珍藏版)》请在冰点文库上搜索。
程序设计基础期末复习
程序设计基础》期末复习
考试题型和分值。
一、单选题(20小题,每题2分)二、填空题(共20题,计20分)
三、编程填空题(给出程序的输出结果,共5题,14分)四、读程序题(补充程序,共2小题,,共26分)
猜对了,则
结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者
“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直
到人猜对为止。
5.编写程序,要求在main函数接受一个整型变量,将其作为参数传入IsPrime函数中,IsPrime函数根据传入的值确定返回值,如果<2,返回0;如果不是素数,返回1;如果是素数,返回2。
主函数根据返回值输出相应的提示信息:
输入不合法,不是素数,是素数。
6.编写程序:
给学生出一道加法运算题,然后判断学生输入的
答案对错与否。
通过输入两个加数给学生出一道加法运算题,
如果输入答案正确,则显示“Right!
”,否则提示重做,显示
Notcorrect!
Tryagain!
”,重复要求输入答案,直到输
入结果正确,程序结束。
要求:
用Add函数来进行两个整数的加法运算;用Print函数
判断输入的答案正确与否;用main函数输入两个相加的数和
学生的答案,然后调用Add函数和Print函数判进行判断和显
示输出。
7.利用指针编写两个整数交换的函数。
8.从10个元素的数组中找出最大值和最小值,并记录最大值和
最小值对应的元素的下标位置。
9.给定10个数,按照要求进行排序并输出排序的结果。
程序设计ABC
1.程序运行的方式分为哪两种?
(编译运行和解释运行)2.什么叫编译器,其功能是什么?
(把程序设计语言转换成目标代码的软件称为编译器)
数据类型、运算符与表达式
1.C程序的特点?
函数是C程序的基本单位。
一个C程序有且仅有一个main函数(主函数),
总是从main函数开始执行,在main函数中结束,与其位
置无关;函数由函数头和函数体组成
C程序的书写格式:
C语句都以分号结束;允许一行多句,
但最好一行一句并按照锯齿形(缩进式)书写,提高可读性和可测试性;适当使用注释(注释中的语句不参与编译,能发现其中的拼写错误)。
2.
C语言标识符的命名规则,会判断哪些是合法的哪些不合法。
实型常量的表示。
分为十进制小数(123.45、-0.5、.98、18.均合法)和指数形式(1e-2、4.5e3、3.e2>.8e-5均合法,e3、2e3.5、.e3不合法)。
字符常量的表示。
除了转义字符外单引号中仅有一个字符
X'X'“X”‘XY')、转义字符。
(‘\n'表
示一个字符)(P23)
例如:
#definePI3.14159
printf(“%d”,A(1+3));
结果?
#defineA(x)3*x*x-2
7.变量:
程序运行过程中其值可以改变的量。
变量的声明与初始化。
遵循“先定义、后使用”。
变量名由用户定义的标识符。
变量的属性:
变量名、变量类型、变量的值、变量的存储单元——地址
使用变量注意的问题
8.常用运算符及表达式。
不能给表达式赋值。
例如:
x+y=3
优先级和结合性。
算术运算符。
(1)两个整数相除结果为整数。
6/4=1
(2)有一个操作数为实数,结果为double型。
6./4=1.5(3)求余运算的两个操作数必须为整数。
将算术表达式转换为C语言表达式。
(常见错误P34)
例如:
3 出的结果为0和非0)(常见错误见P35)逻辑运算符。 逻辑运算符两侧的运算对象可以是任意合法的 表达式。 语句while(! E) 中的条件! E等价条件是: E==0 x+y<=3的值? 会将自然语言翻译成逻辑、关系表达式。 例如: 收入(income)大于5000并且小于10000 赋值运算符。 左边只能是变量。 复合运算符,例如: n*=m 三目运算符: w w: y 增量(++)和减量(一一)运算符。 注意前置和后置运算: 若单独一个增量或减量运算符,则相当于执行加1或减1 操作,若用在复合语句中就有区别。 m=n++; m=++n;printf(“%d”,++n);printf(“%d”, n++); 9.类型转换。 不会自动进行四舍五入;将取值范围小的类型转 为范围大的类型是安全的。 反之是不安全的。 注意表达式赋值后的类型转换 例如: intx1=1,x2=2,x3=3; 简单的C程序设计 2. 字符输入/输出。 字符输出函数putchar(ch): 向终端显示屏 幕输出一个字符ch。 功能: 从键盘输入一个字符,按回车表示输入结束,函数值 3. 格式输入/输出。 为从输入设备接收的字符。 scanf: 不要忘记&符号;多个变量输入值之间的符号;特别要注意类型的匹配;忽略修饰符等。 (具体见书) printf: 注意类型匹配;域宽、精度等。 (具体见书-3) 4.要能够判断程序的错误。 (如变量、常量的声明、输入输出格 式等问题)。 程序的控制结构 1.什么是算法? 什么是程序? 算法的五个特性是什么? 程序: 是为解决某一问题而用特定的计算机语言编写的,用以指挥计算机完成预定功能的一系列计算机指令;算法是程序处理问题的步骤和方法;算法的特性: 有穷性、确定性、有效性、没有输入或多个输入、有一个或多个输出。 (要清楚各个特性的含义) 2.程序的三种基本结构。 3.逻辑运算符和关系运算符的使用。 4.选择结构。 switch多路开关 使用==、浮点数不能进行==比较。 使用条件语句应注意以下问题: 是否需要包含相等的情况。 if(a ==b)写成if(a=b)。 表达相当的关系使用的是==,不要把 例如: intx=2,y=3,z=4; if(x=y) else 语句嵌套结构中 if与else的配对! 成“>=”或“<=”形式。 if和else配对原则: 缺省{}时,else总是和它上面离它最近的未配对的if配对。 实现if~else正确配对方法: 加{}。 switch多路开关: switch(表达式) case常量1: 表达式需为整型、字符型或枚举型。 各常量表达式的值必须互不相同;需用break跳出;case后可包含多个可执行语句,且不必加{};switch可嵌套,多个case可共用一组执行语句; default可以省略,但建议使用。 例如: i=0; while(i<3) default: printf( %d”,i); switch(i) i++; 4.循环结构。 循环的三种形式以及语法。 循环的要素: 循环入口、重复执行的内容、循环测试、终止条件、循环退出。 注意: 在for和while语句之后一般没有分号,do-while的 while后必须有分号。 循环体有多条语句必须用{}括起来。 有分号表示循环体就是分号之前的内容(空循环体) while(i<100); i++; for(i=1;i for(i=0;i<100;i++); <5;i+=2) printf("%d", printf("%d",i); 如果循环体至少要执行一次,用 do-while。 选择循环的一般原则 循环的嵌套: 外层、内层循环的次数。 例如: main() inti,x=0; for(i=2;i<5;i++) do if(i%3) continue; }while(! i); x++; printf(“x=%d\n”,x); 流程的转移控制: 以用在循环结构中,退出当前所在的循环。 也就是停止continue语句后面的内容,开始下一次。 第三章函数 函数定义的语法。 函数名”是函数的唯一标识,其命名规则与命名雷同。 函数不能嵌套定义,可以嵌套调用。 3. 函数原型,也叫函数声明。 函数头和函数体之间不能有分号。 函数原型就是不带函数体的函数声明;函数原型就是函数头加分号;函数原型必须放在调用者之前,通常放在main函数之前; 函数原型和函数定义中的函数返回类型、函数名和形参数表(形参的个数、类型、位置)必须完全一致,否则,编译器会报告有编译错误。 4.函数参数。 形参: 子函数(被调函数)内部准备接受数据的参数叫形参。 形参必须指定类型。 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放。 实参: 调用者提供的参数叫实参,实参是实际参与运算的数据。 实参必须有确定的值。 5.函数调用。 调用函数将实参的值传给(赋值)被调函数的形参,此时实参和形参就有各自的存储空间,所以形参值的变化不会影响实参。 函数调用时,调用者提供的参数个数、类型、顺序应与子函数声明、定义时相同。 有返回值调用。 放到一个数值表达式中,如c=max(a,b);作为另一个函数调用的参数,如c=max(max(a,b),c);printf("%d\n",max(a,b)); 例如: intfun(intn) return(n/3); main() intx,y; scanf(“%d”,&x); y=fun(fun(fun(x))); printf(“%d\n”,y);//结果: 45 无返回值函数的调用函数调用表达式,单独一行使用,如display(a,b);函数的递归调用。 例如: intfun(intn)intm; if(n==0||n==1) return1; m=n-fun(n-2); returnm; main()printf("%d\n",fun(5)); } 6.函数的返回值。 函数返回值的类型最终取决于函数定义时函数首部所说明的函数类型返回值只有一个,可以是除了数组之外的任何类型,也可以是void类型; 有返回值函数必须有return语句,无返回值函数不要求有return语句。 7.变量的作用域。 作用域是指在源程序中定义变量的位置及其能被读写访问的范围。 变量作用域规则: 每个变量仅在定义它的语句块(包含下级语句块)内有效,并且拥有自己的内存空间。 同一个语句块内不能定义同名变量。 (不同的函数中可以使用相同名字的变量) 8.局部变量在语句块内定义的变量形参也是局部变量定义时不会自动初始化,除非程序员指定初值。 进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效。 (函数退出后失效,再次进入函数,变量值重新初始化。 )并列语句块各自定义的同名变量互不干扰 9.全局变量在所有函数之外定义的变量。 在程序中定义它的位置以后都有效;从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存;使函数之间的数据交换更容易,也更高效。 因为谁都可以改写全局变量,所以很难确定是谁改写了它。 10.静态变量在变量类型前面用static修饰;变量的值可以保存到下次进入函数,使函数具有记忆功能。 静态变量和全局变量都是静态存储类型若没有被初始化,则自动被初始化为0;从静态存储区分配,生存期为整个程序运行期间。 数组 1.数组的定义和初始化 数组的概念: 由若干类型相同的相关数据按顺序存储在一 起形成的一组同类型有序数据的集合,称为数组。 什么是数组元素? 什么是下标? 下标的取值是多少(下界、 上界)? 什么是维数? 定义数组的大小必须使用整型常量或者整型常量表达式,不允许使用变量。 数组大小最好用宏来定义,以适应未来可能的变化。 C语言的数组在内存中是按行存放的。 二维数组的数组元素 的存放顺序是也是按行存放。 数组占用的内存空间如何计算? 数组定义后的初值仍是随机数,一般需我们来初始化。 inta[5]={12,34,56,78,9}; inta[5]={0}; inta[5]={1,2};是怎样赋值的? inta[]={11,22,33,44,55}; inta[][4]={0,0}; inta[3][4];//第5个元素是谁? 行下标范围? 列下 标范围? inta[3][4]={{1,2},{0},{4,5,8.10}}//a[2][3] 值? 2.向函数传递一维数组。 用数组名作参数,就是将数组的首地址传递给函数。 实参数组与形参数组占用同一段内存。 若在被调函数中改变形参数组元素的值,则实参数组元素的值也会随之发生改变,这是由于形参和实参两数组在内存中因指向统一地址而共享这一段内存造成的。 对形参数组进行说明时,在方括号内可以给出数组的长度说明,即说明为固定长度数组,也可以不给出数组的长度说明,即说明为可变长度数组,一般此时用另一个整型参数来给定数组长度。 3.字符串 一串以‘\0'结尾的字符在C语言中被看作字符串。 用双引号括起的一串字符是字符串常量,C语言自动为其添 加‘\0'终结符。 C语言并没有为字符串提供任何专门的表示法,完全使用字 o 号。 符数组(一维数组)和字符指针来处理。 要区分字符和字符串的概念。 不要用错了单引号和双引 4.字符数组每个元素都是字符类型的数组。 初始化: 可以采用逐个字符进行初始化(若没有'\0',仅仅是字符数组,不能把它当作字符串来处理);也可以采用字符串常量赋值。 一个字符型的一维数组并不一定是一个字符串,只有当字符型一维数组中的最后一个元为'\0',它才构成字符串。 用字符型数据对数组进行初始化eharstr[6]={'C','h','i','n','a','\0'};用字符串常量直接对数组初始化eharstr[6]={"China"};eharstr[6]="China"; Charstr[]=“ehina”; eharstr[5]=“China”; Sunday”,”Monday”,”tuesday Friday”,”Saturday”}; Sunday”,”Monday”,”tuesday” eharweekday[7][10]={”,”Wednesdat””Thursday”,”eharweekday[][10]={,”Wednesdat”, ”Thursday”,”Friday”,”Saturday”};字符数组的输入和输出: 按e格式一个字符一个字符地单独输入/输出: %e(需要用到循环结构)按s格式符将字符串作为一个整体输入/输出: %seharstr[10];seanf(“%s”,str); printf(“%s”,str); 字符数组名本身代表该数组存放的字符串的首地址,故用 加取地址运算符,其后也不需要用方括号指明下标。 输入 seanf的%s格式输入字符串时,字符数组名的前面不能再 字符串时应确保输入的字符串长度不超过数组所能容纳的 空间大小。 空格、回车或跳格符(Tab)作为按%s格式输入字符串的分隔符,因而不能被读入,输入遇到这些字符时,系统认为字符串输入结束。 用字符串处理函数gets()或puts()输入/输出一个字符串。 字符串处理函数。 china” 字符串复制strcpy(字符数组1,字符串2); str1=str2;// printf(求字符串长度strlen字符串连接字符长比较例如: 判断字符串 strcatstrcmp 编译错误, “%s\n”,str1); (字符串); (字符数组1,字符串2); 字符串1,字符串2); S1是否大于字符串S2: 指针 例如: charstr1[3],str2[]= 1.指针: 专门用来存放其他变量地址的一种特殊变量。 2.什么是内存地址? 什么是变量地址? 什么是变量内容? 3.什么是直接寻址? 什么是间接寻址? 4.指针的定义、初始化。 专门存放地址数据的变量 是变量,int*是类型。 声明为指针类型的变量,定义指针变量例如: int*pp指针的指向 5. 表示指针&表示取地址 &和*的意义例如: main(){intx=10;int*px=&x;//* 6. 7. 8. printf(“%d\n”,*px);//*表示取内容 } 指针运算。 一般只进行指针和整数的加减运算,同类型指针之间的减 法运算 关系运算 赋值运算 指针变量作为函数的参数 属于赋地址调用,将实参指针(地址)传给形参,形参也是一指针。 在函数调用时,实参指针将其地址值传给形参指针。 字符指针 指向字符类型的指针char*p; 字符指针是变量,而数组名是地址常量。 例如: chars[]=“ABCD”,*p; for(p=s;p printf(“%s”,p); 9.一维数组的地址和指针的关系。 数组名就是一个指针只是不能修改这个指针的指向,组。 指针也可当作数组名使用int*p,a[10];p=a; doublex[10],*p=&x[3]a[4] 指针也可当作数组名使用 //ABCDBCDCDD 可以定义函数的参数为数 ,则p[3]表示的数组元素是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 期末 复习