文档库 最新最全的文档下载
当前位置:文档库 › 2 C++MFC对话框程序设计示例详解

2 C++MFC对话框程序设计示例详解

2 C++MFC对话框程序设计示例详解
2 C++MFC对话框程序设计示例详解

MFC对话框程序设计详解

(中南大学朱从旭老师)

1. 利用MFCAppWizard(exe)建立程序框架

注意:请各位同学新建的“工程名称”用自己的全学号命名(这里假定学号是“123”),此过程的操作详见图1.1~图1.7所示。

图1.1 “新建”对话框之新建“工程”

图1.2 选择“程序类型”

图1.3 选择“程序类型”续1

图1.4 选择“程序类型”续2

图1.5 “程序类”总结

图1.6 程序最后总结

到此为止,程序的图像见面的框架已经建立,如图1.7所示。接下来第2节将介绍如何

在界面上添加控件(文本框、命令按钮、等),以便得到具体程序的个性化界面。

图1.7 在开发环境下看程序的界面

2. 设计程序的界面

本节所述的操作步骤和方法详见图2.1~图2.7所示。

图2.1 在开发环境下调出“控件”工具箱

图2.2 在程序的“界面”中删除不要的控件

图2.3 用鼠标在“控件”工具箱里单击“静态文本”控件,然后在界面上画出一个“静态文本”控件(Static),然后右击该控件并单击“属性”菜单

图2.4 在弹出的“属性”对话框中指定该控件的ID(名称)、标题(可见内容)

图2.5 按照图2.1~2.4的方法画出一个编辑框(EDIT),并在它的“属性”对话框中暂时只

要指定该控件的ID(名称)

图2.6 按照图2.1~2.4的方法画出一个命令按钮(BUTTON),并在它的“属性”对话框中指定该命令按钮控件的ID(名称)、标题(可见内容)

图2.7 按上述方法画出本程序的所有控件;同时将原有“确定”控件的标题改为“添加学生”,将原有“取消”控件的标题改为“退出程序”

完成图2.1~2.7的操作后,你的个性化程序界面已经设计好,此时,最好“编译”->“链接”->“运行”一下看看,如果上述操作无误,你将看到一个像模像样的图形界面程序运行起来了。不过,当用户用鼠标单击界面上的命令按钮时程序不会有任何反应,要想实现命令按钮的相应功能,需要在相应“消息映射函数”中自己写一些程序代码,请阅读第3节。

3. 设置“成员变量Member Variables”和“消息映射Message Maps”

3.1从“查看”菜单/“建立类向导”引出“MFC ClassWizard”对话框(图3.1);

图3.1 “MFC ClassWizard”对话框

3.2 为每个编辑框(Edit)设置成员变量(Member Variables)

以“学号”框设置成员变量为例:在图3.1中,选“Member Variables”标签;然后在控件列表框中选定“Number_EDIT”,并单击“Add Variable…"按钮,在弹出的“Add Member Variable"对话框中,指定它的关联变量的名字为m_1(也可以是其它名字),关联变量的数据类型为"int",如图3.2所示。

图3.2 设置编辑框的关联变量(变量名、数据类型)

按上述方法为每个编辑框指定一个关联变量(含名字、数据类型);本示例中,给每个编辑框指定的关联变量(含名字、数据类型)如下面的表1所示。

备注:Cstring类型是字符串类型(而char类型是字符类型,属于基本数据类型),Cstring 类型不是基本数据类型,实际上是C++的文件中预定义的一种类,所以Cstring类型的变量实际上是对象变量。用Cstring类型的变量处理字符串,比用char类型的数组处理字符串更加简单、方便。

3.3 为每个命令按钮(Button)设置消息映射(Message Maps)

以“添加学生”按钮设置鼠标单击的消息映射为例:在图3.1中,选“Message Maps”标签;然后在控件列表框中选定“Add_BUTTON”,在“Message”列表框中选定“BN_CLICKED”;并单击“Add Function…"按钮; 如图3.3所示。

图3.3 为Add_BUTTON按钮设置消息映射

在弹出的“Add Member Function "对话框中(图3.4),指定函数名字(如OnAddButton);单击“OK”按钮。按此法为其余的每个命令按钮分别指定一个成员函数;本例中给每个按钮鼠标单击消息指定的关联成员函数名分别如下面的表2所示。

图3.4 为Add_BUTTON按钮设置的成员函数名(OnAddButton)

表2. 每个命令按钮的名称、鼠标单击消息关联的成员函数名

至此,程序界面基本上已经设置好。用户可以运行程序,即可看到图3.5所示的程序界面;但是用户单击界面上的任何按钮时,程序不能执行任何功能,那是因为我们还没有写一句程序代码。接下来的事情将是为程序写代码(即程序语句)。

图3.5 程序运行时的界面

为了下一步写程序的方便,我们需要记住界面上控件的一些关键信息。为清楚起见,在此已将这些关键信息列于了前面的表1~表2中:表1是每个编辑框的名字、对应关联变量名、关联变量的数据类型;表2是每个命令按钮的名字、鼠标单击消息所关联的成员函数名。

4. 编写程序代码

现在,单击开发环境界面左半窗下面的“FileView”标签,再双击“Source Files”下面的文件名“123Dlg.cpp”(对话框的源文件,dlg是“对话框”的英文单词缩写),即可看到

