当前位置:文档之家› 武汉理工大学c++期末复习资料

武汉理工大学c++期末复习资料

武汉理工大学c++期末复习资料
武汉理工大学c++期末复习资料

C++期末

基本概念

面向对象编程的三大特征

1)封装2)继承3)多态

虚函数、重载函数特点,有哪些约束

虚函数是动态多态,重载函数是静态多态。

重载函数之间要求函数返回值、函数名一致,但是参数不一致。

虚函数要求函数返回值、函数名、参数都一致。

纯虚函数作用?派生关系?如何实现?

一、定义

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”

virtual void funtion()=0

二、引入原因

1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。

2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。

为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。这样就很好地解决了上述两个问题。

三、相似概念

1、多态性

指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。

a、编译时多态性:通过重载函数实现

b、运行时多态性:通过虚函数实现。

2、虚函数

虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态覆盖(Override)

3、抽象类

包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。

派生类访问基类成员有哪些访问控制?对象呢?

区分“派生类对象”和“派生类”对基类成员的访问权限。

“派生类对象”对基类成员的访问权限:

(1)对于公有继承,只有基类的公有成员可以被“派生类对象”访问,其他(保护和私有)成员不能被访问。

(2)对于私有继承和保护继承,基类中所有成员都不能被“派生类对象”访问。

“派生类”对基类中成员的访问权限:

(1)对于公有继承,基类中的公有成员和保护成员可以被“派生类”访问,而基类中的私有成员不能被访问。

(2)对私有继承和保护继承,也是基类中的公有成员和保护成员可以被“派生类”访问,而基类中的私有成员不能被访问。

多态性如何实现?

、多态性

指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。

a、编译时多态性:通过重载函数实现

b、运行时多态性:通过虚函数实现。

类和对象关系?

每一个实体都是对象。有一些对象是具有相同的结构和特性的。每个对象都属于一个特定的类型,这个特定的类型称为类(class )。

类代表了某一批对象的共性和特征。前面已说明:类是对象的模板,而对象是类的具体实例(instance)。

正如同结构体类型和结构体变量的关系一样,需要先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量。

在C++中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。

类是抽象的,不占用内存,而对象是具体的,占用存储空间。

深拷贝、浅拷贝区别?

1. 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。

2. 浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。比较典型的就有Reference(引用)对象,如Class(类)。

深拷贝和浅拷贝的区别是在对象状态中包含其它对象的引用的时候,当拷贝一个对象时,如果需要拷贝这个对象引用的对象,则是深拷贝,否则是浅拷贝。

抽象类作用?

将不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类(abstract class),由于它常用作基类,通常称为抽象基类。凡是包含纯虚函数的类都是抽象类。

如果在派生类中没有对所有的纯虚函数进行定义,则此派生类仍然是抽象类,不能用来定义对象。

可以定义指向抽象类数据的指针变量。当派生类成为具体类后,就可以用这个指针指向派生类对象,然后通过该指针调用虚函数。

带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。抽象类的主要作用是将有关的组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。抽象类刻画了一组子类的操作接口的通用语义,这些语义也传给子类。一般而言,抽象类只描述这组子类共同的操作接口,而完整的实现留给子类。抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体类了。

函数的三种参数传递机制

在C++中,参数传递的方式是“实虚结合”。

按值传递(pass by value)

地址传递(pass by pointer)

引用传递(pass by reference)

按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”。使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。

/*

pass By value

*/

#include

using namespace std;

void swap(int,int);

int main()

{

int a = 3, b = 4;

cout << "a = " << a << ", b = "

<< b << endl;

swap(a,b);

cout << "a = " << a << ", b = "

<< b << endl;

return 0;

}

void swap(int x, int y)

{

int t = x;

x = y;

y = t;

}

如果在函数定义时将形参说明成指针,对这样的函数进行调用时就需要指定地址值形式的实参。这时的参数传递方式就是地址传递方式。地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。

[cpp] view plaincopy

#include

using namespace std;

void swap(int*,int*);

int main()

{

int a = 3, b = 4;

cout << "a = " << a << ", b = "

<< b << endl;

swap(&a,&b);

cout << "a = " << a << ", b = "

<< b << endl;

system("pause");

return 0;

}

void swap(int *x,int *y)

{

int t = *x;

*x = *y;

*y = t;

}

按值传递方式容易理解,但形参值的改变不能对实参产生影响。

地址传递方式虽然可以使得形参的改变对相应的实参有效,但如果在函数中反复利用指针进行间接访问,会使程序容易产生错误且难以阅读。

如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。

[cpp] view plaincopy

#include

using namespace std;

void swap(int&,int&);

int main()

{

int a = 3, b = 4;

cout << "a = " << a << ", b = "

<< b << endl;

swap(a,b);

cout << "a = " << a << ", b = "

<< b << endl;

system("pause");

return 0;

}

void swap(int &x,int &y)

{

int t = x;

x = y;

y = t;

}

综合

构造函数、拷贝构造函数、析构函数,调用顺序

构造函数、拷贝构造函数和析构函数的调用顺序

#include

class point

