复习4-CPP程序设计-分析与改错
- 格式:ppt
- 大小:966.50 KB
- 文档页数:17
第一章【随堂练习1-2】1.下面哪些表记符属于合法的用户自定义表记符:Main 、void 、_num 、 my$、 a* 、N4、3m 、 a-2答:合法的用户自定义表记符是:Main 、 _num、 N42.结合【例】指出程序代码中所用到的表记符哪些是重点字,哪些是预定义表记符,哪些是用户自定义表记符。
答:重点字: void、 int预定义表记符:include、 main 、 printf 、 scanf用户自定义表记符:a、 b、 c3.解析【例】中函数的构造,包括函数首部(函数返回值种类、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部:void main( ) ,其中函数返回值种类为void、函数名为main 、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c; ,其他为可执行语句。
3.表记符是用来表记程序中的某个对象名字的字符序列。
C 语言把表记符分为三类,即重点字、预定义表记符、用户自定义表记符。
关于用户自定义表记符的命名 C 语言规定:(1)所有的用户表记符必定先定义后使用;(2)用户表记符由字母( A~Z,a~z)、数字( 0~9)、下划线“ _”组成,而且首字符不能够是数字;(3)区分大小写;(4)不能够用重点字作为用户自定义表记符,平时不使用预定义表记符作为用户自定义表记符。
4.理论上讲,程序开发过程分为四个步骤,分别为:( 1)编写源程序( 2)编译源程序,生成目标程序( 3)连接目标程序及其相关模块,生成可执行文件( 4)运行可执行文件一.单元练习一.选择题1.组成 C 语言程序的基本单位是()。
A .框架B .预办理C.函数 D .语句2.在程序开发过程中,把文本文件格式源程序转变为二进制格式的目标程序的过程称之为()。
A.编写B.编译C.连接D.运行3.关于主函数,以下说法不正确的选项是()。
A.一个完满的 C 语言应用程序有唯一的主函数B.主函数的名称只能是mainC.主函数能够被其他自定义函数调用D. C 语言程序的运行从主函数开始,以主函数为核心张开4.关于表记符,以下说法不正确的选项是()。
《面向对象程序设计》辅导四第六章 简单程序设计学习要点:一个真正的C++程序是由多个文件组成的。
在开发的过程中,会形成多个程序文件和多个头文件。
多文件结构可以提高程序的可读性、提高程序的开发效率。
学习要求:理解多文件结构,能在程序设计中合理利用多文件来进行模块划分。
能正确使用外部存储类型和静态存储类型。
理解编译预处理的概念,能在程序中合理使用#include 预处理指令,看懂#define 、#if 、#ifndef 、#else 、#undef 、#elif 等指令。
理解标识符的三种生命期:静态、局部和动态生命期,能指出给定程序中标识符的生命期。
能综合运用头文件、外部变量、静态变量来组织多文件结构的程序。
学习方法引导:从多文件结构入手,学习如何编制C++程序,理解C++程序的整体结构。
掌握几个重要概念。
结合实例来理解一个由多文件组成的程序的开发过程。
学习内容:我们知道,用VC 设计软件时首先要建立一个工程文件,在这个工程文件中指定了该工程用到的所有文件,这其中包含了所有C++程序文件。
C++程序是由许多函数组成的,函数是由语句组成的。
如下图所示。
在设计程序时,需要定义大量标识符,对标识符的操作是程序设计的关键。
标识符一经定义就有了其作用范围,它在某些范围内是可见的,并不是定义之后都能使用。
特别是在多文件结构中,标识符的作用范围除了块级、函数级、还包括文件级和程序级;全局变量不再只是文件级变量,而又分为外部变量和静态全局变量;函数则又分为外部函数和静态函数等。
因此在设计多文件结构的C++程序时,有着比单文件结构更复杂的特性。
一、多文件结构在设计大型系统时,一般都由多个程序设计人员合作完成,每个程序员完成一部分程序,并以文件的形式存储起来,这样一个工程就包含多个程序文件。
C++支持多文件结构,即允许一个工程文件中建立多个程序文件。
多文件结构与单文件有比较类库自定义包含文件 。
包含main 函数的主文件:main 函数是程序的入口,每个工程只有一个main 函数。
ffB v vbvv bgbb实验一C程序运行环境及简单程序的运行2.程序改错并调试改正后的程序⑴下列程序的功能为:计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp#include <stdio.h>void main{ int x=2;y=3;aA=x*yprint ("a=%d",a);printf(‘\n’);}⑵下列程序的功能为:输入圆的半径,计算圆面积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以文件名sy1_3.cpp存盘)。
#include stdio.h;int mian();float r; area;printf("input r:\n"); scanf("%f",r);area=3.14159r*r;printf("r=%f , area=%f\n"3.编写程序并上机调试⑴输入三个整数a、b、c,显示出其中的最大值。
4.分析与总结⑴总结C程序的结构和书写规则。
⑵阅读:附件1-C语言程序的跟踪调试。
特别提示:当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
12习题一一、选择题参考答案:1~5 C B A C D 6~10 C C A C B 11~14 A A C B二、综合题绘制NS 算法流程图。
(1)输入10个数,求其中的最大值。
(2)输入3个数,将它们升序排列输出。
(3)输入2个数,求它们的最大公约数。
(4)输入一元二次方程的系数a 、b 、c ,判断其根。
实验二顺序结构程序设计1.阅读程序,尝试写出程序的运行结果,然后输入并调试程序,对照其实际输出与分析的结果是否一致,若不一致,请找出原因。
⑴以下程序用于测试C中不同类型数据所占内存字节数,运行并体会sizeof运算符的使用方法。
C语言程序改错题汇总程序改错题汇总1、用“起泡法“对连续输入的十个字符排序后按从小到大的次序输出. 2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少12、编写函数fun计算下列分段函数的值x*xx x0.0 { 累计营业额;输入下一笔交易额;} 输出营业额;} 记一笔交易额为变量sale,营业额为sigma。
124、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少125、编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
例如输入35=或5-2=或3*4=或4/2=,求表达式结果。
126、输入字符序列,字符序列以特殊字符“”结束。
程序从前向后依次读入字符,并翻译出新的字符输出。
翻译的规则是如果当前读入的字符是数字符,如果该字符的面值为n,则它的后一个字符包括数字符需重复输出n1次如果当前读入的字符不是数字符,则输出该字符。
输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。
翻译直至当前读入的字符为字符‘’,结束翻译和输出。
127、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下每位数字都加上5,然后除以10的余数代替该位数字。
C++期末复习(程序分析题)一、程序改错题1、指出下面程序段中的错误,并说明出错原因。
class A{ int a,b;public :A(int aa,int bb) {a=aa;b=bb;}};void main(){ A x(2,3),y(4); }答:Ax(2,3),y(4); 语句出错,因为没有单参数的构造函数 ( 或者 y(4) 少写了一个参数 ) 。
2、指出并改正下面利用类模板的对象定义中的错误。
template <class T>class Tany{T x,y;public:Tany(T a,T b){x=a,y=b;}T sum( ){return x+y;}};void main(){ Tany (int) obj(10,100); }答:Tany(int) obj(10,100); 出错,应为 Tany<int> obj(10,100); 语句。
3、指出下面程序段中的错误,并说明出错原因。
class one{ private:int a;public:void func(two&);};class two{ private:int b;friend void one::func(two&);};void one::func(two& r){a=r.b;}答:void func(two&); 出错, two 尚未声明4、指出下面程序段中的错误,并说明出错原因。
# include <iostream.h>class A{ public:void fun( ){cout<< ″ a.fun ″ <<endl;}};class B{ public:void fun( ){cout<< ″ b.fun ″ <<endl;}void gun( ){cout<< ″ b.gun ″ <<endl;}};class C:public A,public B{ private:int b;public:void gun( ) {cout<< ″ c.gun ″ <<endl;}void hun( ) { fun( ); }};答:void hun(){fun();} 出错, C :: fun() 有二义性。
1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。
对于这种错误,用编译器很容易解决。
所以,改错题的第一步是先编译,解决这类语法错误。
下面总结了二级C 语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。
(2)关键字拼写错误,如本来小写变成大写。
(3)语句格式错误,例如for语句中多写或者少写分号。
(4)表达式声明错误,例如:少了()(5)函数类型说明错误。
与main()函数中不一致。
(6)函数形参类型声明错误。
例如:少*等。
(7)运算符书写错误,例如:/写成了\。
二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。
对于逻辑错误可以按这样的步骤进行查找。
(1)先读试题,看清题目的功能要求。
(2)通读程序,看懂程序中算法的实现方法。
(3)细看程序,发现常见错误点。
2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。
1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。
2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。
3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。