系统自动生成了每个消息的关联成员函数的框架代码(如图4.4)。编程人员要做的事就是在相应函数体内填写所需要的程序代码;当然,用户还得事先为整个程序的“123.cpp”源文件以及“123.h”头文件写一些代码。下面给出一些主要代码,供参考,尤其要通过关键代码的注释内容理解关键语句的功能。

图4.1对话框源文件123Dlg.cpp的初始内容

4.1 头文件123.h (其内容是定义一个描述学生信息的“类”:c123)

以下只给出该文件自己写的那些代码,而系统生成的代码在此省略。

#include // 添加包含字符处理库函数的头文件---此句加在文件最前面

………//这里略去的是系统自动生成的代码

// 以下类定义添加在文件原有内容的末尾

class c123//要求类名的命名规则为"C+你的学号")

{

protected: // 数据成员变量的访问权限设置为保护型,类外不能直接访问

int Number; //学生学号

int Chinese, Math, English; //语文、数学、英语三科成绩

float Total, Average; //三科的总分、平均分

char Name[20]; //学生姓名

public: //成员函数的访问权限设置为公开型,类外可以调用它们

c123(int Num, char *pc, int Eng, int Chi, int Mat); // 构造函数的声明

c123( ); // 默认构造函数的声明(没有形式参数的构造函数)

// 本程序将构造函数的实现代码写到了类外(参见另一个源文件123.cpp)

// 本程序将类的其余成员函数实现代码都直接写在类里面(参见本文件下面)

// 以下为设置成员变量值的函数,均以setXXX形式命名

void setNum(int x) // 设置“学号”变量的值

{ Number=x; }

void setName(char *pc) // 设置“姓名”变量的值

{ strcpy(Name, pc); }

void setChi(int x) // 设置“语文”变量的值

{ Chinese=x; }

void setMat(int x) // 设置“数学”变量的值

{ Math=x; }

void setEng(int x) // 设置“英语”变量的值

{ English=x; }

// 以下为读取成员变量值的函数,均以getXXX形式命名

int getNum( ) // 读取“学号”变量的值

{ return Number; }

char *getName( ) // 读取“姓名”变量的值

{ return Name; }

int getChi( ) // 读取“语文”变量的值

{ return Chinese; }

int getMat( ) // 读取“数学”变量的值

{ return Math; }

int getEng( ) // 读取“英语”变量的值

{return English; }

int getTotal( ) // 读取“总分”变量的值

{ return (English+Chinese+Math); } // “总分”靠计算得出int getAverage( ) // 读取“平均分”变量的值

{ return (English+Chinese+Math)/3; } // “平均分”靠计算得出

}; // 类定义结束,注意魔末尾有分号

4.2 源文件123.cpp (对类c123的构造函数进行实现)

#include "stdafx.h"//VC++程序要包含这个文件,而且要先包含

#include "123.h" //"123.h"头文件放在(#include "stdafx.h")的后面

#include "string" // 添加包含字符处理库函数的头文件

//类c123的构造函数c123( )实现

c123::c123(int Num, char *pc, int Eng, int Chi, int Mat)

{ Number=Num; //给c123类成员变量Number赋值(即设置"学号"数据)strcpy(Name, pc); //字符串不能直接赋值,要调用C++库函数strcpy()进行复制English=Eng; //给类c123的English成员变量赋值(即设置"英语"课成绩)

Chinese=Chi; //给类c123的Chinese成员变量赋值(即设置"语文"课成绩)

Math=Mat; //给类c123的Math成员变量赋值(即设置"数学"课成绩)

Total=Eng+Chi+Mat; //总分Total的值是算出来的

Average=(Eng+Chi+Mat)/3; //平均分average的值也是算出来的

}

//类c123的默认构造函数c123( )实现

c123::c123( ) //(没有形式参数,也没有函数体语句)

{ }

4.3 源文件123Dlg.cpp中按钮单击消息对应的成员函数功能实现

#include "stdafx.h"

#include "123.h"

#include "123Dlg.h"

//以下为自己添加的预处理语句--------

#include //文件输入、输出流类对象的使用

#include //字符处理库函数的使用

using namespace std;

//以下为自己添加的全局变量(普通变量1个、对象变量2个,对象数组1个)定义语句int i = -1; //用i用于存储对象数组中实际元素的个数

ifstream fin("a.txt"); //用ifstream定义一个输入文件对象fin (类似于标准输入对象cin) ofstream fout("b.txt"); //用ofstream定义一个输出文件对象fout(类似于标准输出对象cout) c123 MyObj[100]; //定义类c123的100个对象, 即对象数组MyObj[]

// …………此处省略的是系统自动生成的其它代码(不要改动)

//-------------------------------------以下为消息映射函数自己添加的代码-------------------------- void CMy123Dlg::OnAddButton( )//添加学生信息

{

// TODO: Add your control notification handler code here

char c[50];

i ++;

UpdateData(TRUE); // 最关键语句,记住其功能:将控件中的数据传递给相应的关联变量:m_1,m_2等

MyObj[i].setNum(m_1);

strcpy(c, m_2);

MyObj[i].setName(c);

MyObj[i].setChi(m_3);

MyObj[i].setMat(m_4);

MyObj[i].setEng(m_5);

}

void CMy123Dlg::OnDeleteButton( ) //删除学生信息