{

private:

int x,y;

public:

point(int xx=0,int yy=0)

//1.构造函数不能有返回值

//2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都

//初始化为零或空

// 3.创建一个对象时,系统自动调用构造函数

{

x=xx;

y=yy;

cout<<"构造函数被调用"<

}

point(point &p);

~point(){cout<<"析构函数被调用"<

//析构函数没有参数,也没有返回值。不能重载,也就是说,一个类中只可能定义一个析构函数

//如果一个类中没有定义析构函数,系统也会自动生成一个默认的析构函数,为空函数,什么都不做

//调用条件:1.在函数体内定义的对象,当函数执行结束时,该对象所在类的析构函数会被自动调用;

// 2.用new运算符动态构建的对象,在使用delete运算符释放它时。

int get_x(){return x;}

int get_y(){return y;}

};

point::point(point &p)//拷贝构造函数实际上也是构造函数,具有一般构造函数的所有特性,其名字也

//与所属类名相同。拷贝构造函数中只有一个参数,这个参数是对某个同类对象的引用。//在三种情况下被调用:1.用类的一个对象去初始化该类的另一个对象时;

// 2.函数的形参是类的对象,调用函数进行形参和实参的结合时;这也是为什么

// 拷贝构造函数的参数需要加引用,避免反复循环调用构造函数。

// 3.函数的返回值是类的对象,函数执行完返回调用者。

{

x=p.x;

y=p.y;

cout<<"拷贝构造函数被调用"<

}

void f(point p)

{

cout<

}

point g()

{

point a(7,33);

return a;

}

void main()

{

point a(15,22);

point b(a);

cout<

f(b);

b=g();

cout<

}

程序运行结果:

构造函数被调用 //point a(15,22);

拷贝构造函数被调用//point b(a);拷贝构造函数的第一种调用情况

15 22

拷贝构造函数被调用//f(b);拷贝构造函数的第二种调用情况

15 22

析构函数被调用//f(b);析构函数的第一种调用情况

构造函数被调用//b=g();的函数体内point a(7,33);创建对象a

拷贝构造函数被调用//b=g();拷贝构造函数的第三种调用情况,拷贝a的值赋给b。

析构函数被调用//拷贝构造函数对应的析构函数

析构函数被调用//b=g();的函数体内对象a析构

7 33

析构函数被调用//主函数体b对象的析构

析构函数被调用//主函数体a对象的析构

由此看出:析构函数的顺序与构造函数的顺序刚好相反。

虚函数、纯虚函数,如何使用

1.虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。

2.虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。

3.虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。

4.虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口。

5.虚函数的定义形式:virtual {method body}

纯虚函数的定义形式:virtual { } = 0;

在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样。

6.如果一个类中含有纯虚函数,那么任何试图对该类进行实例化的语句都将导致错误的产生,因为抽象基类(ABC)是不能被直接调用的。必须被子类继承重载以后,根据要求调用其子类的方法。

以下为一个简单的虚函数和纯虚寒数的使用演示,目的是抛砖引玉!

#include <>

//father class

class Virtualbase

{

public:

virtual void Demon()= 0; //prue virtual function

virtual void Base() {cout<<"this is farther class"<

}

//sub class

class SubVirtual :public Virtualbase

{

public:

void Demon() { cout<<" this is SubVirtual!"<

void Base() { cout<<"this is subclass Base"<};

}

/* instance class and sample */

int main()

{

Virtualbase* inst = new SubVirtual(); //multstate pointer

inst->Demon();

inst->Base();

}

虚函数和纯虚函数区别

观点一:

类里声明为虚函数的话,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它的子类里面可以被重载,这样的话,这样编译器就可以使用后期绑定来达到多态了纯虚函数只是一个接口,是个函数的声明而已,它要留到子类里去实现。

class A{

protected:

void foo();//普通类函数

virtual void foo1();//虚函数

virtual void foo2() = 0;//纯虚函数

}

观点二:

虚函数在子类里面也可以不重载的;但纯虚必须在子类去实现,这就像Java的接口一样。通常我们把很多函数加上virtual,是一个好的习惯,虽然牺牲了一些性能,但是增加了面向对象的多态性,因为你很难预料到父类里面的这个函数不在子类里面不去修改它的实现

观点三:

虚函数的类用于“实作继承”,继承接口的同时也继承了父类的实现。当然我们也可以完成自己的实现。纯虚函数的类用于“介面继承”,主要用于通信协议方面。关注的是接口的统一性,实现由子类完成。一般来说,介面类中只有纯虚函数的。

观点四:

带纯虚函数的类叫虚基类,这种基类不能直接生成对象,(否则会出现错误!)而只有被继承,并重写其虚函数后,才能使用。这样的类也叫抽象类。虚函数是为了继承接口和默认行为纯虚函数只是继承接口,行为必须重新定义。

派生关系

1. 派生类对象作为基类对象处理

由于派生类具有所有基类的成员,所以把派生类的对赋给基类对象是合理的,不过要求这种继承方式必须是public方式。但是,反过来赋值会使基类中一具有派生类的成员(因为派生类的成员通常是比基类的成员多),所以这是不允许的

2. 基类指针指向派生类对象

因为派生类对象也是基类对象,所以指向派生类对象的指针可以转换为指向基类对象的指针,这种引用方式是安全的,但是用这种方式只能引用基类成员。如果试图通过基类指针引用那些只有在派生类中才有的成员,编译系统会报告错误。

3. 派生类指针强制指向基类对象

直接用派生类指针指向基类的对象,这种方式会导致语法错误。但可以将派生类强制转换为基类指针,然后就可以调用基类的成员了。这种强制转换使用的静态转型运算符,其使用格式如下:

派生类对象指针=static_static<派生类*>(&基类对象);

运算符优先顺序、组合

遍历了15个级别之后,让我们再来总结一下。其中我们可以看出这样两个规律:

规律一、按照操作数个数来区分,一元运算符高于二元运算符,二元运算符高于三元运算符;

规律二、按照运算符的作用来区分,级别最高的是那些不是严格意义上的运算符,次之是算术运算符,位移运算符,关系运算符,位运算符,逻辑运算符,赋值运算符。

此外还有两特别的地方需要注意:

一、同为关系运算符,但==和!=的级别低于其它四个;

二、第2组与第13组的操作符是右结合的,其它的都为左结合;

通过分类我们大大减少了需要记忆的内容,遇到使用操作符的时候,我们只需想想它们是什么类型的运算符就可以确定它们之间的相对优先级,从而避免一些不必要的错误。

编程

进制转换:2、8、16进制字符串与十进制整形数之间的转换

十进制转二进制:

[cpp] view plaincopyprint?

//十进制转二进制

#include

using namespace std;

void printbinary(const unsigned int val)

{

for(int i = 16; i >= 0; i--)

{

if(val & (1 << i))

cout << "1";

else

cout << "0";

}

}

int main()

{

printbinary(1024);

return 0;

}

十进制转八进制

[cpp] view plaincopyprint?

//十进制转八进制

#include

#include

using namespace std;

int main()

{

cout<<"input a number:"<

int d;

vector vec;

cin>>d;

while (d)

{

vec.push_back(d%8);

d=d/8;

}

cout<<"the result is:"<

for(vector::iterator ip=vec.end()-1;ip>=vec.begin();) {

cout<<*ip--;

}

cout<

return 0;

}

十进制转任意进制:

[cpp] view plaincopyprint?

//十进制转换为任意进制的源码

#include

using namespace std;

int main()

{

long n;

int p,c,m=0,s[100];

cout<<"输入要转换的数字:"<

cin>>n;

cout<<"输入要转换的进制:"<

cin>>p;

cout<<"("<

while (n!=0)//数制转换,结果存入数组s[m]

{

c=n%p;

n=n/p;

m++;s[m]=c; //将余数按顺序存入数组s[m]中

}

for(int k=m;k>=1;k--)//输出转换后的序列

{

if(s[k]>=10) //若为十六进制等则输出相对应的字母 cout<<(char)(s[k]+55);

else //否则直接输出数字

cout<

}

cout<<")"<

return 0;

}

通过库函数实现八进制、十六进制输出:

[cpp] view plaincopyprint?

#include

using namespace std;

int main()

{

int test=64;

cout<<"DEC:"<

cout<<"OCT:"<

}

[

排序方法,冒泡……

一维

#include

using namespace std;

int main()

{

int a[10],i,j,t;

cout<<"请输入10个整数:";

for(i=0;i<10;i++)

{cin>>a[i];}

for(i=0;i<10;i++)

for(j=i;j<10;j++)

if(a[i]>a[j])

{

t=a[i];a[i]=a[j];a[j]=t;

}

cout<<"结果为:";

for(i=0;i<10;i++)

{if(a[i]!=a[i-1])

cout<

cout<

二维

#include

#include

using namespace std;

void Swap(int &a,int &b)

{

int temp;

temp=a;

a=b;

b=temp;

}

void BubbleSort(int A[],int n)

{

int i,j,k;

bool flag=false;

for(i=0;i

{

cout<<"第"<

{

if(A[j]>A[j+1])

{

Swap(A[j],A[j+1]);

flag=true;

}

}

if(flag)

{

for(k=0;k

cout<

cout<

flag=false;

}

else

{

cout<<"数组已经排序好!"<

return;

}

}

}

int main()

{

int a[]={9,8,7,6,5,4,3,2,1}; BubbleSort(a,9);

for(int i=0;i<9;i++)

cout<

cout<

return 0;

}

链表操作,插入,删除……

链表的创建、添加、删除、修改、查询(C++)

//--------------------------------------------------------------------------------------------

//---------------------------------- 学生成绩管理--------------------------------------------

// 软件说明:

// 如果稍加改动,可以用来管理学生的考试成绩。(根据实际情况:学号、姓名、科目、分数、总分

// 、排名等等。) 限于测试程序时输入的简单性,这里就不加改进了......

// 软件功能:

// 1. 由学号查询学生的成绩。

// 2. 插入一名学生信息。

// 3. 删除一名学生信息。

// 4. 输出不及格学生的成绩。

// 5. 修改学生的成绩。

// 6. 求学生的平均成绩。

// 7. 查看某一分数段的学生成绩。

// 8. 显示表中的学生信息。(按学号排列)

// 9. 按学生的成绩排序。(由高到底)

// 0. 将数据保存到文件[清空链表]。(D:\data.txt)

#include "iostream.h"

#include "iomanip.h"

#include "fstream.h"

struct student

{

long number; //学号

float score; //分数

int ID; //顺序

int Order; //名次(按成绩)

student *next;

};

student *head;

//Inlitialize a list (End while the student's number is '0')

//---------------创建链表:初始化---------

student *Create()

{

student *p;

student *end;

p=new student;

cin>>p->number>>p->score;

head=NULL;

end=p;

while(p->number!=0)

{

if(head==NULL)

head=p;

else

end->next=p;

end=p;

p=new student;

cin>>p->number>>p->score;

}

end->next=NULL;

delete p;

return(head);

}

//Delete a student's information from the list----删除操作---- void Delete(struct student* &head,long number)

{

student *p;

if(!head)

{

cout<

return ;

}

if(head->number==number)

{

p=head;

head=p->next;

delete p;

cout<

return ;

}

for(student *end=head;end->next;end=end->next)

{

if(end->next->number==number)

{

p=end->next;

end->next=p->next;

delete p;

cout<

return ;

}

}

cout<

return ;

}

//显示链表信息

void Display(student *head)

{

if(head==NULL)

{

cerr<<"空表,不能输出..."<

return ;

}

cout<

int ID=1;

while(head)

{

head->ID=ID;

cout<ID<number<sco re<

head=head->next;

ID++;

}

}

//Insert a student's information into the list-------插入操作-------

void Insert(student *&head,student *stu)

{

if(head==NULL)

{

head=stu;

stu->next=NULL;

cout<

return ;

}

if(head->number>stu->number)

{

stu->next=head;

head=stu;

cout<

return ;

}

student *p=head;

while(p->next&&p->next->numbernumber)

p=p->next;

stu->next=p->next;

p->next=stu;

cout<

}

//Display the total number od students----学生总数-----

int Length(student *head)

{

int length=0;

while(head)

{

length++;

head=head->next;

}

return length;

}

//Display the average score-----显示平均成绩----

float Average(student *head)

{

int n=Length(head);//Get the total number of students

float sum=0,aver;

for(int i=1;i<=n;i++)

{

sum=sum+head->score;

head=head->next;

}

aver=sum/n;

return aver;

}

//search for a student's score across his identify number---按学号查找成绩--- void Search(student *head,long key)

{

student *p;

if(head==NULL)

{

cout<

return ;

}

if(head->number==key)

{

cout<<"你查找的学号、成绩为:"<

cout<number<<"\t"<score<

cout<

return ;

}

for(p=head;p->next;p=p->next)

{

if(p->next->number==key)

{

cout<<"\t\t\t你查找的学生的学号、成绩为:\n";

cout<<"\t\t\t"<next->number<<"\t"<next->score<

cout<

return ;

}

}

cout<<"\n\t没有学号为"<<" "<

}

//Alter a student's score across his ID-----按学号修改学生的成绩------

void Alter(student *head,long number,float score)

{

student *p;

if(head==NULL)

{

cout<<"\n\t空表,不能修改。\n";

return ;

}

if(head->number==number)

{

head->score=score;

cout<

return ;

}

for(p=head;p->next;p=p->next)

{

if(p->next->number==number)

{

p->next->score=score;

cout<

return ;

}

}

cout<<"\n\t没有学号为"<

}

//Maximum and minimum score-----------学生成绩的最高分和最低分----------

void Maxmin(student *head)

{

long maximum,minimum;

float max,min;

if(!head)

{//空表,报错。

cout<<"\nlist null.Can not find the maximum score.\n";

return ;

}

for(max=min=head->score,maximum=minimum=head->number;head->next;head=hea d->next)

{

if(head->next->score>max)

{

max=head->next->score;

maximum=head->next->number;

}

else if(head->next->score

{

min=head->next->score;

minimum=head->next->number;

}

}

cout<<"\n\t\t学号"<<"\t分数";

cout<<"\n\t最高分: "<

}

//Order by score----------- 起泡法排序------------- student OderByScore(student *&head)

{

student *h,*p,*q,*r,*s;

int i;

int n;

n=Length(head);

for(i=0;i

{

h=p=new student;

p->next=head; //p-------->head

while(p->next)

{ //p-------->

q=p->next; //r--------->q

r=p; //------->q-------->q->next

while(q->next)

{

if(q->scorenext->score)//->r--------->q-----> r=q;

q=q->next;

}

if(r!=p)

{

s=r->next; ///-->r------>s------>

r->next=s->next;

s->next=p->next;

p->next=s;

}

p=p->next;

}

head=h->next;

delete h;

}

return(*head);

}

//按学号排列学生(同上)

student OderByID(student *&head)

{

student *h1,*p,*q,*r,*s;

int i;

int n;

n=Length(head);

for(i=0;i

{

h1=p=new student;

p->next=head; //p-------->head

while(p->next)

{ //p-------->

q=p->next; //r--------->q

r=p; //------->q-------->q->next

while(q->next)

{

if(q->number>q->next->number)//->r--------->q----->

r=q;

q=q->next;

}

if(r!=p)

{

s=r->next; ///-->r------>s------>

r->next=s->next;

s->next=p->next;

p->next=s;

}

p=p->next;

}

head=h1->next;

delete h1;

}

return(*head);

}

//Display the students whose's score below 60-----输出不及格的学生成绩----- void BetweenAnd(student *head)

设计说明书编写参考大纲

设计说明书编写参考大纲 论文摘要(中英文) 第1章综合说明 1.1 概况 1.2 建设目的和依据 1.3 建设的条件 1.4 建设的规模及综合利用效益 1.4.1 建设规模 1.4.2 综合利用效益 1.5 工程特性表 第2章设计基本资料 2.1流域概况 2.2气候特性 2.2.1气温 2.2.2降雨量 2.2.3风速及吹程 2.3水文特性 2.3.1年日常径流 2.3.2洪峰流量 2.4工程地质 2.4.1库区工程地质 2.4.2坝址工程地质 2.5建筑材料 2.6经济资料 第3章设计条件和设计依据 3.1 设计任务 3.2 设计依据 第4章洪水调节计算 4.1洪水调节演算 4.1.1洪水调节演算原理 4.1.2洪水调洪演算方法 4.2 洪水标准分析 4.3 泄水建筑物的型式选择 4.4 调洪演算及泄水建筑物尺寸(堰顶高程/孔口尺寸)的确定 4.4.1 调洪演算方法(高切林法)

4.4.2 洪水过程线的模拟 4.4.3 计算公式 4.4.4 计算结果 4.4.5 方案比选 4.5坝顶高程的确定 4.5.1 工程等别及建筑物级别和洪水标准的确定 4.5.2 波浪要素计算 4.5.3 挡墙顶高程的确定 4.6 泄水建筑物的设计 第5章主要建筑物型式选择及枢纽布置 5.1 枢纽等别及组成建筑物级别 5.2 坝型选择 5.2.1 定性分析 5.2.2 定量分析 5.3 泄水建筑物型式选择 5.4 水电站建筑物 5.5枢纽方案的综合比较 5.5.1挡水建筑物——堆石坝 5.5.2泄水建筑物——正槽溢洪道 5.5.3水电站建筑物 第6章第一主要建筑物设计 6.1.1 L型挡墙顶高程及坝顶高程、宽度 6.1.2 坝体分区 6.1.3 L型防浪墙设计 6.2 堆石料设计 6.2.1堆石料基本特性参数 6.2.2主、次堆石料设计 6.2.3防护层、垫层、过渡层材料设计 6.3 复合土工膜设计 6.3.1复合土工膜的选型和分区 6.3.2复合土工膜强度校核 6.4 大坝稳定分析 6.4.1 计算原理及方法 6.4.2 坝坡稳定分析 6.4.3 坝坡面复合土工膜的稳定分析 6.5 副坝设计 6.5.1 副坝的型式选择

C语言期末考试题库(第一章 c语言基

一、单项选择 1.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(). A、关系运算,赋值运算,算术运算 B、算术运算,关系运算,赋值运算 C、算术运算,赋值运算,关系运算 D、关系运算,算术运算,赋值运算 答案:B 2.下述正确的C语言常量是:(). A、E2 B、3e-3 C、1.5E2.5 D、5.0E 答案:B 3.使用共用体变量,不可以(). A、进行动态管理 B、节省存储空间 C、同时访问所有成员 D、简化程序设计 答案:C 4.为表示关系x>=y>=z,应使用C语言表达式为:()

A、(x>=y)&(y>=z) B、(x>=y>=z) C、(x>=y)&&(y>=z) D、(x>=y)AND(y>=z) 答案:C 5.以下程序的输出结果是(). main() {char str[]="ABCD",*p=str;printf("%s\n",p);} A、68 B、ABCD C、不确定的值 D、字符D的地址 答案:B 6.char a[10];不能将字符串"abc"存储在数组中的是(). A、a="abc"; B、a[0]=0;strcat(a,"abc"); C、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; D、strcpy(a,"abc"); 答案:A 7.fscanf函数的正确调用形式是(). A、fscanf(文件指针,格式字符串,输入表列);

B、fscanf(格式字符串,文件指针,输出表列); C、fscanf(fp,格式字符串,输出表列); D、fscanf(格式字符串,输出表列,fp); 答案:A 8.下列数组说明中正确的是(). A、int array[][]={1,2,3,4,5,6,7,8,9,10}; B、int array[][][5]={1,2,3,4,5,6,7,8,9,10}; C、int array[][4]={1,2,3,4,5,6,7,8,9,10}; D、int array[3][]={1,2,3,4,5,6,7,8,9,10}; 答案:C 9.以下选项中,与k=n++完全等价的表达式是(). A、n=n+1,k=n B、k+=n+1 C、k=++n D、k=n,n=n+1 答案:D 10.针对下列程序段回答问题(). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0)continue;

参考模板 - 软件详细设计规格说明书

附录D:图书管理系统软件设计规格说明书 图书管理系统 软件详细设计规格说明书 1.引言 1.1编写目的 软件设计的任务是将软件需求变换成为软件的具体设计方案。概要设计根据软件需求导出软件的体系结构;详细设计给出软件模块的内部过程描述。该文档是设计结果的详细描述,也是程序员编写程序的功能依据。 1.2项目背景 开发软件名称:图书管理系统。 项目开发者:××学院计算机科学系“图书管理系统”开发小组: ×××(×号,组长),×××(×号),…… 用户单位:××学院 1.3 定义 图书管理系统对于现代图书馆而言,是能否发挥其教学科研的作用的至关重要技术平台。对于读者和图书管理员来说,是能否方便快速获取信息的关键。所以,图书管理系统应该能够为用户提供充足的信息和快捷方便的操作手段。 1.4 参考资料 ?钱乐秋等,《软件工程》,青还大学出版社; ?张害藩,《软件工程导论》(第四版),清华大学出版社; ?王珊等,《数据库原理及设计》,清华大学出版社; ?赵池龙等,《软件工程实践教程》,电子工业出版社。 2.详细设计 2.1软件结构块层次图

图书管理系统 书籍管理读者管理借阅管理 书籍信息 管理出版社管理 书籍类别 管理注销管理读者类别 管理 读者信息 管理 还书管理借书管理 续借管理 过期罚款 管理 图书丢失 管理 2.2 模块详细设计 此处给出各用例的程序实现流程图,也可用下面的描述显示表述 (注,建议用程序流程图) 借书管理: A.输入读者编号; 提示超期未还的借阅记录; B.输入图书编号; If 选择“确定” then If 读者状态无效或改书“已”注销或已借书数>=可借书数then 给出相应提示; Else 添加一条借书记录; “图书信息表”中“现有库存量”-1; “读者信息表”中“已借书数量”+1; 提示执行情况; Endif 清空读者、图书编号等输入数据; Endif If 选择“重新输入”then 清空读者、图书编号等输入数据; Endif If 选择“退出”then 返回上一级界面; Endif 返回A.等待输入下一条;

C语言期末考试试题

C语言试题1 一填空题(15分) 1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。 2.设int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是()。 3.下面程序段的输出结果是()。 int a=1234; a=a&0377; printf(“%d %o\n”,a,a); 4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是()。 char a[3]; 5.设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是()。 #define PR 80 #define PP PR+403 6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:()、()和()。7.在C文件中,数据存在的两种代码形式是()和()。 8.C语言中调用()函数打开文件,调用()函数关闭文件,调用()函数可实现文件的随机读写。 9.若有int a[3]={10,12,30};则a+1是()的地址,*(a+2)=()。 二判断对错(5分,对的划“√”,错的划“×” 1.在Turbo C中,整型数据在内存中占2个字节。() 2.表达式1/4+2.75的值是3。() 3.结构体类型只有一种。() 4.函数若无返回值,则它一定无形参。() 5.C语言只能处理文本文件和二进制文件。() 三选择题(20分) 1.设int a=12; 表达式a+=a-=a*=a的值是()。 A 12 B 144 C 0 D 132 2.以下程序的输出结果是()。 main( ) { int a=011; printf(“%d\n”,++a); } A 12 B 11 C 10 D 9 3.以下程序的输出结果是()。 #define ADD(x) (x)+(x) main() { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); } A d=70 B d=140 C d=280 D d=80 4.下面的选项中正确的赋值语句是(char a[5],*p=a;)()。 A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”; 5.若k为整形,则while循环执行()次。 k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”); A 10 B 9 C 0 D 1

软件体系结构设计说明书

软件体系结构设计说明书 1.文档简介 [本节主要是描述软件体系结构设计说明书的目的、范围、相关术语、参考资料和本文档的摘要性介绍。软件体系结构设计属于高层设计文档,是符合现代软件工程要求的概要设计。] 1.1 目的 [软件体系结构设计说明书,将从设计的角度对系统进行综合的描述,使用不同的视图来描述其不同方面。在本小节中,将对该文档的结构进行简要的说明,明确该文档针对的读者群,指导他们正确的地使用该文档。] 1.2 范围 [说明该文档所涉及的内容范围,以及将影响的内容。] 1.3 定义、首字母缩写词和缩略语 [与其它文档一样,该文档也需要将本文档中所涉及的所有术语、缩略语进行详细的定义。还有一种可简明的做法,就是维护在一个项目词汇表中,这样就可以避免在每个文档中都重复很多内容。] 1.4参考资料 [在这一小节中,应完整地列出该文档引用的所有文档。对于每个引用的文档都应该给出标题、标识号、日期以及来源,为阅读者查找这些文档提供足够详细的信息。] 1.5 概述 [在本小节中,主要是说明软件体系结构设计说明书各个部分所包含的主要内容,就像一个文章摘要一样。同时也应该对文档的组织方式进行解释。]

2. 体系结构表示方式 [本节说明软件体系结构在当前系统中的作用及其表示方式。它将列举其所必需的用例视图、逻辑视图、进程视图、部署视图或实施视图,并分别说明这些视图包含哪些类型的模型元素。] 3. 软件体系结构的目标和约束 [本节说明对软件体系结构具有某种重要影响的软件需求和用户目标,例如,系统安全性、保密性、第三方组件的使用、可移植性、发布和重新使用。它还要记录可能适用的特殊约束:设计与实施策略、开发工具、团队结构、时间表、遗留系统等。] 4.用例视图 [本节使用用例分析技术所生成的系统用例模型,描述其中的一些用例或场景。在该模型中纳入用例或场景,应该是系统中最重要、最核心的功能部分。] [另外,在本节中还应该选择一个主要的用例,对其进行描述与解释,以帮助读者了解软件的实际工作方式,解释不同的设计模型元素如何帮助系统实现。] 5. 逻辑视图 [逻辑视图主要是反映系统本质的问题领域类模型,在逻辑视图中将列出组成系统的子系统、包。而对每个子系统、包分解成为一个个类,并说明这些关键的实体类的职责、关系、操作、属性。这也是OO思想的体现,以类、类与类之间的协作、包、包与包之间的协作模型来表达系统的逻辑组织结构。]

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

设计说明参考文献

设计说明 摘要:本套设计是以******的一间套房,提出的一套设计。本套设计采用简约风格,把设计简化到它的本质——功能性实用性。地面选用高档羊毛地毯,电视背景墙选用黑色烤漆玻璃和木质贴面综合运用,提升现代感。在色彩上,大体的颜色当然是洁白明亮,客厅配合烤漆玻璃和饰面板的背景墙装饰给人清新雅致的感觉。 关键词:简约;理智;清新雅致;舒适 1 设计概况 本套设计是******的一间套房,距市区较远,不过交通便利。由于在市区外,在这里买房装修的人们收入水平,开销等较闹市区有些许差距,就要求在设计的时候,豪华,高档次之,主要是在满足其功能的基础上,增加些许层次。引入主题设计概念——现在简约的单身公寓。除了满足在家生活的功能,又能给人家的感觉。 2 设计理念 此房的是一套单身公寓,面积不大,五六十平米,根据业主的需要,设计成现代简约的风格。现代简约是现代家装比较流行的设计趋势。简约不等于简单。 在居室设计中,白色是不变的主题,它无色彩倾向,却又吸纳众色,单纯中蕴涵着丰富。而不同使用功能的家具以其他装饰手法在白色环境中出现,它们之间互相协调,突出的是整体效果,而非个体形象,都具有相同的优雅与审美取向,给人一种视觉上的高品位的圣洁之美。运用人体工效学、室内设计原理、室内色彩设计原理、材料学、光学原理、建筑装饰施工工艺为原理,加具采用清混结合的方式。注重色、光、影的相互结合,营造了一个现代简约、温馨的室内空间[1]。在色彩方面运用了冷暖色的结合方式,而颜色正是体现温馨的重要因素。如紫色、红色、黑色用的过多会使人产生浮躁的感觉;明亮的灯光和柔和的背景能带来更多温馨的感觉照明能带来更多温馨的感觉;本设计通过颜色的搭配与灯光的照明加之个性化的设计,创造了一个温馨、简约、舒适的现代式室内空间环境[2]。 “麻雀虽小,五脏俱全”,这套单身公寓虽然面积不大,不过涵盖了卫生间、厨房、卧室、客厅、阳台五个功能区!居室设计中必须也是放在首位的就是功能需要,即满足人们日常家居行为的需要。因为居室面积比较小,更要求合理的设置功能部件的尺寸位置,以符合人体功效,达到舒适的感觉。 3 设计说明 简约而不简单。在色彩上,大体的颜色当然是洁白明亮,客厅配合烤漆玻璃和饰面板的背景墙装饰,给人清新雅致的感觉;餐厅背景墙配合深色一些的花纹壁纸以及酒柜,跟

2019年C语言期末考试题与答案

1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。 最大值第三行i<=n五行k+1 2、编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他)6、求出N×M整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 1 5 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n位自然数的各位数字的积。(n 是小于10的自然数) 8、计算n门课程的平均值,计算结果作为函数值返回。例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。

10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun 用比较法对主程序中用户输入的具有10 个数据的数组a 按由大到小排序,并在主程序中输出 排序结果。 13、编写main 程序调用函数fact 求解从m 个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m 不能小于n ,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a 和b 分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 19、对任意输入的 x ,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10

包装设计毕业设计说明书 参考

毕业设计说明书 课题名称:有间药铺中药材包装设计 学生姓名章爽爽 学号1 所在学院设计与艺术学院 专业造型设计 班级造型1112 指导教师沈露 起讫时间: 2013年11 月25 日~ 2014年 1 月17 日

一、课题介绍 有间药铺中药材包装设计 中国传统元素是中药材包装设计中的重要要素,体现着中药材的悠久历史文化。虽然现在的中药材包装中有不少运用了传统元素,但都缺乏新意。本课题是通过对中国传统元素的收集和了解以及中药材包装设计的市场调查,把握包装设计原则。结合中国传统书法元素,与中药材的文化内涵吻合。让消费者感受包装带来的视觉和精神上的享受。 传统书法文字具有丰富的表现力和艺术感染力。中医药是中华民族传承五千年的瑰宝,中医药业是国家大力培育的七大战略性新兴产业之一,中医药国际化是迟早的事,建立一个有特色的中药品牌形象能促进中医药文化的传播。 而印章与书法息息相关,它是一种雕刻和书法融合的艺术,是和中国书法、绘画密不可分的艺术样式。由于印章独具特色,所以在古玩鉴赏领域古玩市场中占有较为重要的地位。所以在包装上运用传统书法和印章的形式,除了能充分体现中药材的文化特色,还能吸引更多消费群。 二、设计过程 1、设计调研 在市场调研中分析现有药材包装及各种相关的资料,总结出以下结论。 (1)虽然现在的中药材包装中有不少运用了传统元素,但其设计缺乏新意。 (2)有中国韵味但缺少特色,体现不出中药材的悠久历史文化。 (3)过于普通不能吸引跟多的消费群。 所以,此次要做的中药材的包装设计既要满足人们的审美需求,又要具有中国传统文化特色。使中药材包装回归自然特色,树立个性。体现出中药材传统、质朴的品牌形象。 2、设计定位 通过设计后的有间药铺的包装所传达的印象:

设计说明书范文

设计说明书范文 1 2020年4月19日

logo设计说明 首先,应该先从设计标志的设计思路说起;其次,从标志所象征的意义入手;再次,对图案的描述;最后,要说明该标志及其机构的文化是否吻合。 标志设计说明: 一、设计定位 1、视觉效果:科技、绿色环保、追求、稳定、形象。 2、设计语汇:科技化、国际化、图文化、装饰性。 二、设计主题: “高科技、绿色自然” 三、构成诠释: 1、标志以科技为概念,以绿色为基础,以联想为依据,以充分展示“捷盛化工”以科技绿色服务生活的理念。 2、本标志构成中以圆,五边形基本要素,易联想到分子、原子的结构构成,符合企业的行业特征;五角形内是“j”的变形为一只向上的飞鸟。以此昭示企业的文化与事业发展,可谓:形神合一,无往不利。 3、本标志以绿、天蓝、橙为主色。外圆结构用绿色,代表自然、健康、稳重;五边形用红黄渐变,象征太阳的光芒,代表希 2 2020年4月19日

望、活力、力量、团结;变形的“j”用天蓝色,代表科技、发展、进取。 4、本标志可延伸性理解度很广,是一个易辩,易读、易记的良好代言形象。 5、该标志图文化,不但是当国际设计艺术风格,亦是当代企业的时代风范展示,以简捷明快的图形化语言与社会大众沟通,使企业信息得以快速传递,并形成品牌信息文化的沉淀。 平面设计说明: 1.设计依据和基础资料 (1)摘述选址报告、用地范围及对外协议(如征地的初步协议书)等以及设计任务书中与本专业有关的内容; (2)设计采用的指标和标准; (3)有关部门对本工程的规划许可条件、红线及用地范围、建筑物高度、建筑容积率、绿化系数、周围环境、空间处理、交通组织、环境保护、文物保护、分期建设等要求。 2.场地概述 (1)说明场地周围环境、市政基础设施配套、供应情况、与当地能源、水电、交通、公共服务设施的相互关系; (2)概述场地地形起伏,丘川、塘等状况(位置、流向、水深、最高最低标高、总坡向、最大坡度和一般坡度等); 3 2020年4月19日

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai

毕业设计作品设计说明书撰写说明及要求

附件一 毕业设计作品(产品)设计说明书 撰写说明及要求 在作品(产品)设计和实现过程中,每个工作流都产生了相关文档,如需求工作流有需求规格说明书,分析设计工作流有设计说明书,实现工作流有详细的源码,测试工作流产生了测试报告。将这些文档进行整理,就形成了作品(产品)设计说明书,设计说明书应按学院规定的结构、格式排版编写。 一、设计说明书的结构设定 设计说明书由前置部分、主体部分和后置部分三大部分组成。前置部分由封面、摘要、关键词和目录四部分组成,主体部分由绪论、正文、结论三大部分组成,后置部分由参考文献、致谢和附录三大部分组成。 (一)前置部分 1、封面。封面是毕业设计的门面,提供毕业设计说明书的相应信息。要求使用统一封面,封面样式附后,封面上的所有有关信息填写准确、完整、清晰。 2、摘要。摘要是毕业设计说明书不加注释和评论的简短陈述,一般应说明毕业设计的工作目的、实验方法、结果和最终结论等,而重点是结果和结论。摘要中一般不用图、表、化学结构式、计算机程序,也不用非公知公用的符号、术语和非法定的计量单位。

摘要页置于中文题名页后,中文摘要一般为200~300汉字左右,摘要应包括关键词。 3、关键词。关键词是为了文献标引工作而从毕业设计说明书中选取出来用以表示全文主题内容的单词或术语。一般选取3-5个词作为关键词,关键词位于摘要下方,另起一行,左对齐,关键词间用分号分隔,最后一个词后不打标点符号,如有可能,尽量用《汉语主题词表》等词表提供的规范词。 4、目录。目录即毕业设计说明书的提纲,由毕业设计说明书的章、节、小节、参考文献、致谢等的序号、名称和页码组成。另起一页排在摘要页之后,章、节、小节分别按相应要求标出。 (二)主体部分 1、绪论(或引言)。绪论简要说明设计工作的目的、范围、相关领域的前人工作和知识空白、理论基础和分析、设计方法、设计思路、预期结果和意义等。绪论应言简意赅,不要与摘要雷同,不要成为摘要的注释。一般教科书中有的知识,在绪论中不必赘述。 2、正文。正文是设计说明书的核心部分,占主要篇幅,可以包括:调查对象、实验和观测方法、仪器设备、材料原料、实验和观测结果、计算方法和编程原理、数据资料、经过加工整理的图表、形成的观点、导出的结论、完成的设计等。 毕业设计说明书必须实事求是,客观真切,准确完备,合乎逻辑,层次分明,简练可读。设计中引用他人的观点、结果及图表与数据必须注明出处,在参考文献中一并列出。

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了_______________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; _______________; i++) if (_______________) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= _______________; p1++, p2++) _______________=_______________; *p2= ______________; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<_______________;j++) if( _______________< _______________ ) { m=a[ j]; a[ j]=a[ j+1]; a[ j+1]= m; } for(i=0;i<5;i++) printf("%d ",a[i]); } 7. 函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<_______________;i++,j--)

软件详细设计说明书编写提示

软件详细设计说明书编写提示 1 引言 1.1 编写目的:阐明编写详细设计说明书的目的,指明读者对象。 1.2 项目背景:应包括项目的来源和主管部门等。 1.3 定义:列出本文档中所用到的专门术语的定义和缩写词的愿意。 1.4 参考资料: ●列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源 ●项目经核准的计划任务书、合同或上级机关的批文;项目开发计划;需求规格说明书;概要设计说明书;测试计划(初稿);用户操作手册 ●文档所引用的资料、软件开发的标准或规范。 2 总体设计 2.1 需求概述 2.2 软件结构:如给出软件系统的结构图。 3 程序描述 3.1 逐个模块给出以下说明: ●功能 ●性能 ●输入项目 ●输出项目 3.2 算法:模块所选用的算法。 3.3 程序逻辑:详细描述模块实现的算法,可采用:标准流程图;PDL语言;N-S 图;判定表等描述算法的图表。 3.4 接口 ●存储分配 ●限制条件 3.5测试要点:给出测试模块的主要测试要求。 1 概述 1.1 系统简述 对系统要完成什么,所面向的用户以及系统运行的环境的简短描述,这部分主要来源于需求说明书的开始部分。 1.2 软件设计目标 这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的。同时,对于非功能性的需求例如性能、可用性等,亦需提及。需求规格说明书对于这部分的内容来说是很重要的参考,看看其中明确了的功能性以及非功能性的需求。

这部分必须说清楚设计的全貌如何,务必使读者看后知道将实现的系统有什么特点和功能。在随后的文档部分,将解释设计是怎么来实现这些的。 1.3 参考资料 列出本文档中所引用的参考资料。(至少要引用需求规格说明书) 1.4 修订版本记录 列出本文档修改的历史纪录。必须指明修改的内容、日期以及修改人。 2 术语表 对本文档中所使用的各种术语进行说明。如果一些术语在需求规格说明书中已经说明过了,此处不用再重复,可以指引读者参考需求说明。 3 用例 此处要求系统用用例图表述(UML),对每个用例(正常处理的情况)要有中文叙述。 4 设计概述 4.1 简述 这部分要求突出整个设计所采用的方法(是面向对象设计还是结构化设计)、系统的体系结构(例如客户/服务器结构)以及使用到的相应技术和工具(例如OMT、Rose) 4.2 系统结构设计 这部分要求提供高层系统结构的描述,使用方框图来显示主要的组件及组件间的交互。最好是把逻辑结构同物理结构分离,对前者进行描述。别忘了说明图中用到的俗语和符号。 4.2.1 顶层系统结构 4.2.2 子系统1结构 4.2.3 子系统2结构 4.3 系统界面 各种提供给用户的界面以及外部系统在此处要予以说明。如果在需求规格说明书中已经对用户界面有了叙述,此处不用再重复,可以指引读者参考需求说明。如果系统提供了对其它系统的接口,比如说从其它软件系统导入/导出数据,必须在此说明。 4.4 约束和假定 描述系统设计中最主要的约束,这些是由客户强制要求并在需求说明书写明的。说明系统是如何来适应这些约束的。 另外如果本系统跟其它外部系统交互或者依赖其它外部系统提供一些功能辅助,那么系统可能还受到其它的约束。这种情况下,要求清楚地描述与本系统有交互

2013年c语言期末考试题

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 最大值 第三行i<=n 五行k+1 2、编写程序求无理数e 的值 并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。

课程设计说明书正文、结论、参考文献等标准格式(设计类)

本科课程设计说明书第1 页共3 页1 引言(或绪论)(可作为正文第1章标题,用小3号黑体,加粗, 段前0.5行,段后0.5行,这些要删) 4号宋体,1.5倍行距)×××××××××××××××××××××……… 1.1 ××××××(作为正文2级标题,用4号黑体,加粗)×××××××××(小4号宋体)××××××………… 1.1.1 ××××(作为正文3级标题,用小4号黑体,不加粗) ×××××××××(小4号宋体)×××××××××××××××××××××××××××……… 2 ×××××××(作为正文第2章标题,用小3号黑体,加粗, 并留出上下间距为:段前0.5行,段后0.5行)×××××××××(小4号宋体)×××××××××××××××××××××××××××××××××××……… 注:1.正文中表格与插图的字体一律用5号宋体; 2.正文各页的格式请以此页为标准复制,页眉中的页码用阿拉伯数字表示(本文档的页码已设置成自动格式); 3.为保证打印效果,学生在打印前,请将全文字体的颜色统一设置成黑色。

本科课程设计说明书第2 页共3 页 (空2行) 结论(小3号黑体,居中) ×××××××××(小4号宋体,1.5倍行距)×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××…………

本科课程设计说明书第3 页共3 页 (空2行) 参考文献(小3号黑体,居中,至少10本) 1 ×××××××(小4号宋体,行距18磅)××××× 2 ×××××××××××××××××××××××××××××××××××××××××× 3 ×××××××××××××××××××××× ………… 例如: 1 胡曰利、吴晓芙,林木生长与养分动态模型研究V杉木林曲线[1]、中南林学院,1999,19(4):1-7 2 曾思齐、欧阳君祥. 马尾松低质低效次生林分类技术研究.[J].中南林学院学报,2002,22(2):12-16 3 华罗庚,王元.论一致分布与近似分析.中国科学,1973(4):339~357 4 张筑生.微分半动力系统的不变集研究:[学位论文],北京:数学系统学研究所,1983 5 Borko H,Bernier C L.Indexing concepts and methods .New York:Academic Pr,1978 …………

c语言期末测试题

课程代码:A100002座位号: 《计算机技术基础(C语言)》试卷A 姓名: 学号: 专业: 学院: 班级: 20 年月日 第一部分 选择题(共 30 分) 一、单项选择题(本大题共 15 小题,每题只有一个正确答案,答对一题得 2 分,共 30 分) 1、以下关于C语言标识符的描述中,正确的是【】。 A)标识符可以由汉字组成 B)标识符只能以字母开头 C)关键字可以作为用户标识符 D)Area与area是不同的标识符 2、使下列程序段输出“123,456,78”,键盘输入数据,正确的输入是【】。 int i,j,k; scanf(“%d,%3d%d”,&i,&j,&k); printf(“%d,%d,%d\n”,i,j,k); A) B)123,456,78 C)123,45678 D)123,*45678 3、判断char类型的变量c1是否为数字字符的正确表达式为【】。 A) (c1>=0)&&(c1<=9) B) (c1>=’0’)&&(c1<=’9’) C) ’0’<=c1<=’9’ D) (c1>=’0’)||(c1<=’9’) 4、若有语句int a=1,b=2,c=3;则以下值为0的表达式是【】。 A)’a’&&’b’ B)a<=b C)((a>b)||(b

A. *(a[0]+2) B. a[1][3] C . a[1][0] D. *(*(a+1)+2) 6、在循环语句的循环体中执行break语句,其作用是【】。A)跳出该循环体,提前结束循环 B)继续执行break语句之后的循环体各语句 C)结束本次循环,进行下次循环 D)终止程序运行 7、执行语句for(i=10;i>0;i--);后,变量i的值为【】。A)10 B)9 C)0 D)1 8、若有int *p1, *p2,k; 不正确的语句是【】 A. p1=&k B. p2=p1 C. *p1=k+12 D. k=p1+p2 9、在函数中未指定存储类别的局部变量,其隐含的存储类别是【】 A. 静态(static) B. 外部(extern) C. 自动(auto)D. 寄存器(register) 10、如下程序的输出结果是【】 main( ) { int x=2,a=0,b=0; switch(x) { case 2: a++; b++; case 1: ++a; b--; break; case 0: b++;} printf("a=%d, b=%d\n", a, b);} A. a=2, b=0 B. a=2, b=1 C. a=1, b=1 D. a=1, b=0 11、表示关系a main() {int x; scanf(“%d”,&x); if(x<=3) ; else if(x !=10)printf(“%d\n”,x); } 程序运行时,输入的值在哪个范围才会有输出结果。【】

