第一篇:西安交大C++程序设计第四章作业
西安交通大学实验报告
课程_计算机程序设计_实验名称_数组与结构体_
系 别____ ___________ 实 验 日 期 2014年 3 月 18 日
专业班级___ ___组别_____________ 实 验 报 告 日 期 2014年 3 月 22 日 姓 名__ __ __学号_ ___ 报 告 退 发(订正、重做)同 组 人_________________________________ 教 师 审 批 签 字
一、实验目的:
掌握数组与字符串的输入方法,包括一维数组、二位数组,不含空格的一个字符串以及含空格的多个字符串的输入以及处理。
二、实验内容:
1.第一题:编写一个程序将给出的矩阵转置。(1)源程序代码:
#include
} int jz[4][4]={{4,6,8,9},{2,7,4,5},{3,8,16,15},{1,5,7,11}};int zz[4][4];int i,j;for(i=0;i<4;i++){
} return 0;for(j=0;j<4;j++){
} cout< / 12 2.第二题:改写例4-5冒泡排序程序,由每轮挑选最小元素改为每轮挑选最大元素。(必做题)(1)源程序代码: #include const int COUNT=16;int list[COUNT]={503,87,512,61,908,170,897,275,653,426,154,509,612,677,765,703};for(int i=COUNT-1;i>=0;i--){ } cout<<“结果是:”< / 12 for(int j=0;j } if(list[j+1] } int tmp=list[j+1];list[j+1]=list[j];list[j]=tmp;} return 0;(2)实验结果: 3.第三题:编写程序:输入N(例如N为20)个整数,统计输出负数的个数、正整数的个数及0的个数;计算输出所有负数之和、所有正整数之和。(必做题)(1)源程序代码: #include const int m=20;cout<<“请输入个整数:n”;int num[m];for(int n=0;n if(num[i]>0){ z++; / 12 } } } Sz=Sz+num[i];else { } if(num[i]<0){ } else l++;f++;Sf=Sf+num[i];cout<<“正数的个数为:”< 4.第四题:加密。明文中小写字母用其后第3个小写字母代替,明文中大写字母用其后第3个大写字母代替。(必做题)(1)源程序代码: #include char in[200];cout<<“请输入您要加密的语句(不超过个单词):”;cin.get(in,200); / 12 } int i;for(i=0;in[i]!=0;i++){ } cout<<“加密结果是:”< } if(in[i]>='A'&&in[i]<='Z'){ } if(in[i]>'W')in[i]=in[i]-23;in[i]=in[i]+3;else if(in[i]>'w')in[i]=in[i]-23;in[i]=in[i]+3;else(2)实验结果: 5.第五题:编写凯撒解密程序,即将第5题凯撒加密的密文解密成明文。(必做题)(1)源程序代码: #include / 12 } char in[200];cout<<“请输入您要解密的语句:”;cin.get(in,200);int i;for(i=0;in[i]!=0;i++){ } cout<<“解密结果是:”< } if(in[i]>='A'&&in[i]<='Z'){ } if(in[i]<'D')in[i]=in[i]+23;in[i]=in[i]-3;else if(in[i]<'d')in[i]=in[i]+23;in[i]=in[i]-3;else(2)实验结果:为了与上题对照以验证是否正确,故意将上题的结果代入: / 12 6.第六题:(必做题)编写程序完成如下功能: A)定义二维数组8 ×8; B)自动生成数组中每个数据元素值为(i+1)×(j+1),i和j分别为行列坐标,输出该数组所有元素; C)计算主对角线元素之和,计算次对角线元素之和,并输出; D)将主对角线元素之和加到第一行中每个元素中,然后输出第一行所有元素值。(1)源程序代码: #include for(j=0;j { a[i][j]=(i+1)*(j+1); if(a[i][j]>9) cout< else cout< } cout< zhu=zhu+a[i][i]; fu=fu+a[i][M-i];} cout<<“主对角线元素之和为:”< } } cout<<“a[”< 7.第七题:(必做题)编写程序产生 ISBN 号的校验位。任何新出版的图书都配有 ISBN 号,2007 年以前是由 10 位数字加上3个连字符组成的 ISBN,其中最后一位为校验位,校验位产生的具体算法如下: 假设某国际标准书号号码前 9 位是: 7-309-04547 ;计算加权和 S : S = 7 × 10+ 3 × 9+ 0 × 8+ 9 × 7+ 0 × 6+ 4 × 5+ 5 × 4+ 4 × 3+ 7 × 2 = 226 ;计算 S ÷ 11 的余数 M : M = 226 mod 11 = 6 ;计算 11-M 的差 N : N = 11 − 6 = 5 如果 N = 10,校验码是字母“ X ”;如果 N = 11,校验码是数字“ 0 ”;如果 N 为其他数字,校验码是数字 N。所以,本书的校验码是 5,故该 / 12 国际标准书号为 ISBN 7-309-04547-5。 程序总体要求:先输入 11 位字符组成 ISBN 字符串,如: 7-309-04547,然后计算产生校验码(位)5,最后输出完整的 ISBN 字符串 7-309-04547-5 下面是三本书的 ISBN,以便测试程序: 7-302-09831-X 7-302-13294-1 7-5053-8405-8(1)源程序代码: //7-302-09831-X //7-302-13294-1 //7-5053-8405-8 #include if(num[i]>='0'&&num[i]<='9') { num_[i]=num[i]-'0'; cout< sum=sum+num_[i]*j; j--; } else cout< } int M=sum%11;if(11-M==10){ if(11-M==11) } return 0;cout<<“-0”< (2)实验结果: 八.第八题:两个有序数列(由小到大排列)存放在两个数组中,将两数列归并为一个有序数列,即归并后的结果数列放在第三个数组中。例如: int a[5] = {1,4,10,13,16};//已知数列 int b[8] = {3,6,9,12,15,18,21,24};//已知数列 int c[13] = {1,3,4,6,10,12,13,15,16,18,21,24};//归并后的结果数列(选做题) (1)源程序代码: / 12 #include cin>>a[1][i-M];for(i=0;i<2*M;i++){ if(i { a2[i]=a[0][i]; } if(i>=M) { a2[i]=a[1][i-M]; } } for(i=2*M-1;i>=0;i--){ for(int j=0;j { if(a2[j+1] { int tmp=a2[j+1]; a2[j+1]=a2[j]; a2[j]=tmp; } } } cout<<“合并后数列为:”< (2)实验结果: / 12 西安交通大学实验报告 一.实验目的 对后一阶段的的学习内容进行检测,查漏补缺,巩固知识点。 二.实验内容 1、编写算术表达式分析计算程序,输入字符串:“ 168+314=482,分析后,按表达式计算结果,并按如下格式输出: 168+314=482。运算符号仅限于 +、-、*、/、%,运算符两边只能是正整数。提示:将运算符两边的数字字符串分离,然后调用标准函数 int atoi(char *p),将数字符串转换为整数,atoi()函数在 stdlib.h 中。 1.程序源代码 #include a[i]=*p; p++;i++;} a[i]=' ';f=*p;while(*p!=0){ p++; c[j]=*p; j++;} c[j]=' ';} int result;if(f=='+')result=atoi(a)+atoi(c);else if(f=='-')result=atoi(a)-atoi(c);else if(f=='/') result=atoi(a)/atoi(c);else if(f=='*') result=atoi(a)*atoi(c);else if(f=='%')result=atoi(a)%atoi(c);cout<<”计算结果“<<”“;for(i=0;i cout< cout< 2、编写判断对称整数数列的函数,其原型为:int Issymmetry(int *pa, int len)。pa为指向某个整数数组的指针,len为整数数组中的元素个数,若pa指向的整数数组是对称数列,函数返回1,否则返回0。所谓对称数列指数列首尾元素对应相等,如数列{-168,32567,-123,0,-123,32567,-168}和{11,-22,345,345,-22,11}都是对称数列,而数列{-1,-2,-3}和{29,0,-123,-122,0,29 }不是对称数列 1.程序源代码 #include if(pa[i]!=pa[len-1-i]) break; k++;} if(k==n) return 1;else return 0;} int main(){ int n,i;cout<<”请输入元素个数:“;cin>>n;int *p=new int[n];for(i=0;i cin>>p[i];if(Issymmetry(p,n)) cout<<”该数组对称“< cout<<”该数组不对称“< 三 定义商品楼类building,一个商品楼由若干相同大小的套房flat,每套房由若干相同大小的房间room(房间都是由长宽高直角边构成),应有构造函数、计算商品楼总面积函数、计算一套房的总面积、计算一个房间面积函数和体积函数、运算符==重载函数。 1.程序源代码 #include length=a;width=b;height=c;} int getarea(){return area;} double Area(){ area=length*width; return area;} double V(){ v=length*width*height; return v;} void showme(){ cout<<”长宽高依次为“< if(length==c.length&&width==c.width&&height==c.height) return 1; else : return 0;} };class flat:public room { protected: int m;double farea;double fv;public: void flatregeister(double a,double b,double c,int M){ regeister(a,b,c);m=M;} double flatarea(){ Area();farea=area*m;return farea;} void print(){ showme();} void showarea(){ cout<<”面积:“< k=K;} double Barea(){ flatarea();barea=farea*k;return barea;} void Print(){ print();cout<<”面积:“< cout<<”a==a1“< 四 编写一个程序,可以读入一个文本文件(假设为data.txt),统计文件中大写字母个数,小写字母个数,数字字符个数,其它字符个数。并求出最长行(即该行中字符个数最多)的行号,输出所有结果。如果data.txt文件内容如下: 1.程序源代码 #include char ch; int n=1;ifstream fin(”1228.txt“);if(!fin){ cout<<”打开失败“< return 1;} int a[10];int b[10];int i=0;a[i]=0;int shuzi=0;int xiaoxie=0; int daxie=0; int others=0;while(fin){ fin.get(ch); if(ch!='n') { if(ch>='0'&&ch<='9') shuzi++; else if(ch>='a'&&ch<='z') xiaoxie++;else if(ch>='A'&&ch<='Z') daxie++; else others++; a[i]++; } if(ch=='n') { i++; n++; a[i]=0; } cout< min=a[i]; mi=i;} if(a[i]>max){ max=a[i]; ma=i;} } cout<<”数字个数“< 二、个人小结 本次程序设计主要学习内容不算复杂,其中的细节有参数的设置和应用以及传递方式,还有局部变量与全部变量的区别和联系。从学习内容上来说算不上难,只是具体在操作中总是出现这样那样的问题,即使是特别简单的问题也不那么容易解决,所以在以后学习过程中还要不断应用,已达到温故知新的目的! 具体到题目中第三题因为条件不好控制,导致图形输出总是出现这样那样的问题,最后虽然问题得到了解决,但也使源程序变得十分冗长复杂,以后一定要相出一种简单的做法来使问题得到解决! 对第六题理解不够透彻致使输出无法显示,经过请教老师解决了问题,同时也从根本上扫清了思想误区,更加透彻的了解到了C++的魅力! 第一章面向对象编程原理 近五十年间,软件技术经历了多个阶段的发展演变 目前为止最流行的技术还是面向过程编程(POP) 面向过程编程采用了自顶向下的设计方案,问题被看做多个执行任务的序列。为完成这些任务,须实现一些函数。 面向过程有两大不足,即:(1)数据可在程序内自由迁移,程序内任何函数都会引起数据的更改,增加了数据的脆弱性。(2)它并不能很好地建模现实世界。 为了克服面向过程编程中的不足,人们发明了面向对象编程(OOP)。它采用自底向上的编程方案,在程序开发中,把数据视为重要元素,不允许数据在系统内自由迁移。它还将数据和函数紧密绑定于成为类的数据结构中,函数可操作类中的数据。此特性称为数据封装。 在面向对象编程中,问题被视为一系列称为对象的实体的集合。对象是类的实例; 将数据与程序的直接访问隔绝,这称为数据隐藏。 数据抽象指的是,将各种必要特性合并,而不引入背景细节。 继承是这样的一个过程,即某类的对象得到另一类对象的属性。 多态指的是,一个名称,多种形态。在程序中,我们可以借此定义多个同名函数。此特性亦可重载运算符,这样一来,同一个运算符在不同的实例下,会有不同的行为。 动态绑定指的是,给定过程的代码,直到运行期被调用时才确定。 消息传递涉及对象名,函数(消息)名以及发送的信息。 与传统的编程技术相比,面向对象技术具有诸多优势——最显著的当属重用技术。 在实时系统等几乎所有的计算机领域,面向对象编程的应用程序都已受到重视。 不少语言都支持面向对象编程,流行的语言包括C++、Smalltalk和Java。 第二章C++入门 C++是C语言的超级 C++在C语言的基础上,添加了一些面向对象的特性,诸如对象、继承、函数重载和运算符重载。这些特性加强了程序的清晰性,可扩展性,使程序容易维护。 C++可用于开发各种系统,诸如编辑器、编译器、数据库、通信系统以及其他更多复杂的实际系统。 C++支持交互式输入输出,并引入了新的注释符号//,可用于注释单句。它也支持C语言的注释风格。 和C程序一样,所有C++程序的执行入口都是main()函数,并以return()语句作为结束。头文件iostream应包含于所有使用输入输出操作的程序开头。 所有标准C++程序都要包含using namespace std指令 典型的C++程序包括四个基本部分:也就是头文件包含部分、类声明部分、成员函数部分和主程序部分 和C程序一样,C++程序可用于任何文本编辑器创建 大多数编译器提供了集成开发运行环境。流行的编译器系统有UNIX AT&T C++、Turbo C++和微软公司的Visual C++ 第三章符号、表达式和控制结构 C++有不同的符号,包括关键字、标识符、常量、字符串和操作符 标识符指的是变量名、函数名、数组名、类名等 C++中增加了void的一个用途,可用于声明通用指针 C++中枚举数据类型略有不同,枚举类型名称为新的类型名。这样我们就可以声明枚举类型的变量 在C++中,字符数组的大小应比字符串的实际长度大1 C++增加了指针常量和常量指针的概念,对于前者我们不能修改赋予它的地址值,对于后者,我们不能修改它指向的内容。 在C++的内存管理和多态实现中,指针被广泛地使用。 C++中提供了const修饰符,用于声明常量,常量也是变量,只是其值不可变更。const修饰符默认修饰整型。 C++的变量类型检查非常严格,它不允许不同类型变量之间的赋值。类型转换是打破此规的唯一办法。 C++允许我们在程序中随处声明变量,而且可以利用声明处的表达式,在运行期完成初始化。 引用变量给之前定义的变量提供了一个别名。它们都指向内存中的同一个数据对象。所以,改变其中一个的值,另一边量的值也会随之改变。 引用变量必须在声明时初始化,这建立了它和要引用的变量之间的对应关系。 作用于解析操作符(::)的主要用于类,以识别成员函数所属的类 除了malloc()、calloc()、free()函数外,C++提供了两个一元操作符,即new和delete,以更好和更方便地分配和释放内存 C++也提供了操纵器,来格式化输出数据。最常用的操纵器为endl和setw C++支持七种表达式类型。表达式中数据类型混用时,C++使用特定规则,自动地进行类型转换。 使用类型转换操作符,C++也可显示地进行变量和表达式的类型转换 和C语言一样,C++也支持三种基本的控制结构,也就是顺序结构,分支结构和循环结构,并使用各种控制语句实现它们,比如if、if…else、switch、do…while、while以及for。 第四章C++中的函数 在程序的不同处,调用函数可减少程序的大小。 在C++中,main()函数向操作系统返回一个整型值。因为函数的返回值类型默认是整型,所以main()函数中的关键字int是可选的。而如果没有返回语句,大部分C++编译器会提示一个警告。 函数原型向编译器提供了函数的细节,比如参数的数目和类型,以及返回值的类型。 C++的引用变量使我们可以传引用参数给函数。函数也可以返回引用变量。 当函数声明为内联时,编译器用相应的函数代码替换了函数调用。一般情况下,小函数才使用内联。 编译器可能会忽略函数的内联声明,如果函数声明太长或过于复杂,编译器将按常规函数编译它。 当函数声明时,C++允许我们把默认值赋给函数参数。这种情况下,我们可以无需指明所有参数,便可调用函数。默认参数总是由右到左添加。 C++中,函数的参数可声明为常量,表示函数不可更改此变量。 C++允许函数重载,也就是说,我们可以定义多个同名函数。通过检查参数数目和类型编译器会准确地匹配函数调用和函数代码。 C++支持两种新的函数类型,亦即友元函数和虚函数。 C++标准库支持很多数学库函数,使用它们可以完成许多数学计算。 第五章 类和对象 类是结构体数据类型的扩展,一个类有多个成员变量和成员函数。 默认情况下,类的成员是私有的,而结构体的成员是公用的。 只有成员函数可以访问私有数据成员和私有函数。但是类外可以访问公用成员。 在C++中,类变量称为对象。利用对象并使用点操作符,我们可以访问类的公用成员。 我们可以在类内或类外定义成员函数。成员函数和常规函数的区别在于,成员函数的头 部有一个隶属标识符,以表明所属类。 对象声明时,内存空间才会分配。每一对象的成员变量空间单独分配,而成员函数的空间则统一分配。 类的一个成员变量可声明为静态成员,一般用于维护整个类的通用值。 静态成员变量必须定义于类外。 静态成员函数可访问声明在同类的静态成员,调用静态成员函数时需要用到类名。 C++允许我们使用对象数组。 对象可用作函数自变量。 友元函数不在友元声明类的作用域类,它可以访问累的所有私有数据。 函数可以返回对象。 如果成员函数不改变类内的任何数据,我们可以将其声明为常量成员函数,只要在函数原型中加上关键词const(声明和定义都要加)。 我们也可以在函数内定义和使用类。这种类称为局部类。 第六章构造函数和析构函数 C++提供了一种称为构造函数的特殊成员函数,它能帮助对象在创建时完成初始化。这一过程被称为对象的自动初始化。 构造函数名和类名一致。 构造函数通常用来初始化变量,以及分配内存。 和常规函数一样,构造函数也可以被重载。 当对象同时被创建和初始化时,复制构造函数被调用。 我们可以声明一个常量对象,其数据值不能改变。 C++还提供另一种成员函数,称为析构函数。当对象不再需要时,会调用这种函数来销毁对象。 第七章运算符重载和类型转换 运算符重载是C++的重要特性之一。又被称为编译时多态性。 使用重载特性,我们可以对两个用户自定义数据类型,比如说对象,执行相加的操作,使用的语法就和基本数据类型一样。 我们可以重载几乎所有C++的运算符,下面几个是例外: 类成员访问符(.,.*)。 作用域解析符(::)。 大小运算符(sizeof)。 条件运算符(?:)。 运算符重载是通过一种称为运算符函数的特殊函数完成的,该函数定义了运算符的特定任务。 运算符重载时有一些限制。运算符函数必须是非静态的成员函数或者友元函数。重载的运算符必须有至少一个用户自定义类型的操作数。 编译器不支持用户自定义数据类型的自动类型转换,我们可以使用自定义的转换运算符函数,以实现自定义数据类型的自动类型转换。 转换运算符函数应符合下列条件: 必须是类成员。 必须不指定返回值。 必须没有参数。 第八章继承:类的扩展 从旧类派生一个新类的机制被称为继承。继承提供了可重用性的概念。通过继承,C++的类可以被重用。 派生类继承了基类的一部分或所有特性。 只有一个基类的派生类被称为单继承。 可从多个类继承,这被称为多继承。 可从另一派生类继承类,这被称为多级继承。 当某类的属性被多于一个类继承时,这被称为层次继承。 不管是在公用模式还是私有模式,类的私有成员都不可被继承。 以公用模式继承的保护成员仍为派生类的保护成员,而以私有模式继承的保护成员,则变成派生类的私有成员。 友元函数和友元类的成员函数可直接访问私有和保护数据。 派生类的成员函数只能直接访问保护和公用数据。不过他们可通过基类的成员函数访问私有数据。 多路继承可能引起祖父基类的继承成员的重复。通过将共同的基类设为虚基类,我们可以避免祖父基类成员的重复。 在多继承中,基类的创建次序与他们在派生类中的声明次序一致。 类可包含其他类的对象。这被称为包含关系或嵌套。 一、单选题(共 20 道试题,共 40 分。)1.电感元件L1与L2并联,其等效电感L=(D)A.L1+L2 B.L1-L2 C.L1L2 D.L1L2/(L1+L2) 满分:2 分 2.一根粗细均匀的电阻丝,阻值为25Ω,将其等分成五段,然后并联使用,则其等效电阻是(C)A.1/25Ω B.1/5Ω C.1Ω D.5Ω 满分:2 分 3.下列叙述正确的是(C) A.电容上的电压越大,则通过该电容的电流越大 B.电容上的电压越大,则通过该电容的电流越大 C.电容电压的绝对值在某时刻达到最大值时,此时电容储能也最大 D.若电容上某时刻电压为零,则该时刻电容上的电流一定为零 满分:2 分 4.若C = 1F ,某时刻电容两端电压u为2V,则此时流过电容的电流=(D)。A.2A B.0.5A C.-2A D.不能确定 满分:2 分 5.若RLC串联电路的谐振角频率为w0,则在角频率w>w0时电路呈现(B)A.纯电阻性 B.电感性 C.电容性 D.不能确定 满分:2 分 6.当电路中存在受控源时和在非线性电路中,叠加定理是否适用(A)。A.均适用 B.均不适用 C.前者不适用,后者适用 D.前者适用,后者不适用 满分:2 分 7.额定值为1W 10Ω的电阻器使用时通过电流的限额是(C)。A.0.1A B.0.2A C.0.316A D.0.5A 满分:2 分 8.R=10Ω,C=1uF与电感L串联,接到频率为1000Hz的正弦电压源上,为使电阻两端电压达到最高,电感L应取:(D)A.1H B.1/2лH C.1/2H D.1/4л2H 满分:2 分 9.只具有存储磁场能量特性的电路元件是指(B)A.电阻元件 B.电感元件 C.二极管元件 D.电源元件 满分:2 分 10.理想电流源的内阻为(B).A.0 B.∞ C.有限值 D.由外电路来确定 满分:2 分 11.当RLC串联电路发生谐振时,下列(A)是错误的。A.电流最小 B.电流最大 C.阻抗模值最小 D.电压电流同相 满分:2 分 12.集总参数电路的最大尺寸满足(A)A.略微大于电磁波波长 B.略微小于电磁波波长 C.远远大于电磁波波长 D.远远小于电磁波波长 满分:2 分 13.在三相四线制电路中,通常所说的220伏和380伏指的是电压的(C)值 A.平均 B.最大 C.有效 D.瞬时 满分:2 分 14.将标明220V、100W的灯泡接在电压低于220V的电源上,灯泡实际消耗的功率(C)A.仍为100W B.0W C.小于100W D.大于100W 满分:2 分 15.理想电感元件在某时刻其电压值为0,则该时刻电感上的储能(A)A.不一定为0 B.一定为0 C.一定不为0 D.无法确定 满分:2 分 16.一个实际电路的电路模型(B)A.是唯一的 B.在不同应用条件下可以有不同的形式 C.是具有某种确定电磁性质的真实元件 D.不具有精确的数学定义 满分:2 分 17.理想电压源、理想电流源在电路中的功率(A)A.与外电路无关 B.仅由外电路决定 C.由电源本身与外电路共同决定 D.仅由电源本身决定 满分:2 分 18.正电荷从元件上电压的“+” 极经元件运动到元件的“-”极,电场力做的是(A),这时,元件()能量。A.做正功 吸收 B.做正功 释放 C.做负功 吸收 D.做负功 释放 满分:2 分 19.下列各部分中,哪一个不是线性电路的组成部分(D)。A.时不变线性无源元件 B.线性受控源 C.独立电源 D.集总元件 满分:2 分 20.电路中理想电压源两端电压(A)A.与外电路无关 B.由外电路决定 C.为不一定为0的恒定值 D.恒为0 满分:2 分 二、判断题(共 30 道试题,共 60 分。) 1.当三相电源对称,负载对称时,中线电流为0,因而可以取消中线。B A.错误 B.正确 满分:2 分 2.三相负载三角形联接时,测出各线电流都相等,则各相负载必然对称B A.错误 B.正确 满分:2 分 3.电流相等的两个元件必属串联,电压相等的两个元件必属并联。A A.错误 B.正确 满分:2 分 4.仅改变三相对称电源的频率是不影响三相对称负载吸收的有功功率的。B A.错误 B.正确 满分:2 分 5.若电路有n个节点,按不同节点列写的n-1个KCL方程必然相互独立。B A.错误 B.正确 满分:2 分 6.若二端网络N与某电流源相联时端电压为6V,则在任何情况下二端网络N对外都可以用6V电压源代替。A A.错误 B.正确 满分:2 分 7.在对称三相电路中,任何时刻,三相负载吸收的总的瞬时功率和平均功率都是一个常数。B A.错误 B.正确 满分:2 分 8.同一个一阶电路的零状态响应、零输入响应和全响应具有相同的时间常数.B A.错误 B.正确 满分:2 分 9.正弦电流通过电感或电容元件时,若电流为零则电压绝对值最大,若电流最大则电压为零。B A.错误 B.正确 满分:2 分 10.叠加定理不仅适用于线性电路,也适用于非线性电路。如小信号法解非线性电路就是用叠加定理。A A.错误 B.正确 满分:2 分 11.电压源在电路中一定是发出功率的。A A.错误 B.正确 满分:2 分 12.一个二端元件的伏安关系完全是由它本身所确定的,与它所接的外电路毫无关系。B A.错误 B.正确 满分:2 分 13.戴维南定理只适用于线性电路。但是负载支路可以是非线性的。B A.错误 B.正确 满分:2 分 14.星形联接电压源供电给星形联接负载时,如中点偏移电压越大, 则负载各相电压越小。A A.错误 B.正确 满分:2 分 15.采用非关联参考方向时,电感电流比电压超前π/2rad, 电容电流比电压滞后 π/2rad。B A.错误 B.正确 满分:2 分 16.根据P=UI,对于额定值220V、40W的灯泡,由于其功率一定,电源电压越高则其电流必越小。A A.错误 B.正确 满分:2 分 17.正弦电流电路中,频率越高则电感越大,而电容则越小。A A.错误 B.正确 满分:2 分 18.理想变压器即不消耗能量,也不贮存能量.B A.错误 B.正确 满分:2 分 19.在电压近似不变的供电系统中,负载增加相当于负载电阻减少。B A.错误 B.正确 满分:2 分 20.空心变压器副绕组如接感性负载,则反映到原绕组的引入电抗一定是容性电抗。B A.错误 B.正确 满分:2 分 21.列写KVL方程时,每次一定要包含一条新支路才能保证方程的独立性。B A.错误 B.正确 满分:2 分 22.在R、C串联电路中,由于时间常数与电阻成正比,所以在电源电压及电容量固定时,电阻越大则充电时间越长,因而在充电过程中电阻上消耗的电能也越多。A A.错误 B.正确 满分:2 分 23.若某元件的伏安关系为u=2i+4,则该元件为线性元件。B A.错误 B.正确 满分:2 分 24.在计算电路的功率时,根据电压、电流的参考方向可选用相应的公式计算功率。若选用的公式不同,其结果有时为吸收功率,有时为产生功率。A A.错误 B.正确 满分:2 分 25.在RL串联电路与正弦电压接通时,•电流自由分量的初值总与稳态分量的初值等值反号。(初始状态为零)B A.错误 B.正确 满分:2 分 26.电感元件电压相位超前于电流π/2rad,所以电路中总是先有电压后有电流。A A.错误 B.正确 满分:2 分 27.阻值不同的几个电阻相串联,阻值大的电阻消耗功率小。A A.错误 B.正确 满分:2 分 28.若两个有源二端网络与某外电路相联时,其输出电压均为U,输出电流均为I,则两个有源二端网络具有相同的戴维南等效电路。A A.错误 B.正确 满分:2 分 29.理想电流源中的电流是由它本身确定的,与外电路无关。因此它的端电压则是一定的,也与外电路无关。A A.错误 B.正确 满分:2 分 30.两只额定电压为110V的电灯泡串联起来总可以接到220V的电压源上使用。A A.错误 B.正确 满分:2 分 目录 一、实习内容…………………………………………………………………………1 二、设计思路…………………………………………………………………………2 三、程序清单…………………………………………………………………………3 四、运行结果…………………………………………………………………………15 五、程序使用说明……………………………………………………………………20 六、总结及心得体会…………………………………………………………………21 课程设计的题目:《小型公司工资管理系统》设计 设计说明:公司主要有四类人员:经理、技术员、销售员、销售经理。程序要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。并且应用程序中要求给出菜单,用于选择各项功能。 一、程序要求实现的功能即菜单目录有: 1、数据输入:输入各种数据; 2、数据统计:统计各销售经理下属销售员的销售额及销售额之和;销售经理工资进行冒泡排序; 3、数据打印:打印各类员工的数据信息; 4、数据备份:把各类员工的数据信息写入文件中保存; 5、退出:退出本系统,即结束程序的运行。 二、工资的计算方法 A:经理:固定月薪为8000元;B:技术员:工作时间*小时工资(100元/小时);C:销售员:销售额* 4%提成;D:销售经理:底薪(5000)+所辖部门销售额总额* 0.5%。 三、类的层次结构大体如下 雇员类 ↑ 技术员类 经理类 销售员类 ↓ 销售经理类 二、设计思路 1.(1)首先我们要搞清楚各类之间的继承关系,设置基类employee,其派生类manager,technician,salesman。再以manager类为基类,再派生一个salesmanager类,将各类的数据成员设计成protected,方便派生类对基类的继承; (2)在public里编写数据输入的函数,在主函数中输出菜单并定义各类的对象,通过对象来调用数据输入函数; 2. (1)在基类employee中补充几个返回各类数据的函数以用于返回输入的各类值; (2)在主函数内用冒泡法对销售经理的工资进行排序,定义一个wage[]来将各销售经理下面的销售员的销售额进行储存,定义一个all用于计算销售经理的销售总额,以便于下面对其进行工资的计算 ; (3)第2,3,4步都用大量的for循环进行输出,以实现表格的形成还有表格中数据的输入;在主函数内定义各类的对象,然后都是直接通过类的对象调用类内的函数,运用for循环进行打印,统计; 3. 备份参照课本格式,选择路径及格式,运用for循环备份;就是那个fstream之类的东西;、退出系统用exit(5)函数实现; 4.主函数运用switch语句,将上述功能编为case 1~5,每个case后添加break;5.程序结束。 以上是我所认为的该程序的几个要点…………………………………..三、程序清单 #include //基类,雇佣者 { protected: string name;char sex;int age;public: virtual void display() { cout<<“其姓名:”; cin>>name;cout<<“性别(m/w):”;cin>>sex;cout<<“年龄:”; cin>>age;} string nam(){return name;} char se(){return sex;} int ag(){return age;} }; // class technician: public employee //技术员类 { public: int worktime;int number1;public: void display1() { } int time(){return worktime;} int numb1(){return number1;} cout<<“技术员的编号:”;cin>>number1;employee::display();cout<<“工作时间”;cin>>worktime;}; // class manager : public employee //经理类 {protected: int number2; public: void display2(){ } int numb2(){return number2;} cout<<“经理的编号:”;cin>>number2;employee::display();}; // class salesman : public employee //销售员类 { protected: int total;int boss;int number3;public: }; // class salesmanager : public manager //销售经理类 {protected: int number4;public: void display4(){ void display3(){ cout<<“销售员的编号:”;cin>>number3;employee::display(); cout<<“销售额:”; } int hismanager(){return boss;} int xiaoshoue(){return total;} int numb3(){return number3;} cin>>total;cout<<“所属销售经理的编号:”;cin>>boss; cout<<“销售经理的编号:”; cin>>number4; employee::display();} int numb4(){return number4;} }; // void form(){ cout<<“★★小型公司工资管理系统★★”< 请选择您所需的操作 │”< 数据输入:1,并按回车键 │”< 数据统计:2,并按回车键 │”< 数据打印:3,并按回车键 │”< 数据备份:4,并按回车键 │”< 退出系统:5,并按回车键 │”< int main(){ int i,j,k,g,m,all,t; char shuzi; int wage[N]; technician t1[N]; //提示表格 manager m1[N]; salesman s1[2*N],s2[2*N]; salesmanager sm1[N],f; for(t=1;;t++){ form();cin>>shuzi;switch(shuzi){ case '1':{ //功能1 for(i=0;i t1[i].display1();cout<<“.......................................”< for(i=0;i m1[i].display2();cout<<“.......................................”< for(i=0;i<2*N;i++) s1[i].display3();cout<<“.......................................”< for(i=0;i sm1[i].display4();cout<<“.......................................”< //功能2 for(i=0;i cout<<“│职工号 │姓名 │销售额 │”< for(m=0;m<2*N;m++){if(s1[m].hismanager()==sm1[i].numb4()){ wage[i]=wage[i]+0.005*(s1[m].xiaoshoue());all=all+s1[m].xiaoshoue(); cout<<“├─────┼────┼─────┤”< cout<<“├─────┼────┴─────┤”< cout<<“│销售额总计│”< for(j=0;j for(k=0;k if(wage[k] //冒泡 wage[k]=wage[k+1];wage[k+1]=t;f=sm1[k];sm1[k]=sm1[k+1];sm1[k+1]=f;} cout<<“销售经理按工资排序为:”< │姓名 │性别 │年龄 │工资 │”< │ ”< │”< break; //功能3 case '3': cout<<“请等待............”< cout<<“┌─────┬────┬────┬────┬────┐”< cout<<“│职工号 │姓名 │性别 │年龄 │工资 │”< for(i=0;i │ ”< │”< cout<<”.......................................................“< cout<<”┌─────┬────┬────┬────┬────┐“< cout<<”│职工号 │姓名 │性别 │年龄 │工资 │“< for(i=0;i │ “< │“< } cout<<”└─────┴────┴────┴────┴────┘“< //经理表 cout<<”.......................................................“< cout<<”┌─────┬────┬────┬────┬────┐“< cout<<”│职工号 │姓名 │性别 │年龄 │工资 │“< for(g=0;g cout<<”├─────┼────┼────┼────┼────┤“< cout<<” │ “< “< ││“< cout<<”└─────┴────┴────┴────┴────┘“< //销售经理表 cout<<”销售员“< cout<<”┌─────┬────┬────┬────┬────┬────────┐“< cout<<”│职工号 │姓名 │性别 │年龄 │工资 │所属部门经理编号│“< for(i=0;i<(2*N);i++){ cout<<”├─────┼────┼────┼────┼────┼────────┤“< │ “< │“< ────────┘“< //经理表 cout<<”...............................................................................“< break;case '4': cout<<”数据备份“< outfile.open(”E:sjq.txt“,ios::in|ios::out|ios::trunc); outfile<<”技术员“< outfile<<”┌─────┬────┬────┬────┬────┐“< outfile<<”│职工号 │姓名 │性别 │年龄 │工资 │“< for(i=0;i │ “< │“< outfile<<”.......................................................“< outfile<<”┌─────┬────┬────┬────┬────┐“< outfile<<”│职工号 │姓名 │性别 │年龄 │工资 │“< for(i=0;i │ │ “< “< ││“< } outfile<<”└─────┴────┴────┴────┴────┘“< //经理表 outfile<<”.......................................................“< outfile<<”┌─────┬────┬────┬────┬────┐“< outfile<<”│职工号 │姓名 │性别 │年龄 │工资 │“< for(g=0;g { outfile<<”├─────┼────┼────┼────┼────┤“< outfile<<” │ “< “< ││“< outfile<<”└─────┴────┴────┴────┴────┘“< //销售经理表 outfile<<”销售员“< outfile<<”┌─────┬────┬────┬────┬────┬────────┐“< outfile<<”│职工号 │姓名 │性别 │年龄 │工资 │所属部门经理编号│“< for(i=0;i<(2*N);i++){ outfile<<”├─────┼────┼────┼────┼────┼────────┤“< │ “< │“< ┴────────┘“<第二篇:西安交大C++随堂练习16
第三篇:C++程序设计总结
第四篇:西安交大电路在线作业
第五篇:C++程序设计实习报告