{

// TODO: Add your control notification handler code here

UpdateData(TRUE); //将控件中的数据传递给相应的关联变量,主要是为了使m_9得到第9个Edit框里面的内容);要删除的学号是m_9

int n, k; //n做循环变量,k记录学号等于待查学号m_9的对象数组元素的下标

k=-1; //给k初始化一个负数

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

if (MyObj[n].getNum( )==m_9) k=n;

if (k==-1)

m_6="无此学号可删除";

else

for (n=k;n<=i-1;n++)

{

MyObj[n].setName(MyObj[n+1].getName());

MyObj[n].setNum(MyObj[n+1].getNum( ));

MyObj[n].setChi(MyObj[n+1].getChi( ));

MyObj[n].setMat(MyObj[n+1].getMat( ));

MyObj[n].setEng(MyObj[n+1].getEng( ));

}

i--; //对象数组实际元素个数减1

}

void CMy123Dlg::OnExitButton( ) //退出程序

{

// TODO: Add your control notification handler code here

CDialog::OnOK( );

}

void CMy123Dlg::OnSchearButton1( ) //查找指定学号的学生

{

// TODO: Add your control notification handler code here

UpdateData(TRUE); //将Edit框中的数据传递给相应的关联变量,主要是为了使m_9得到第9个Edit框里面的内容;使m_9得到要删除的学号

int n, k; //n做循环变量,k记录找到的对象数组元素的下标(找到的对象元素其学号等于待查学号m_8)

k=-1; //给k初始化一个负数

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

if (MyObj[n].getNum( )==m_9) k=n;

if (k==-1)

m_6="查无此学号";

else

{ m_6=MyObj[k].getName();

m_7=MyObj[k].getTotal( );

m_8=MyObj[k].getAverage( );

}

UpdateData(FALSE); //将关联变量值传递给相应的Edit框

}

void CMy123Dlg::OnSchearButton2( ) //查找最高分

{

// TODO: Add your control notification handler code here

int n, k; // n做循环变量, k记录最高分对应的数组元素的下标

double max; // max记录最高分

max=-1.0; // max应该初始化一个尽量小的数(小于最低分)

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

if (MyObj[n].getTotal()>max)

{max=MyObj[n].getTotal( ); k=n;}

m_6=MyObj[k].getName();

m_7=MyObj[k].getTotal( );

m_8=MyObj[k].getAverage( );

UpdateData(FALSE); //将关联变量值传递给相应的Edit框

}

void CMy123Dlg::OnSchearButton3( )//查找最低分

{

// TODO: Add your control notification handler code here

int n, k; //n做循环变量, k记录最低分对应的数组元素的下标

double min; //min记录最低分

min=301; //min应该初始化一个尽量大的数(比全部满分的和还要大的数)for (n=0;n<=i;n++)

if (MyObj[n].getTotal( )

{min=MyObj[n].getTotal( ); k=n;}

m_6=MyObj[k].getName();

m_7=MyObj[k].getTotal( );

m_8=MyObj[k].getAverage( );

UpdateData(FALSE); //将关联变量值传递给相应的Edit框

}

void CMy123Dlg::OnButton1( ) //从文件读取数据

{

// TODO: Add your control notification handler code here

char c[40];

int n=0;

while(1)

{

fin>>m_1;

fin>>c; //fin不能直接对字符串型对象变量m_2输入

m_2=c; //可以将字符串直接赋给字符串型对象变量m_2

fin>>m_3;

fin>>m_4;

fin>>m_5;

if (strlen(c)>0)

{ MyObj[n].setNum(m_1);

MyObj[n].setName(c);

MyObj[n].setChi(m_3);

MyObj[n].setMat(m_4);

MyObj[n].setEng(m_5);

UpdateData(FALSE); //将关联变量值传递给相应的Edit框

n++;

}

else

break;

};

i=n-1; //最后一个对象元素的下标记录到i变量中

}

void CMy123Dlg::OnButton2( ) //将对象数组全部元素的数据输出到文件{

// TODO: Add your control notification handler code here

int n;

char *p;

for (n=0;n<=i;n++) //全局变量i值记录了对象数组最后一个元素的下标{ m_1=MyObj[n].getNum();

p=MyObj[n].getName();

m_3=MyObj[n].getChi();

m_4=MyObj[n].getMat();

m_5=MyObj[n].getEng();

fout<

//向文件中输出一组数据

}

}

钳型电流表的使用方法及注意事项

https://www.wendangku.net/doc/2d16532915.html, 钳型电流表的使用方法及注意事项 一、使用说明 平常一些我们了利用普通电流表测量电流时,需要将电路切断停机后才能将电流表接入进行测量,这是很麻烦的,有时正常运行的电动机是不允许这样做的。此时,使用钳形电流表就显得方便多了,可以在不切断电路的情况下来测量电流。 钳形电流表工作原理: 钳形电流表是由电流互感器和电流表组合而成。电流互感器的铁心在捏紧扳手时可以张开;被测电流所通过的导线可以不必切断就可穿过铁心张开的缺口,当放开扳手后铁心闭合。穿过铁心的被测电路导线就成为电流互感器的一次线圈,其中通过电流便在二次线圈中感应出电流。从而使二次线圈相连接的电流表便有指示-----测出被测线路的电流。钳形

