




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0098高级程序设计(c语言)2013年6月期末考试指导一、考试说明(一)说明:考试为闭卷,试卷满分为100分,考试时间90分钟。(二)题型及各题型所占分数和相应的答题技巧1选择题答题技巧:选择与题干相匹配的答案,注意错误答案干扰。2读程序写结果答题技巧:要注意书写格式,包括空格、回车等。3改错题答题技巧:理解程序要点,找出错误之处进行改正。本课程内容相对较为琐碎,需要理解掌握的东西比较多,希望学员们能够在理解算理的基础上完成复习工作。说明:本考试指导只适用于201303学期期末考试使用,包括正考和重修内容。指导中的章节知识点涵盖考试所有内容,给出的习题为考试类型题,习题答案要点只作为参考,详
2、见课程讲义或笔记。如果在复习中有疑难问题请到课程答疑区提问。最后祝大家考试顺利!二、重点内容第一章 c语言程序设计基础1c程序的基本结构例如:/* this is the first program */(注释信息)main()(主函数)printf(”welcome to c! n”);(函数调用,printf是函数名)(1)程序的第一行是注释信息(2)main开始到最后的称为函数2c程序的执行过程从本程序的main开始,到main函数结束第二章 基本数据类型、运算符和表达式1c语言规定,符号常量和变量必须“先定义,后使用”。2c语言的基本数据类型及各自的定义方式(1)整型数据c语言提供了3
3、种表示整数常量的方法:十进制整数、八进制整数、十六进制整数。整型变量的定义格式:“数据类型名标识符 变量名”即“int 变量名;”,整型类型名int与变量名之间要用空格分开,最后还要以分号结尾。(2)字符型数据c语言中,用单引号括起来的是字符常量,用双引号括起来的被称为字符串常量。字符串实际上是连续存放的一组字符,但最后一个字符的值是0。(3)实型数据实型常量有两种表示方法:十进制小数形式和指数形式。实型变量的分类 单精度实型(float) 双精度实型(double) 长双精度实型(long double)(4)空类型:void3printf函数输出各种类型数据的方法(1)格式:printf(
4、参数列表)(2)printf函数可以带多个参数,例如:printf(“variable a=%d”,a)(3)函数printf在显示不同类型数据时使用不同的格式控制符int %d;unsigned int %u;float %f;char %c;字符串 %s4运算符和表达式的含义变量用来存放数据,运算符则用来处理数据。用运算符将变量和常量连接起来的符合c语法规则的式子被称为表达式。5.运算符的种类(按所带操作数的数量划分)单目运算符、双目运算符、三目运算符6c语言的各种运算符和表达式(1)赋值运算符和赋值表达式:“=”/“=”;c语言中,“=”被称为赋值运算符,它的作用是设置变量的值。c语言允
5、许在一个表达式中对多个变量连续赋值,例如:a=b=c=22。连续赋值的表达式的运算顺序是从右向左的(又被称为右结合性)。说明:与数学中的=严格区分开来,在c语言中,a=b只是代表要将b的值赋给a,并不说明a的值与b的值相等。(2)强制类型转换符当等号左右两边的数据类型不一致时,c语言将首先将=右边的表达式的值转化为=左边的数据类型,然后再赋值给=左边的变量。例如:int a;a=3.2;这时赋给a的值是3。(3)算术运算符和算术表达式:+、-、*、/和%c语言提供的算术运算符包括:加(+)、减(-)、乘(*)、除(/)和取余(%)。这些都是双目运算符。利用算术运算符连接起来的式子称为算术表达式
6、。说明: +、*、/运算符既可用语整型数据的算术运算,又可用于实型数据的算术运算。而%只能用于整数。 先乘除、后加减。 同级运算符的计算顺序是从左向右。 优先级:强制转换运算符 算术运算符赋值运算符。例如:int a;a=(int)2.5*2+3;最后a的值是7。(4)自增自减运算符和符号运算符:+、-和-既是一个算术运算符,又是一个负号运算符,它是一个单目运算符;例如,a=34,则-a是-34。负号运算符优先级与强制类型转换运算符一样。+和-+的作用是使变量自己增1,-的作用是使变量自己减1。与负号运算符优先级相同。+和-位于变量左边和右边的结果是不同的。(在变量左边,先增减后计算;在变量右
7、边,先计算,后增减)(5)位运算符:按位与(&)、按位或(|)、按位异或()、按位取反()、左移()上述除了按位取反()外,都是双目运算符。位运算符只能作用于int和char型数据。(6)逗号运算符和逗号表达式用逗号连接起来的表达式称为逗号表达式。一般形式:表达式1,表达式2,表达式k,例如:a+5,b=6,b+逗号表达式的计算规则是:从左向右依次计算逗号分割的各个表达式的值,最后一个的值就是整个逗号表达式的值。(7)sizeof运算符:计算字符个数,因此牢记各类型数据的长度作用:能获取变量和数据类型所占内存大小的运算符。第三章 基本输入输出和顺序程序设计1数据输出函数printf函数(1)各
8、种格式转换符:%d,%x,%o,%u,%c,%s,%f,%e,%g(2)调用printf函数的基本格式是printf(“格式控制字符串”,表达式1,表达式2,表达式n);(3)printf函数的功能就是按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在屏幕上。(4)格式控制字符串中包含2类字符:常规字符和格式控制符。在输出是,printf函数规定,常规字符要原样输出,而格式控制符的位置上输出相对应的表达式的值。字符和字符串的输出,除了可以利用printf函数以外,还可以利用putchar和puts函数。putchar函数只带一个参数,这个参数就是要输出的字符。puts函数也
9、只带一个参数,这个参数就是要输出的字符串,puts函数输出这个字符串后自动换行回车。但利用putchar函数却无法控制字符输出的格式,利用puts函数也无法控制字符串的输出格式。当程序不需要控制字符和字符串的格式时,调用putchar和puts函数要比调用printf函数简便得多。格式化输出时,通过格式控制字符控制的格式要素主要有:数据类型及其长度,比如用%d输出int型数据,用%ld输出long型数据,用%f输出double型数据,用%lf输出long double型数据。输出数据所占的宽度(域宽),比如,%4d表示输出至少占4格。输出数据的精度,比如%4.2f表示输出2位小数,%.3s表示
10、要输出字符串的前3个字符,%6.4u表示至少要输出4位数。对齐特征,比如%-16d表示输出的数据左对齐。缺省情况下,输出将右对齐。数制形式,比如,%x要求以十六进制形式输出数据。数值符号,比如,%+d要求输出整数的正负号。2数据输入函数scanf函数调用scanf函数的基本格式是:scanf(“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址);3各种数据类型的输出:整型、实数、字符和字符串、格式化输出等。比如下边列出格式化输出的总结:(1)数据类型及其长度,比如用%d输出int型数据,用%ld输出long型数据,用%f输出double型数据,用%lf输出long double型数据
11、。(2)输出数据所占的宽度(域宽),比如,%4d表示输出至少占4格。(3)输出数据的精度,比如%4.2f表示输出2位小数,%.3s表示要输出字符串的前3个字符,%6.4u表示至少要输出4位数。(4)对齐特征,比如%-16d表示输出的数据左对齐。缺省情况下,输出将右对齐。(5)数制形式,比如,%x要求以十六进制形式输出数据。(6)数值符号,比如,%+d要求输出整数的正负号。本章所介绍的函数:函数功能函数功能printf格式化输出putchar字符输出scanf格式化输入getchar, getche, getch字符输入clrscr清屏gotoxy光标定位clreol清一行textcolor设置
12、文本颜色textattr设置文本显示属性textbackground设置文本背景色cprintf彩色格式化输出puts字符串输出_setcursortype设置光标属性bioskey获取各种按键信息第四章 程序控制1选择结构的程序设计(1)简单的if语句if(表达式)程序段ifelse语句:if(表达式p)程序段s1else程序段s2if后面的()是必不可少的。当简单if语句和if-else语句中的程序段只有一条语句时,外边的可以省略。if语句中的程序段可以包含任何类型的c语句。if语句中的表达式可是任何类型,不仅限于关系表达式和逻辑表达式。表达式非零时,表达式的值就是真,否则就是假。如果表达
13、式是一个判断两个数是否相等的表达式,要当心不要将=写成了赋值运算符=。(2)switch语句switch, case, default都是保留字,switch后面的()不能省略;switch后面的()后面的不能省略;case表达式后面的冒号不能省略;case后面必须是常量表达式,表达式不能包含变量;“case常量表达式”被称为case子句,“break”又称为break子句,“default”又称为default子句;case子句和default子句之间没有固定的顺序,它们之间顺序的变化不会影响switch语句的功能;程序段可以包含任何类型的c语句;break子句可以省略,但是否省略,要根据算
14、法的逻辑而定。省略了break子句的switch语句与不省略break子句功能是不同的。2循环结构的程序设计(1)while和do while语句while(表达式p)程序段s功能:首先判断表达式p的值是否非真。如果是真,则执行程序段s,然后再判断表达式p的值是否为真,如果为真,再执行程序段s。如此循环往复,知道p的值为假为止。do程序段swhile(表达式p);功能:首先执行程序段s ,然后再判断表达式p的值是否为真,如果为真,则循环执行程序段s ,直到p为假为止。while后面的()不能省略,()中间的表达式可以是任何类型的表达式。当while语句的程序段中只有1条语句时,程序段外边的可以
15、省略,但省略不是一个好习惯。如果表达式p的值一开始就是假,循环体将一次也不被执行。程序段可以包含任何类型的c语句。这个程序段又称循环体。通常情况下,程序中会利用一个变量来控制while语句的表达式p的值,这个变量被称为循环控制变量。要在while语句的某处(表达式p或循环体内)改变循环控制变量的值,否则极易构成死循环。如果在执行循环体过程中,遇到了break子句,则跳出while循环。如果在执行循环体过程中,遇到了continue语句,则循环体中continue语句后面的其他语句将被跳过,而直接进入下一轮循环。(2)for语句for(表达式1;表达式2;表达式3)程序段s功能:首先求表达式1的
16、值,然后判断表达式2是否为真。如果是真,则执行程序段s,然后求表达式3的值。接下来再判断表达式2是否为真,如果为真,继续执行循环体以及求表达式3的值,直到表达式2的值为假为止。表达式1、表达式2和表达式3可以是任何类型的表达式。表达式1、表达式2和表达式3之间必须用分号分隔,表达式可以为空,但分号不能省略。表达式1和表达式3通常是逗号表达式,表达式1只被执行一次,通常用于初始化循环控制变量。而表达式3通常用来改变循环控制变量的值。表达式2为空相当于表达式2的值是真。因此,下面的循环是死循环:当for语句的程序段中只有1条语句时,程序段外边的可以省略,但是省略不是一个好习惯。程序段可以包含任何类
17、型的c语句。程序员既可以在for语句前面单独初始化循环控制变量,也可以利用for语句的表达式1初始化循环控制变量。程序员既可以在循环体内改变循环控制变量的值,也可以利用表达式3改变循环控制变量的值。如果在执行循环体过程中,遇到了break子句,则跳出for循环。如果在执行循环体过程中,遇到了continue语句,则循环体中continue语句后面的其他语句将被跳过,而直接进入下一轮循环。三种循环语句的异同点比较:在使用while和do-while语句时,必须在while或do-while语句前初始化循环控制变量。但for语句却可以利用表达式1来初始化循环控制变量。在使用while和do-whi
18、le语句时,循环控制变量的变化必须放在循环体内。而for语句却可以利用表达式3来改变循环控制变量的值。do-while语句的循环体至少被执行一次,但while语句和for语句的循环体可能一次也不执行。while和do-while语句中不能省略循环控制条件(即表达式p),但for语句却可以省略循环条件(即表达式2)。break语句和continue语句在这3种循环语句中的作用是相同的。凡是用while语句能实现的循环,必然能用for语句实现,反过来也一样。3break和continue语句break语句和continue语句大大增强了c语言实现选择控制和循环控制的灵活性4关系运算符和关系表达式小
19、于,大于,=大于等于,=等于,!=不等于5逻辑运算符和逻辑表达式|逻辑或; &逻辑与 !逻辑非6条件运算符和条件表达式条件运算符:(?:)7运算符的优先级算术运算符移位运算符关系运算符位运算符逻辑运算符8.表达式语句任何一个表达式的后面加上分号就构成了表达式语句。例如:a+是表达式,a+;是表达式语句。 a=5是表达式,a=5;是表达式语句。9.函数调用语句函数调用加上分号就是函数调用语句。例如:printf(“hello”)是函数调用,printf(“hello”);是函数调用语句。10.复合语句可以用将一些语句括起来,就成了复合语句。复合语句又称分程序。11.空语句空语句就是一个分号。空语
20、句有时用在空循环(什么都不执行的循环)中。12.控制语句用来实现一定的控制功能的语句称为控制语句。c语言用控制语句来实现分支结构和循环结构。第五章 数组1一维数组的定义与引用(1)定义形式:数据类型符 数组变量名变量表达式;在定义时可以直接赋初值:未指定的值被赋值为0。(2)引用说明1)c语言规定,数组是一种数据单元的序列,不能直接存取整个数组,只能引用数组中的各个数据单元。引用数据单元的格式是:数据变量名 下标其中,下标可以使整性变量或整型表达式,c语言规定,下标的最小值是0,最大值是数组大小减1。2)给数组赋值:a0=2,表示将数组a的第一个单元赋值为2。3)注意数组的内存地址和数组单元的
21、存放4)不许多数组变量名赋值:a=3是错误的。2二维数组当构成一维数组的元素也是一维数组时,就构成了二维数组。二维数组是一维数组的数组。以此类推,三维数组是二维数组的数组,四维数组是三维数组的数组c语言中,二维数组的定义格式是在一维数组的定义格式基础上增加了一维:数据类型符 数组变量名整型常量表达式1整型常量表达式2;与一维数组相比,二维数组的定义,除了增加了一个整型常量表达式外,其他都一样。对二维数组中数据引用的单元格式是:数组变量名下标1下标2。与一维数组相比,数据单元的引用形式除了多一个下标外,其他都一样。3字符串与数组(1)字符串的输入:scanf函数和gets函数。(2)字符串的输出
22、:printf函数,cprintf函数或puts函数。(3)字符串的比较:strcmp函数。格式为:strcmp(字符串1,字符串2);(4)字符串的复制:strcpy函数格式为:strcpy(字符数组1,字符串2);(5)字符串的连接:strcat函数格式为:strcat(字符数组1,字符串2);strcat函数的功能是将字符串2连续接到字符数组1的字符串的后面。(6)求字符串的长度:strlen函数格式为:strlen(字符串);第六章 函数1函数的定义和调用(1)不带参数没有返回值的函数1)定义格式:void函数名(void)变量声明部分执行部分2)说明:函数名必须是合法标识符。执行部分
23、放置c语句。void是一种特殊的数据类型:空类型,表明这个函数没有返回值。3)声明格式和调用格式分别为:void函数名(void);函数名();调用任何函数必须先声明函数的原型例如:#includevoid showerr(void);/*声明showerr函数的原型*/函数在执行完函数体内最后一句语句后,会自动返回到调用它的地方。在某种条件下,也可以利用return 语句返回,其功能即是使函数终止执行并返回到调用它的地方。(2)不带参数有返回值的函数1)定义格式返回值类型 函数名(void)变量声明部分执行部分2)说明:函数名是合法标识符;返回值类型符必须是合法的数据类型标识符;当返回值类型
24、符被省略时,默认为int型。函数的返回值通常由return语句返回给调用者。3)原型声明格式和调用格式返回值类型符 函数名(void);函数名();或者变量=函数名();(3)带参数没有返回值的函数1)定义格式void函数名(形式参数列表)变量声明部分执行部分2)说明函数名合法标识符; 形参列表格式为: 数据类型1 形参名1,数据类型2 形参名2,数据类型n 形参名n若省略数据类型,则默认int型只有当函数被调用时,形参才有值不允许对形参赋初值,但可以在函数的执行部分对形参赋值3)声明和调用格式void函数名(形参列表);函数名(表达式列表);/*这些表达式称作函数的实际参数,即实参列表*/(
25、4)带参数有返回值的函数1)定义格式返回值类型符 函数名(形式参数列表)变量声明部分执行部分2)说明:形参列表中至少要有一个形参3)声明和调用格式返回值类型符 函数名(形参列表);函数名(实参列表);或变量名=函数名(实参列表);4)在定义和调用带参数的函数时一定要注意,形参只有在函数调用时才会有值,它的值来源于实参,是将实参赋值给形参的结果。实参是变量时,实参变量和形参是两个不同的实体。对应着不同的内存单元。在函数对形参赋值时,对实参变量毫无影响。2函数的嵌套调用和递归调用(1)所谓嵌套调用指的是调用a函数的过程中可以调用b函数,在调用b函数的过程中还可以调用c函数 .(2)当函数调用它自身
26、时,就形成了递归调用。c语言允许递归调用。递归调用有两种:一种是函数f直接调用自身,称为直接递归另一种是函数fa调用fb,而函数fb又调用fa,这样的递归叫做间接递归。3函数的作用域c语言规定,函数内部不允许定义函数,因此,没有“局部”的函数,函数都是“全局”的。同全局变量一样,在函数原型声明中增加extern修饰符,就可以扩大函数的作用域。其实这是多余的,因为所有的函数都是extern的,他们的作用域都是整个程序。程序员在定义函数时,可以将函数定义成静态的,静态的函数只能在定义它的文件中使用,不能将静态函数的作用域进行扩展。第七章 指针1指针的定义和使用(1)定义:数据类型符 * 变量名(*
27、 号表明后面的变量是指针变量)说明:1)可以在一条语句中同时定义普通变量和指针变量例如:int a,*p;2)也可以在一条语句中同时定义多个指针变量例如:int *p1,*p2;3)指针变量前面一定要有* 号!*是间接引用运算符,是单目运算符,优先级与+、的优先级相同,具有右结合性。因此,上面程序中,与a+等价的表达式是(*p)+,而不是*p+。*p+中的+是作用于p的,而不是作用于*p。(2)指针的运算指针参与乘法或除法没有任何意义,因为指针式地址,是一种无符号的整数。但指针可以参与加法运算2指针的指针:数据类型符 * 变量名3指针与一维数组、二维数组的关系: 定义指向二维数组的指针:数据类
28、型符 (*变量名)常量表达式例如:int (*p)3表示这个指针p是指向二维数组的,这个数组包含3列。要从定义格式上区分指针数组和指向二维数组的指针。4.指针与字符串我们可以用字符串为char型的指针变量赋初值。但是将字符串常量作为初值赋值给字符数组与将字符串常量作为初值赋值给指针变量的含义是不同的。由于字符型指针可以指向字符串,因此字符指针数组也可以看作是字符串数组。但指向字符串的指针数组与存放字符串的二维字符数组有本质的区别。5指针与数组作为函数的参数指针的本质是地址,指针可以做参数,而数组名也就可以做参数。一维数组名作参数时,数组名后面要跟着,中间可以有整型常量,也可以没有。6. 函数指
29、针的定义与引用当一个指针指向了函数的第一条指令时,这个指针被称为函数指针。函数指针变量的定义格式是:数据类型符 (*变量名)(参数列表);其中: 数据类型符实际上是函数指针所指向的函数的返回值类型。 参数列表实际上是函数指针所指向函数的参数列表,参数列表可以为空。 *号和变量名一定要用()括起来。函数指针的定义极易与函数原型声明相混淆,比较下表说明。int *pf (int x);int(*pf)(int x);上面一行是函数原型的声明,pf是函数名,返回值是int型指针上面一行是函数指针变量的定义,pf是变量名,pf所指向的函数的返回值是int 型值第八章 预处理命令宏定义分为两种:不带参数
30、的宏定义和带参数的宏定义。由于预编译器处理宏时,仅仅是一个文本替换操作,并不对宏的内容文本进行任何处理,因此,程序员在定义宏时,如果宏是一个表达式,那么一定要将这个表达式用()括起来,否则可能会引起非预期的结果。带参数的宏定义的格式是:#define macro_name(参数列表)macro_content其中: macro_name是宏名,必须是合法标识符,一般用大写字母命名。 参数列表由一个或多个参数构成,参数只有参数名,没有数据类型符,参数之间用逗号隔开,参数名必须是合法标识符。 macro_content是宏的内容文本,其中通常会引用宏的参数。预编译器是这样处理带参数的宏的,首先将宏
31、内容文本中的宏参数替换成实参文本,这样形成了宏的实际内容文本,再将这个宏的实际内容文本替换源程序中的宏标识符。第九章 复杂数据类型1. 结构体typedef语句的格式是: typedef 类型名 类型名的别名;其中: 类型名必须是已经定义的数据类型名或c语言提供的基本类型名。 类型名的别名必须是合法标识符,通常用大写字母命名。 typedef语句要以分号结尾。 可以用类型名的别名代替类型名定义变量。如果要为数组起别名,必须在typedef语句中将数组的大小写在别名的后面。结构体是一种构造类型,它由多个其他类型的成员组合而成。因此这种类型的变量所占内存的大小是它的成员所占内存大小的和。2.共用体
32、多个成员共用一个内存地址的数据结构称为共用体。共用体的各成员相互覆盖,不能同时引用。共用体类型的定义格式与结构体类型的定义格式基本相同,仅是关键字不同。结构体用struct,共用体用union。定义共用体变量时可以对变量赋初值。但只能对变量的第一个成员赋初值,不能对所有的变量赋初值。对共用体成员的引用格式与对结构体成员的引用格式相同,如果通过共用体变量引用成员,要使用“.”,如果通过共用体指针来引用成员,要使用“-”。三、重点习题(一)选择题1、下面的程序将输出:main()float f; int x=1,y=2.5; f=1.0*x/y; printf(f=%1.1f,f); a.f=0.
33、4b.f=0.5 c.f=0.0 d.f=02、以下所列的c语言常量中,错误的是: a 0xff b. e5 c. 2l d. 723、下面的程序将输出:main()char ch; ch=0x31; ch+=1; switch(ch) case 1: printf(this is one. ); case 2: printf(this is two. ); default: printf(no way! ); a.this is one. b.this is two.c.no way! d.this is two.no way!4、设x为int型变量,则执行以下语句后,x的值为: x=10;
34、 x+=x-=x-x; a10 b20 c40 d30 5、已知有下面两个变量,将数组a的第2个单元赋值为1的c语句是:int a10;int *p;p=a;a.a2=1;b.p1=1; c.*(p+)=1; d.*(+a)=1;6、若已知float a,b,c;,要通过语句scanf(a=%f,b=%f,c=%f ,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,正确的输入形式是: aa=10b=22c=33 ba=10,b=22,c=33 c 10.0,22.0,33.0 d10 2233 7、下列循环结构中,不是无限循环的是: a.for(i=1, s=0; ; i
35、+) s=s+i ;b. i=10; while(1) i=i%10+1; if(i10) break; c. int i=0; do +i ; while(i=0);d. i =100; while(+i%2) i+;8、已知int x=3,y=20,z=30;则表达式(z=y=x)的值是: a1 b语法错 c0 d假9、下列程序段所表示的逻辑关系是:if(ab) if(c) x=1; else x=2; else x=2;a. x = b. x = c. x = d. x = 10、设x和y均为int型变量,则执行下的循环后,y值为: for(y=1,x=1;y=50;y+) if(x=1
36、0)break; if (x%2=1) x+=5; continue; x-=3; a2 b4 c6 d811、设x为int型变量,则执行以下语句后,x的值为 x=10; x+=x-=x-x;a10 b20 c40 d3012、有以下程序 main() char a=programming, b=language; char *p1,*p2; int i; p1=a; p2=b; for(i=0;i7;i+) if(*(p1+i)!=*(p2+i) printf(%c,*(p1+i); 输出结果是: aprogr blanug cga dprorm13、下面能正确进行字符串赋值操作的语句是:a
37、char s5=abcde;bchar s=a,b,c,d,e;cchar *s;s=abcdef; dchar *s;scanf(%s,s);14、若有说明:int a10;则对a数组元素的正确引用是:aa10 ba3.5 ca(5) da10-1015、设有以下说明和定义:typedef union long i; int k4; char c; date;struct date int cat; date cow; double dog; too;date max;则下列语句的执行结果是printf (%d,sizeof (struct date ) +sizeof(max);a26 b
38、36 c18 d816、设有int a =10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是:a.10,11,12 b.11,12,12 c.10,12,12 d.11,11,1217、若二维数组a 有m列,则在aij之前的元素个数为_aj*m+i bi*m+j c i*m+j-1 di*m+j+118、有如下定义:int arr=6,7,8,9,10;int * ptr;则下列程序段的输出结果为ptr=arr;* (ptr+2)+=2;printf (%d,%dn,*ptr,*(ptr+2);a8,10 b. 6,8 c. 7,9 d. 6,1019、以
39、下程序运行后,如果从键盘上输入abcde,则输出结果为a4 b7 c6 d5#include#includefunc(char str ) int num =0;while(*(str+num)!=0) num+;return(num);main( )char str10,*p=str; gets(p); printf(%dn,func(p); 20、有四种对指针变量的操作语句,以下判断正确的是:(1) int *p,*q; p=q;int a,*p,*q; p=q=&a;(2) int a,*p,*q; p=&a; p=*q;int a=20,*p; *p=a;(3) int a=b=0,*
40、p; p=&a;b=*p;int a=20, *q=&a; *p=*q;(4) int a=20,*p,*q=&a; p=q;int p,*q; q=&p;a. 正确1 不正确2,3,4 b. 正确1,4, 不正确2,3,c. 正确3 不正确1,2,4 d. 都不正确(二)读程序写结果程序1 #include int f(int n) 运行结果:static int s=1; while(n) s*=n-; return s; main()int i,j; i=f(3); j=f(5); printf(nthe output is:n); printf(i=%d,nj=%o n,i,j);程序
41、2 main() 运行结果: int a5=1,2,3; int k,j; for(k=1;k=0;j-) printf(“%d,”,aj); printf(“b n”); 程序3 #include typedef struct stu 运行结果: char name10; int age; stu;char *fun(stu *p,int m) int k,i,num=0; stu *q; k=200; for(i=0;iageage; num+=k; q=p+i; printf(“%dn”,num); q-name2=k; return q-name;main() struct stu s
42、tudents3=zhang,20,wang,19,zhao,18; printf(%sn,fun(students,2); (三)改错题1.下面程序的功能是将一个数字字符串转换为整数,至少包含有10处错误。请纠正错误的地方,使之成为正确运行的程序。 long strtonum(char *str) int k,result=0; k=0; while(strk!=0) result=result*10+strk; void main()char *str; long l; for(i=0,i6,i+) *(str+i)=1+i; l=strtonum(str); printf(%d,l);
43、2.下面程序的功能是输入两个整数,并输出它们的商,至少包含有4处错误。请纠正错误的地方,使之成为正确运行的程序。#include “stdio.h”void main()int a,b; scanf(“%d%d”,a,b); f=a/b; printf(“a/b=%d”,f);3.下面的程序根据用户输入的学生的数量动态分配一块内存,用来存放学生的学习成绩。最后程序将学生的成绩显示出来。其中含有至少8处错误,请修改程序使之能正确运行。#include #include void getscore(int *pscore,int num)pscore=(int *)malloc(num*sizeo
44、f(int); int k; for(k=0;knum;k+) scanf(“%d”,&pscorek); void main() int *p; int *k; scanf(“%d”,k); getscore(p,k); while(mk) printf(“%dn”,p+m); 四、重点习题答案(答案仅供参考)(一)选择题1. b2. b3. d4. b5. b6. b7. c8. c9. a10. c11. b12. d13. c14. d15. a16. c17. b18. d19. d20. b(二)读程序写结果程序1:the output is i=6,j=1320程序2:0,1,4
45、,3,1程序3:39wakg(三)改错题1. 正确源程序long strtonum(char *str) int k,result=0;while(strk!=0) result=result*10+strk-0; k+; return result; void main() char str8; int i; long l; for(i=0;i6;i+) *(str+i)=1+i; str6=0;l=strtonum(str); printf(%ld,l); 2.正确源程序#include stdio.hvoid main()int a,b;float f; scanf(%d%d,&a,&b
46、); f=(float)a/b; printf(a/b=%f,f);3. 正确源程序#include #include void getscore(int *pscore,int num)*pscore=(int *)malloc(num*sizeof(int); int k; for(k=0;knum;k+) scanf(“%d”,&(*pscore)k); void main() int *p; int k; int m=0; scanf(“%d”,&k); getscore(&p,k); while(mk) printf(“%dn”,p+m+); 以下是附加文档,不需要的朋友下载后删除,
47、谢谢顶岗实习总结专题13篇第一篇:顶岗实习总结为了进一步巩固理论知识,将理论与实践有机地结合起来,按照学校的计划要求,本人进行了为期个月的顶岗实习。这个月里的时间里,经过我个人的实践和努力学习,在同事们的指导和帮助下,对村的概况和村委会有了一定的了解,对村村委会的日常工作及内部制度有了初步的认识,同时,在与其他工作人员交谈过程中学到了许多难能可贵经验和知识。通过这次实践,使我对村委会实务有所了解,也为我今后的顺利工作打下了良好的基础。一、实习工作情况村是一个(此处可添加一些你实习的那个村和村委会的介绍)我到村村委会后,先了解了村的发展史以及村委会各个机构的设置情况,村委会的规模、人员数量等,做
48、一些力所能及的工作,帮忙清理卫生,做一些后勤工作;再了解村的文化历史,认识了一些同事,村委会给我安排了一个特定的指导人;然后在村委会学习了解其他人员工作情况,实习期间我努力将自己在学校所学的理论知识向实践方面转化,尽量做到理论与实践相结合。在实习期间我遵守了工作纪律,不迟到、不早退,认真完成领导交办的工作。我在村委会主要是负责管理日常信件的工作,这个工作看似轻松,却是责任重大,来不得办点马虎。一封信件没有及时收发,很有可能造成工作的失误、严重的甚至会造成巨大的经济损失。很感谢村委会对我这个实习生的信任,委派了如此重要的工作给我。在实习过程中,在信件收发管理上,我一直亲力亲为,片刻都不敢马虎。为
49、了做好信件的管理工作,我请教村委会的老同事、上网查阅相关资料,整理出了一套信函管理的具体方法。每次邮递员送来的信件,我都要亲自检查有无开封、损坏的函件,如果发现有损坏的函件,我马上联络接收人亲自来查收。需要到邮局领取的函件,我都亲自到邮局领取,并把信函分别发放到每个收件人的手里。对于收到的所有信函,我都分门别类的登记,标注好收发人的单位、姓名还有来函日期等等。我对工作的认真负责,受到了村委会领导和同事们的一致好评,在他们的鼓励下,我的工作干劲更足了。在工作之余,我还经常去村民家里,帮助他们做一些我力所能及的事情,也让我收获了很多知识,学会了许多技能。我学会了一些常见农作物的生长特征,也学会了怎
50、么给农作物施肥,洒药。这些,都将是我今后人生道路上的宝贵财富。短短个月的实习生活很快就过去了,这次实习是我从学校踏入社会的第一步。在这里,我感受到了村民们的纯朴,也体会到了农村生活的不易,更加深刻的认识到了作为当代大学生身上肩负的使命。在这次实习生活中,村委会的叔叔、阿姨们对我十分的照顾,在工作中,在生活上都给予了我很多的帮助,也对我寄予了很高的期望。通过这次实习,锻炼了我的做事能力,养成了对人对事的责任心,也坚定了我加强学习,提升自我价值的信心。二、发现的问题和建议在此次在村村委会顶岗实习的工作中,确实让我学到了不少书本以外的知识,同时我也发现了不少问题。第一,该村村委会的工作人员文化水平相对偏低,在村务工作的处理上,方式方法比较粗放。第二,村委会工作人员思想比较守旧,缺乏对新事物、新观念的学习和认识。第三,村委会的现代化办公水平还比较低,虽然配备了电脑等现代化办公工具,但是实际的利用程度很低。第四,村委会人员由于不是国家编制,工作人员的工作热情和工作态度不是很积极。三、实习的心得体会刚开始去村村委会实习的时候,我的心情充满了激动、兴奋、期盼、喜悦。我相信,只要我认真学习,好好把握,做好每一件事,实习肯定会有成绩。但后来很多东西看似简单,其实要做好它很不容易。通过实践我深有感触
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年影视工业化制作流程与质量控制产业链布局研究报告
- 2025年申请续签物业服务合同的报告(附加条款版)
- 2025年薄板带锯行业深度研究分析报告
- 2025年养老护理服务市场调查报告
- 2025年中国葫芦行业市场规模及未来投资方向研究报告
- 医疗机构域名交易合同范文
- 2025年回转窑式垃圾焚烧炉风险评估与管理报告
- DB32/T 4451.10-2023医用影像设备临床使用管理与质量控制规范第10部分:超声成像设备
- 服装行业买卖合同纠纷上诉状范文
- 2025-2030中国甘露醇注射液行业发展分析及投资风险预测研究报告
- 护理质控课件
- 空调维保服务方案(技术方案)
- TSM0501G 丰田试验测试标准
- 实验室安全准入考试题库答案
- 机械加工图纸标注法资料
- HDB3编解码电路设计
- 体系文件编号规则
- 公路安全监理细则
- 分布式系统复习题与答案
- 压力弹簧力度计算器及计算公式
- (3)-小儿推拿促生长的诊疗思路及手法演示
评论
0/150
提交评论