C语言期末考试_试题及答案_最新201

C语言期末考试试题及答案最新2012年 一、单项选择题 1. ()是合法的用户自定义标识符。 A、b-b B、float C、 D、_isw 2. 若变量已正确定义并赋值,表达式()不符合C 语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. ()是不正确的字符常量。 A、'n' B、'1' C、"a" D、'101' 4?在C程序中,用()表示逻辑值真” A、1 B、非0的数 C、非1的数 D、大于0的数 5. ()把x、y 定义成float 类型变量,并赋同一初值3.14。 A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14; 6. 若变量已正确定义,表达式()的值不是2。 A、2&3 B、1?1G a==2D 1八3 7?若变量已正确定义,语句“ if(a>b)k=0;elsek=1和()等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8?设变量定义为“int a, b;,执行下列语句时,输入(),则a和b的值都是10。 scanf("a=%d, b=%d",&a, &b);

A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 9. 下列程序的输出结果是()。 fun(int a, int b, int c) { c =a*b; } void main() { int c; fun(2,3,c); printf(” %dn” ,c); } A、0 B、1 C 6 D、无法确定 10. 在C 程序中,若对函数类型未加说明,则函数的隐含类型为() A、int B、double C、void D、char 11. 表达式strlen(” he的0值是)()。 A、4 B、5 C、6 D、7 12. 设变量定义为“ int a[4];,则表达式()不符合C语言语法。 A、*a B、a[0] C、a D、a++ 13. 设变量定义为“int x, *p=&x;,则&*p相当于()。 A、p B、*p C、x D、*&x 14. 若变量已正确定义,()不能使指针p成为空指针。 A、p=EOF B、p=0 C、p=''、D p=NULL 15. 对于以下的变量定义,表达式()不符合C语言语法。 struct node { int len;

相关主题
文本预览
相关文档 最新文档