https://www.wendangku.net/doc/2d16532915.html, 表可以通过转换开关的拨档,改换不同的量程。但拨档时不允许带电进行操作。钳形表一般准确度不高,通常为2.5——5级。为了使用方便,表内还有不同量程的转换开关供测不同等级电流以及测量电压的功能。 二、使用方法 1、在使用钳形电流表前应仔细阅读说明书,弄清是交流还是交直流两用钳形表。 2、钳形表每次只能测量一相导线的电流,被测导线应置于钳形窗口中央,不可以将多相导线都夹入窗口测量。 3、被测电路电压不能超过钳形表上所标明的数值,否则容易造成接地事故,或者引起触电危险。 4、使用高压钳形表时应注意钳形电流表的电压等级,严禁用低压钳形表测量高电压回路的电流。用高压钳形表测量时,应由两人操作,非值班人员测量还应填写第二种工作票,测量时应戴绝缘手套,站在绝缘垫上,不得触及其它设备,以防止短路或接地。 5、在高压回路上测量时,禁止用导线从钳形电流表另接表计测量。测量高压电缆各相电流时,电缆头线间距离应在300mm以上,且绝缘良好,待认为测量方便时,方能进行。 6、观测表计时,要特别注意保持头部与带电部分的安全距离,人体任何部分与带电体的距离不得小于钳形表的整个长度。 三、注意事项 (1)被测线路的电压要低于钳表的额定电压。 (2)当电缆有一相接地时,严禁测量。防止出现因电缆头的绝缘水平低发生对地击穿爆炸而危及人身安全。

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

钳形表与三相四线表使用方法及注意事项

一、功率与电能测量方法: 1.1 功率测量方法 (1). 直接法:测量功率可直接用电动系功率表、数字功率表或三相功率表,测量三相功率还可以用单相功率表接成两表法或三表法,虽然有求和过程,但一般仍将它归为直接法. (2). 间接法:直流可通过测量电压、电流间接求得功率。交流则需要通过电压、电流和功率因数求得功率。 1.2 电能测量方法 (1). 直接法:直接测量电能,直流可使用电动系电能表,交流用感应系或电子电能表。 (2). 间接法:电能测量一般不用间接法,只有在功率稳定不变的情况下用功率表和记时时钟进行测量。 二.钳形电流表的应用 钳形电流表按结构原理不同分为磁电式和电磁式两种,磁电式可测量交流电流和交流电压;电磁式可测量交流电流和直流电流。钳形表俯视图如图1.1所示: 图1.1 钳形表俯视图

钳形表机械图如图1.2所示: 图1.2 钳形表机械视图 2.1.钳形电流表的使用方法和使用时应注意的事项 (1). 在进行测量时用手捏紧扳手即张开,被测载流导线的位置应放在钳口中间,防止产生测量误差,然后放开扳手,使铁心闭合,表头就有指示。 (2). 测量时应先估计被测电流或电压的大小,选择合适的量程或先选用较大的量程测量,然后再视被测电流、电压大小减小量程,使读数超过刻度的1/2,以便得到较准确的读数。 (3). 为使读数准确,钳口两个面应保证很好的接合,如有杂声,可将钳口重新开合一次,如果声音依然存在,可检查在接合面上是否有污垢存在,如有污垢,可用汽油擦干净。 (4). 测量低压可熔保险器或低压母线电流时,测量前应将邻近各相用绝缘板隔离,以防钳口张开时可能引起相间短路。 (5). 有些型号的钳形电流表附有交流电压刻度,测量电流、电压时应分别进行,不能同时测量。 (6). 不能用于高压带电测量。 (7). 测量完毕后一定要把调节开关放在最大电流量程位置,以免下次使用时由于未经选择量程而造成仪表损坏。

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

运筹学课程设计指导书

运筹学课程设计指导书 一、课程设计目的 1、初步掌握运筹学知识在管理问题中应用的基本方法与步骤; 2、巩固和加深对所学运筹学理论知识及方法的理解与掌握; 3、锻炼从管理实践中发掘、提炼问题,分析问题,选择建立运筹学模型,利用模型求解问题,并对问题的解进行分析与评价的综合应用能力; 4、通过利用运筹学计算机软件求解模型的操作,掌握运筹学计算软件的基本操作方法,并了解计算机在运筹学中的应用; 二、课程设计内容与步骤 第一部分是基本实验,为必做部分;需要每位同学单独完成,并写出相应的实验报告。第二部分是提高部分,题目自选或自拟,锻炼综合应用运筹学知识及软件解决实际问题的能力;可以单独完成,也可以合作完成(最多3人一组),写出相应的报告。 1、基本实验在完成基本实验后,每位同学要按照实验要求完成实验报告,实验报告应包括问题描述、建模、上机求解、结果分析及答辩几方面。实验报告必须是打印稿(word文档等),手写稿无效。请大家按照要求认真完成实验报告,如果两份实验报告雷同,或相差很少,则两份实验报告均为0分,其它抄袭情况,将根据抄袭多少扣分。(约占总分的70%) 2、提高部分根据自己的兴趣或所查找的资料,从实际情况出发,自拟题目;在实验报告中,陈述问题,建立模型,求解,结果分析,此部分应着重突出自己的观点和想法。(此部分按照排名先后给分,约占总分的30%) 三、课程设计要求 1、实验目的 学会建立相应的运筹学模型 学会Excel、Lindo和WinQSB,QM for windows软件的基本使用方法 学会用Excel、Lindo和WinQSB,QM for windows软件得到问题的最优解 2、实验要求 分析问题、建立模型,并阐明建立模型的过程; 说明并显示软件使用和计算的详细过程与结果; 结果分析,将结果返回到实际问题进行分析、评价。 四、题目内容 (一)Excel规划求解基本实验 1、雅致家具厂生产4种小型家具,由于该四种家具具有不同的大小、形状、重量和风格,所以它们所需要的主要原料(木材和玻璃)、制作时间、最大销售量与利润均不相同。该厂每天可提供的木材、玻璃和工人劳动时间分别为600单位、1000单位与400小时,详细的数据资料见下表。问: (1)应如何安排这四种家具的日产量,使得该厂的日利润最大? (2)家具厂是否愿意出10元的加班费,让某工人加班1小时? (3)如果可提供的工人劳动时间变为398小时,该厂的日利润有何变化? (4)该厂应优先考虑购买何种资源?

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

MATLAB与在运筹学中的应用

MATLAB与在运筹学中的应用 摘要:论文通过MATLAB在运筹学中的应用实例,探讨了MATLAB在运筹学中的应用方法和技巧,初步了解matlab中优化工具箱的使用。 关键字:MATLAB应用运筹学优化计算 引言 运筹学是近代应用数学的一个分支,主要是研究如何将生产、管理等事件中出现的运筹问题加以提炼,然后利用数学方法进行解决的学科。运筹学是应用数学和形式科学的跨领域研究,利用像是统计学、数学模型和算法等方法,去寻找复杂问题中的最佳或近似最佳的解答。运筹学经常用于解决现实生活中的复杂问题,特别是改善或优化现有系统的效率。运筹学中常用的运算工具有Matlab、Mathematica、Maple、SAS 、SPSS、Lindo/Lingo、GAMS、WinQSB、Excel、其他,如SQP、DPS、ORS、Visual Decision、Decision Explore、AIMMS、Crystal等。 Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,和Mathematica、Maple并称为三大数学软件。 用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。 主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 将matlab用于运筹学的最优化运算可以很好的解决优化问题,而且matlab 还专门有优化工具箱,是处理优化问题更加方便。 一、例:0-1规划(《运筹学》80页例3-9) 求minZ=x1-3*x2+6*x3+2*x4-4*x5 6*x1+2*x2-x3+7*x4+x5<=12 约束条件 x1+4*x2+5*x3-x4+3*x5>=10 Xj=0或1,j=1,2,3,4

摇表、万用表、钳形表的使用方法

摇表(兆欧表),万用表,钳形表的使用方法 电工常用测量仪表有摇表、万用表和钳形电流表,这些仪表在测量时若不注意正确的使用方法或稍有疏忽,不是将表烧坏,就是使被测元件损坏,甚至还危及人身安全,因此,掌握摇表(兆欧表),万用表,钳形表的使用方法。 电工常用测量仪表有摇表、万用表和钳形电流表,这些仪表在测量时若不注意正确的使用方法或稍有疏忽,不是将表烧坏,就是使被测元件损坏,甚至还危及人身安全,因此,掌握常用电工测量仪表的正确使用方法是非常重要的。 1 摇表 摇表又称兆欧表,其用途是测试线路或电气设备的绝缘状况。使用方法及注意事项如下: (1) 首先选用与被测元件电压等级相适应的摇表,对于500V及以下的线路或电气设备,应使用500V或1000V 的摇表。对于500V以上的线路或电气设备,应使用1000V或2500V 的摇表。 (2) 用摇表测试高压设备的绝缘时,应由两人进行。 (3) 测量前必须将被测线路或电气设备的电源全部断开,即不允许带电测绝缘电阻。并且要查明线路或电气设备上无人工作后方可进行。 (4) 摇表使用的表线必须是绝缘线,且不宜采用双股绞合绝缘线,其表线的端部应有绝缘护套;摇表的线路端子“L”应接设备的被测相,接地端子“E”应接设备外壳及设备的非被测相,屏蔽端子“G”应接到保护环或电缆绝缘护层上,以减小绝缘表面泄漏电流对测量造成的误差。 (5) 测量前应对摇表进行开路校检。摇表“L”端与“E”端空载时摇动摇表,其指针应指向“∞”;摇表“L”端与“E”端短接时,摇动摇表其指针应指向“0”。说明摇表功能良好,可以使用。 (6) 测试前必须将被试线路或电气设备接地放电。测试线路时,必须取得对方允许后方可进行。

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计习题参考答案!(第二版--杜友福)

C语言程序设计习题参考答案!(第二版--杜友福)

C语言程序设计习题答案 习题一 C语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1(3)机器语言P1(4)汇编程序P2 (5)高级语言P2(6)编译程序P3(7)解释程序P3(8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S流程图最大的区别是什么?

答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 输入三个数给a,b,c 如果a

4. 求1×2×3×…×10的值。 5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 Y 3X (X<1) 输入一个数给x X<=1 Yes no

运用线性规划对运输问题研究

运用线性规划对运输问题研究 班级:金融103班姓名:王纬福学号:5400210132摘要:由于企业选择运输路线或运输工具不合理而导致物流运输成本不能最小化的问题普遍存在而管理运筹学却能很好的解决此问题。通过科学的方法对问题进行具体化再建立数学模型并求解,就能找到运输成本最小的运输组合。 关键词:物流运输成本、输成本、管理运筹学、WinQSB2.0、线性规划 一、引言 日常生活中,人们经常需要将某些物品由一个空间位置移动到另一个空间位置,这就产生了运输。如何判定科学的运输方案,使运输所需的总费用最少,就是管理运筹学在运输问题上的运用需要解决的问题。 运输问题是一类应用广泛的特殊的线性规划问题,在线性规划的一般理论和单纯形法出现以前,康托洛维奇(L.V.Kant)和希奇柯克(F.L.Hitchcock)已经研究了运输问题。所以,运输问题又有“康-希问题”之称。对于运输问题(Transportation Problem TP)当然可用前面所讲的单纯形法求解,但由于该问题本身的特殊性,我们可以找到比标准单纯形法更简单有效的专门方法,从而节约计算时间和费用。主要是因为它们的约束方程组的系数矩阵具有特殊结构,使得这类问题的求解方法比常规的单纯形法要更为简便。 一、研究现状 运输问题的研究较多,并且几乎所有的线性规划书中都有论述。遗憾的是一些书中所建立的数学模型都不够全面和系统的。但是也有一些模型是严谨的没有漏洞和缺陷,并且很容易在此基础上修改或添加一些其他约束条件便于在实际工程中进行应用。管理运筹学在运输问题上的研究较为深入、全面、系统。对于计算机软件的引用也很前言,winQSB2.0对于普通甚至深入研究运输问题就已经是简单而又使用、耐用、好用的了。现在相关的杂志、期刊都越来越多关于管理运筹学,关于运输问题的文章论文初版,越来越得到重视。 二、文献回顾 随着物流行业和企业对物流运输要求的不断提高,企业的面临着更大的市场竞争,其运输活动在企业不断发展过程中,面临着越来越大难度的运输组合的选择决策问题。如何正确解决这个问题,是企业能够持续经营和发展不可忽视和必须面对的。这个问题同时也引起了企业界、学术界等社会各界的广泛关注。运输问题的实质是企业与运输组合的经济性问题,成功的企业通常都会面临如何选取最佳运输组合或运输路线这样一个重要问题,即以企业运输成本最小化作为确定最佳运输组合或运输路线的原落脚点。 四、案例分析 例:某公司下设生产同类产品的加工厂A1、A2、A3,生产的产品由4个销售点B1、B2、B3、B4出售。各工厂的生产量、各销售点的销量以及各工厂到各销售点的单位运价如下表:

钳型表的使用方法及注意事项

钳型表的使用方法及注意事项 一、使用说明 通常用普通电流表测量电流时,需要将电路切断停机后才能将电流表接入进行测量,这是很麻烦的,有时正常运行的电动机不允许这样做。此时,使用钳形电流表就显得方便多了,可以在不切断电路的情况下来测量电流。钳形电流表工作原理如下: 钳形电流表是由电流互感器和电流表组合而成。电流互感器的铁心在捏紧扳手时可以张开;被测电流所通过的导线可以不必切断就可穿过铁心张开的缺口,当放开扳手后铁心闭合。穿过铁心的被测电路导线就成为电流互感器的一次线圈,其中通过电流便在二次线圈中感应出电流。从而使二次线圈相连接的电流表便有指示-----测出被测线路的电流。钳形表可以通过转换开关的拨档,改换不同的量程。但拨档时不允许带电进行操作。钳形表一般准确度不高,通常为2.5~5级。为了使用方便,表内还有不同量程的转换开关供测不同等级电流以及测量电压的功能。 二、使用方法 1、在使用钳形电流表前应仔细阅读说明书,弄清是交流还是交直流两用钳形表。 2、被测电路电压不能超过钳形表上所标明的数值,否则容易造成接地事故,或者引起触电危险。

3、钳形表每次只能测量一相导线的电流,被测导线应置于钳形窗口中央,不可以将多相导线都夹入窗口测量。 4、使用高压钳形表时应注意钳形电流表的电压等级,严禁用低压钳形表测量高电压回路的电流。用高压钳形表测量时,应由两人操作,非值班人员测量还应填写第二种工作票,测量时应戴绝缘手套,站在绝缘垫上,不得触及其它设备,以防止短路或接地。 5、观测表计时,要特别注意保持头部与带电部分的安全距离,人体任何部分与带电体的距离不得小于钳形表的整个长度。 6、在高压回路上测量时,禁止用导线从钳形电流表另接表计测量。测量高压电缆各相电流时,电缆头线间距离应在300mm以上,且绝缘良好,待认为测量方便时,方能进行。 三、注意事项 (1)被测线路的电压要低于钳表的额定电压。 (2)测量低压可熔保险器或水平排列低压母线电流时,应在测量前将各相可熔保险或母线用绝缘材料加以保护隔离,以免引起相间短路。 (3)钳口要闭合紧密不能带电换量程。 (4)当电缆有一相接地时,严禁测量。防止出现因电缆头的绝缘水平低发生对地击穿爆炸而危及人身安全。 (5)测高压线路的电流时,要戴绝缘手套,穿绝缘鞋,站在绝缘垫上。

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

钳形表使用说明书

目录 一、概述 (1) 二、安全操作准则 (1) 三、电气符号 (2) 四、外表结构 (3) 五、显示符号 (4) 六、输入端及功能按键 (5) 七、技术指标 (6) 1、一般规格 (6) 2、环境限制 (7) 3、电气规格 (7) 八、测量操作说明 (10) 九、仪表保养和维护 (13) 1、一般维护 (13) 2、电池更换 (13)

一、概述 本说明书包括有关的安全说明及警告提示,请仔细阅读有关内容并严格遵守所有的警告和注意事项。 A900系列叉钳形两用交流数字仪表是一款我公司首创的,新颖的手持式,薄型LCD显示的3 1/2位自动量程数字钳形多用表。整机以大规模集成电路双积分A/D转换器为核心。可用于测量交直流电压、交流电流、电阻、二极管及电路通断、温度测量等,并具有数据保持、最大值保持、自动/手动量程转换、自动极性显示、超量程显示、电池电压低提示、自动关机等功能。该仪表全量程过载保护、性能稳定、结构安全可靠,是野外维修、实验室、工厂、学校和电子爱好者最为实用的测量工具。 。 新购买的仪表开箱后请仔细检查下列配件有无缺少或损坏: 1.使用说明书一本 2.测试表笔一付 3.保修卡一张 4.背包一只 5.AAA类电池两节 6.测温探头一只(仅A902和A907型有) 二、安全操作准则: 1、在使用仪表前请仔细阅读使用说明书。 2、检查仪表壳体,应无破裂损坏现象;表笔绝缘应完好无损,无断 线脱头和铜线裸露现象。 3、按测量需要,应将量程功能开关置于正确位置。

4、当改变量程或功能时任何一根表笔均要与被测电路断开。 5、为避免损坏仪表,不要输入超过各量程档所规定的最大值。 6、在测量高于60V直流和30V交流以上电压时,应谨慎小心避免触 电。 7、当使用仪表进行测量时,勿打开电池盖,防触电危险。 8、更换电池前,应使表笔脱离被测电路。 9、在进行电流测量时,务必将表笔从仪表上取出。 10、进行电流测量时,可根据需要及实际情况选择使用叉形或钳形 测量(注意叉形部分最高只能测200A电流),同时保证手指不 要超过手指挡位,以免有触电危险。 11、不要改变仪表内部电路,以免损坏仪表危及安全。 12、应避免在直射阳光,高温高湿,易燃易爆以及蒸汽和粉尘大的 环境中使用和存放。 三、电气符号

winqsb使用方法

实验一WinQSB的基本操作 一、实验目的 了解WinQSB软件基本构成、运行界面和基本操作方法,使学生能基本掌握WinQSB 软件常用命令和功能。了解WinQSB软件在Windows环境下的文件管理操作。 二、实验平台和环境 WinQSB是QSB的Windows版本,可以在Windows9X/ME/NT/2000/XP平台下运行。WinQSB V1.0共有19个子系统,分别用于解决运筹学不同方面的问题,详见表1-1。 表1-1

三、实验内容和要求 1.学会WinQSB的安装和启动方法 2.熟悉WinQSB的界面和各项基本操作 3.能用WinQSB软件与office文档交换数据。 四、实验操作步骤 1.4.1安装 WinQSB的安装比较简单。双击Setup.exe,弹出窗口如图1-1所示: 图1-1 输入要安装到哪个目录,点Continue按钮,弹出窗口如图1-2所示:

图1-2 输入用户名和公司或组织名称,点Continue按钮进行文件的复制,完成后弹出窗口如图1-3: 图1-3 显示安装完成,点“确定”退出。 WinQSB软件安装完毕后,会在开始→程序→WinQSB中生成19个菜单项,分别对应运筹学的19个问题。如图1-4所示:

图1-4 具体功能见表1-1。 针对不同的问题,选择不同的子菜单项,运行相应的程序,然后使用File菜单下的New Problem菜单来输入所需数据。 1.4.2运行 WinQSB基本上有三种窗口:启动窗口、数据输入窗口、结果输出窗口。现以Linear and Integer Programming为例加以说明: 1.启动窗口。在开始菜单中选择Linear and Integer Programming,运行后出现启动窗口如下图1-5所示: 图1-5 (1)标题栏:显示了程序的名称。 (2)菜单栏:共有两个菜单:File和Help。 File菜单只有三个子菜单:New Problem、Load Problem和Exit。 New Problem:创建新问题 Load Problem:装载问题 Exit:退出

谭浩强--C语言程序设计(第二版)习题答案

C语言程序设计(第2版)课后习题答案 第一章 1.请参照本章例题,编写一个C程序,输出以下信息: ************************** Very good! ************************** 解: #include void main() { printf("**************************"); printf("\n"); printf("Very good!\n"); printf("\n"); printf("**************************"); } 2.编写一个C程序,输入a、b、c三个值,输出其中最大值。 解: #include void main() { int a,b,c,max; printf("请输入三个数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max #include void main() { double P, r=0.1, n=10; P=pow((1+r), n);

printf("%lf\n", P); } 3.请编程序将"China"译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。例如,字母"A"后面第4个字母是"E","E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5分别变为'G'、'l'、'm'、'r'、'e',并输出。 解: #include void main() { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 第三章 3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1='A', c2='a'。问在键盘上如何输入? 解: #include void main() { int a, b; float x, y; char c1, c2; scanf("a=%d, b=%d", &a, &b); scanf(" x=%f, y=%e", &x, &y); scanf(" c1=%c, c2=%c",&c1, &c2); } a=3, b=7 x=8.5, y=71.82 c1=A, c2=a 5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。 解: #include void main() { float r,h,C1,Sa,Sb,Va,Vb; scanf("%f,%f",&r,&h);

C语言程序设计(第二版)习题参考答案

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

运筹学在配料问题中的应用 C-2

运筹学在配料问题中的应用 罗启川(1015030003),徐立飞(1015030129),龙雪松(1015030065)【西昌学院 工程技术学院 10级水利水电1班,四川 西昌 615013】 【摘 要】本文是通过对运筹学在配料问题中的应用进行分析研究,解决配料 问题中最低成本的最优配料方案。通过对数据的分析与建模,经过软件WinQSB 的数据处理,得到最低成本的最优配料方案。本文运用运筹学对最低成本下最优配料的影响,掌握运筹学的基本概念、基本原理、基本方法和解题技巧,对于一些简单的问题可以根据实际问题建立运筹学模型及求解模型,最终通过WinQSB 软件得出结论。 【关键词】运筹学 配料问题 WinQSB 软件 灵敏度分析 通过对此次对运筹学的学习我掌握了运筹学的基本概念、基本原理、基本方 法和解题技巧,并掌握了WinQSB 软件,对于一些简单的问题可以根据实际问题建立运筹学模型及求解模型。运筹学对我们以后的生活也将有不小的影响,下面将运筹学运用到实际问题上学以致用。 一、问题描述 【案例C-2】配料问题 某饲料公司生产肉用种鸡配合饲料,每千克饲料所需营养质量要求如表C -4所示。 表C-4 : 公司计划使用的原料有玉米,小麦, 麦麸,米糠,豆饼,菜子饼,鱼粉,槐叶粉,DL-蛋氨酸,骨粉,碳酸钙和食盐等12种原料。各原料的营养成分含量及价格见表C -5。 表C-5 :

公司根据原料来源,还要求1吨配合饲料中原料的含量为:玉米不低于400 kg,小麦不低于100 kg,麦麸不低于100 kg,米糠不超过150 kg,豆饼不超过100 kg,菜子饼不低于30 kg,鱼粉不低于50 kg,槐叶粉不低于30 kg,DL-蛋氨酸,骨粉,碳酸钙适量。(1)按照肉用种鸡公司标准,求1千克配合饲料中每种原料各配多少成本最低,建立数学模型并求解。 (2)按照肉用种鸡国家标准,求1千克配合饲料中每种原料各配多少成本最低。 (3)公司采购了一批花生饼,单价是0.6元/kg,代谢能到有机磷的含量分别(2.4,38,120,0,0.92,0.15,0.17),求肉用种鸡成本最低的配料方案。(4)求产蛋鸡的最优饲料配方方案。(5)公司考虑到未来鱼粉、骨粉和碳酸钙将要涨价,米糠将要降价,价格变化率都是原价的r %。试对两种产品配方方案进行分析。 说明:以上5个问题独立求解和分析,如在问题(3)中只加花生饼,其它方案则不加花生饼。 二、建模分析 (1)按照肉用种鸡公司标准,求1千克配合饲料中每种原料各配多少成本最低,建立数学模型并求解。由题目要求可知,目标是求成本的最小最优值,根据表C-4中每千肉用种鸡公司标准饲料所需营养质量要求含量数据和表C-5中提供的原材料价格数据, 设每千饲料所含各种原材料为x j ,Z表 示成本,Z= xj cj*且x j>=0,j=1,2……12。根据公司对玉米、小麦、麦 麸、米糠、豆饼、菜子饼、鱼粉、槐 叶粉八种原料的要求,在这个问题中 x 1 >=0.4,x 2 >=0.1,x 3 >=0.1,x 4 <=0.15, x 5 <=0.1,x 6 >=0.03,x 7 >=0.05, x 8 >=0.03,因此这个问题的数学模型可 归纳为: minZ=0.68*x1+0.72*x2+0.23*x3+0.2 2*x4+0.37*x5+0.32*x6+1.54*x7+0.3 8*x8+23*x9+0.56*x10+1.12*x11+0.4 2*x12; ① 3.35*x1+3.08*x2+1.78*x3+2.1*x4+2 .4*x5+1.62*x6+2.8*x7+1.61*x8>=2. 7 ② 78*x1+114*x2+142*x3+117*x4+402*x 5+360*x6+450*x7+170*x8>=135 ③ 78*x1+114*x2+142*x3+117*x4+402*x 5+360*x6+450*x7+170*x8<=145 ④ 16*x1+22*x2+95*x3+72*x4+49*x5+11 3*x6+108*x8<=45 ⑤ 2.3*x1+ 3.4*x2+6*x3+6.5*x4+2 4.1*x 5+8.1*x6+29.1*x7+10.6*x8>=5.6 ⑥ 1.2*x1+1.7*x2+ 2.3*x3+2.7*x4+5.1*x5 +7.1*x6+11.8*x7+2.2*x8+980*x9>=2.6 ⑦ 0.7*x1+0.6*x2+0.3*x3+1*x4+3.2*x5 +5.3*x6+63*x7+4*x8+300*x10+400*x 11>=30

相关文档
相关文档 最新文档