当前位置:文档之家› 《计算机程序设计基础_精讲多练CC++》例题源码

《计算机程序设计基础_精讲多练CC++》例题源码

《计算机程序设计基础_精讲多练CC++》例题源码
《计算机程序设计基础_精讲多练CC++》例题源码

第1章程序的基本结构

例1-1第一个程序,在计算机屏幕上显示一句话。

// 例1-1:在屏幕上显示:This is my first program!

#include //包含基本输入输出库文件

using namespace std; //使用名字空间std

main() //主函数名

int

{

cout << "This is my first program! "; //屏幕显示语句

//表示程序顺利结束

return

0;

}

例1-2加法计算器程序。

// 例1-2:加法计算器程序

#include //包含基本输入输出库文件

using namespace std; //使用名字空间std

main() //主函数名

int

{

int x, y, sum; //定义三个变量

cout<<"Please input two numbers: "; //屏幕显示提示信息 cin>>x>>y; //输入两个变量的值

sum = x + y; //加法计算

cout << x << " + " << y << " = " << sum << endl; //输出运算结果

return

//表示程序顺利结束

0;

}

例1-3根据三角形的三个边长求三角形面积。

// 例1-3:求三角形面积

#include

#include //包含标准数学函数库

using namespace std;

// 定义area()函数,其函数的返回值和形式参数a, b, c都是双精度类型

double area(double a, double b, double c)

{

double s, t; //定义本函数中用到的变量s和t为可描述实数的双精度类型变量

s = (a+b+c)/2; //计算中间变量s

t = sqrt(s*(s-a)*(s-b)*(s-c)); //调用标准数学开平方函数

return t; //将运算结果t的值返回,通过函数名area带回函数调用处

}

// 主函数

main()

int

{

double x, y, z; //变量说明,定义三个可对实数进行操作的双精度类型变量 //调用area函数(参数使用几个确定的值)并将计算得到的结果直接输出

cout << "边长分别为3、4、5的三角形面积为:" << area(3, 4, 5) << endl;

cout<<"请分别输入其他任意三角形三条边长: ";

cin>>x>>y>>z;

//调用area 函数(参数为用户任意输入的值)并将计算得到的结果直接输出

cout << "三角形面积为:" << area(x, y, z) << endl;

return 0;

}

例1-4 计算下式的结果,其中x= -3 .5°,y= 6.7° ()

()

y x y x ++cos sin // 例1-4:计算三角函数

#include

#include

//包含标准数学函数库

using namespace std;

int main()

{

double x, y; //将角度单位由度转换为库函数所要求的弧度值

x=-3.5/180*3.14159;

y=6.7/180*3.14159;

//计算三角函数并输出

cout << sin(fabs(x)+fabs(y))/sqrt(cos(fabs(x+y))) << endl;

return 0;

}

例1-5计算保险经纪人月薪

假定每一名保险经纪人的月工资都由三部分组成:底薪+奖金+业务提成。

其中

奖金的颁发方法为:奖金为经纪人在公司的工作年数*10,即每年10元;

业务提成的颁发方法为:当月销售额的3%提成。

编程要求:当用户按照屏幕提示分别输入经纪人的底薪、工龄以及当月销售额后,程序计算并输出经纪人的月薪。

// 例1-5:计算保险经纪人月薪

#include

using namespace std;

int main()

{

//声明部分,定义程序中将用到的变量

double baseSalary, bonus, totalSale, additionalBonus, Salary;

int serviceYears;

cout<<"请输入底薪:";

cin>>baseSalary;

cout<<"请输入经纪人在公司的工作年数:";

cin>>serviceYears;

//计算奖金bonus

bonus=10*serviceYears;

cout<<"请输入经纪人当月销售额:";

cin>>totalSale;

//计算提成additionalBonus

additionalBonus=0.03*totalSale;

//计算经纪人的月薪Salary

Salary = baseSalary+ bonus+ additionalBonus;

cout<<"该经纪人的月薪为:"<

0;

return

}

第2章数据类型与表达式

例2-1算术运算

#include

using namespace std;

int main()

{

int x=7, y=3;

double d=7.0;

cout<=b的逻辑值是:"<<(a>=b)<

cout<<"关系表达式a

cout<<"关系表达式a==b的逻辑值是:"<<(a==b)<

cout<<"关系表达式a!=b的逻辑值是:"<<(a!=b)<

0;

return

}

例2-3计算圆的周长和面积(常变量的使用)

//例2-3 计算圆的周长和面积(常变量的使用)

#include

using namespace std;

int main()

{

const double pi = 3.14159;

double r;

cout<<"请输入圆的半径:";

cin>>r;

double circle, area;

circle = 2 * pi * r; // 计算圆的周长

area = pi * r * r; // 计算圆的面积

cout<<"半径为"<

cout<<"半径为"<

0;

return

}

例2-4整型数据的溢出

// 例2-4 整型数据的溢出

#include

using namespace std;

int main()

{

short a=32767; // 定义短整型变量并赋初值为短整型的最大值 cout<<"a="<

为这个最大短整型值加1,产生溢出

//

a++;

cout<<"a+1="<

0;

return

}

例2-5温度转换:输入一个华氏温度,计算并输出对应的摄氏温度值。

//例2-5 温度转换

#include

using namespace std;

int main()

{

double c, f;

cout<<"请输入一个华氏温度:";

cin>>f;

c=5.0/9.0 * (f-32); //温度转换公式

cout<<"对应于华氏温度"<

0;

return

}

例2-6大小写转换:输入一个字符,判断它是否为大写字母。如是,将其转换为对应的小写字母输出;否则,不用转换直接输出。

// 例 2-6:大小写转换

#include

using namespace std;

int main()

{

char ch;

cout<<"请输入一个字母: ";

cin>>ch;

if(ch>='A' && ch<='Z') ch=ch-'A'+'a';

cout<<"将大写转换为小写后,该字母为:"<

0;

return

}

例2-7转义字符的使用

//例2-7:转义字符的使用

#include

using namespace std;

int main()

{

cout<<"Hello\n"; //使用换行符

cout<<"1\t2\t3\t4\t5\n"; //使用制表符和换行符

cout<<"12345\b\b78\n"; //使用退格符和换行符

cout<<"\"hi!\", he said.\n"; //使用双引号和换行符

0;

return

}

例2-8找零钱问题:假定有伍角、壹角、伍分、贰分和壹分共五种硬币,商店在给顾客找硬币时,一般都会尽可能的选用硬币个数最少的方案。例如,当要给某顾客找七角二分钱时,会给他一个伍角,2个壹角和1个贰分的硬币。编写一个程序,当用户输入要找给顾客的零钱数(以分为单位),程序能够输出要找回的各种硬币数目,并且找回的硬币总个数最少。

// 例 2-8:找零钱问题

#include

using namespace std;

{

change; //存放零钱的变量

int

cout<<"请输入要找给顾客的零钱(以分为单位)";

cin>>change;

cout<<"找给顾客的五角硬币个数为:"<

change=change%50;

cout<<"找给顾客的壹角硬币个数为:"<

change=change%10;

cout<<"找给顾客的伍分硬币个数为:"<

change=change%5;

cout<<"找给顾客的贰分硬币个数为:"<

change=change%2;

cout<<"找给顾客的壹分硬币个数为:"<

return 0;

}

第3章程序的控制结构例3-1交换两个变量的值

// 例 3-1:交换两个变量的值

#include

using namespace std;

{

定义待交换的两个整型变量,并赋予初值

//

b=2;

int

a=1,

定义一个整型变量作为中间交换之用

//

int

tmp;

cout << "交换前:a= " << a << ", b= " << b << endl;

tmp = a;

a = b;

b = tmp;

cout << "交换后:a= " << a << ", b= " << b << endl;

0;

return

}

例3-2使用if语句判断学生成绩是否合格

// 例 3-2:判断成绩是否及格

#include

using namespace std;

int main()

{

int i;

cout<<"请输入(百分制)分数:";

cin>>i;

if(i>=60)

cout<<"及格"<

cout<<"不及格"<

0;

return

}

例3-3求一元二次方程ax2+bx+c=0的根,其中系数a, b, c为实数,由键盘输入。

// 例 3-3:解一元二次方程

#include

#include

using namespace std;

int main()

{

double a, b, c, delta, p, q;

cout << "请输入系数a, b, c = ";

cin >> a >> b >> c;

if(( a==0 ) && ( b==0 ) && ( c==0 )) // 最极端情况

cout << "方程的根可为任意值" << endl;

else if(( a==0 ) && (b != 0)) // 转换为一元一次方程情况

cout << "x1 = x2 = " << -c/b << endl;

else // 一般情况

{

delta = b*b-4*a*c;

p = -b/(2*a);

q = sqrt(fabs(delta))/(2*a);

if(delta >= 0) // 实根情况

cout << "x1 = " << p+q << endl << "x2 = " << p-q << endl;

else // 存在共轭复根情况

{

cout << "x1 = " << p << " + " << q <<"i"<< endl;

cout << "x2 = " << p << " - " << q <<"i"<

}

}

0;

return

}

例3-4计算1+2+3+…+100=?

// 例 3-4:计算1+2+3+…+100

#include

using namespace std;

int main()

{

int i=1, sum=0; // 循环初始条件

while(i<=100)

{

sum=sum+i; //

累加求和

i++; // 改变循环条件

}

cout << "1+2+3+…+100="<

0;

return

}

例3-5计算1+2+3+…+100=?

// 例 3-5:计算1+2+3+…+100

#include

using namespace std;

int main()

{

int i=1, sum=0; // 循环初始条件

do

{

累加求和

sum=sum+i; //

i++; // 改变循环条件 }while(i<=100);

cout << "1+2+3+…+100="<

0;

return

}

例3-6计算1+2+3+…+100=?

// 例 3-6:计算1+2+3+…+100

#include

using namespace std;

int main()

{

int sum=0;

for(int i=1; i<=100; i++) sum=sum+i; // 累加求和

cout << "1+2+3+…+100="<

return 0;

}

例3-7编写程序制作九九乘法表。

// 例 3-7:制作乘法表

#include

using namespace std;

int main()

{

int i, j;

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

{

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

cout << j <<"*"<< i <<"="<

cout << endl;

}

return 0;

}

例3-8编写一个程序,将学生成绩由百分制转换为优秀、良好、中等、及格和不及格的5级制成绩。转换标准为:

优秀:90~100分;

良好:80~89分;

中等:70~79分;

及格:60~69分;

不及格:60分以下。

// 例 3-8:将百分制的分数转换为5级制分数

#include

using namespace std;

int main()

{

grade;

int

cout<<"请输入(百分制)分数:";

>>grade;

cin

根据转换值进行分支选择

switch

(grade/10) //

{

case

10:

9:

case

cout<<"优秀"<

break;

case

8:

cout<<"良好"<

break;

7:

case

cout<<"中等"<

break;

6:

case

cout<<"及格"<

break;

default:

cout<<"不及格"<

}

0;

return

}

例3-9求100~200之间的素数

// 例 3-9:求100~200之间的素数

#include

using namespace std;

int main()

{

int m, n, flag;

cout<<"100~200之间的素数有:"<

for(m=100; m<=200; m++) // 逐个检验区间内各数是否为素数

{

flag=1; // 设置标志

for(n=2; n<=m/2; n++) // 检验某个数是否为素数

{

if(m%n==0)

{

flag=0; // 改变标志

break; // 若标志改变,则结束内层循环

}

}

判断标志

if(flag==0) //

continue; // 若标志改变,则提前结束本次外层循环cout<

}

return 0;

}

例3-10计算保险经纪人月薪

假定每一名保险经纪人的每月工资都由三部分组成:底薪+奖金+业务提成。其中

1)奖金的颁发方法为:

?如果经纪人已经在公司工作7年以下(含7年),奖金为每年10元;

?如果经纪人已经在公司工作7年以上,奖金为每年20元。

2)业务提成的颁发方法为:

?如果经纪人该月销售额在9999元以下(含9999元),没有提成;

?如果经纪人该月销售额在10000~49999元之间,可以得到3%的提成;

?如果经纪人该月销售额超过50000元(含50000元),可以得到5%的提成。

编程要求:当用户按照屏幕提示分别输入经纪人的底薪、工龄以及当月销售额后,程序计算并输出经纪人的月薪。

// 例3-10:计算保险经纪人月薪

#include

using namespace std;

int main()

{

//声明部分,定义程序中将用到的变量

double baseSalary, bonus, totalSale, additionalBonus, Salary;

int serviceYears;

cout<<"请输入底薪:";

cin>>baseSalary;

cout<<"请输入经纪人在公司的工作年数:";

cin>>serviceYears;

//计算奖金bonus

if(serviceYears <= 7)

bonus=10*serviceYears;

else

bonus=20*serviceYears;

cout<<"请输入经纪人当月销售额:";

cin>>totalSale;

//计算提成additionalBonus

if(totalSale < 10000)

additionalBonus=0;

else

if(totalSale < 50000)

additionalBonus=totalSale*(0.03);

else

additionalBonus=totalSale*(0.05); //计算经纪人的月薪Salary

Salary = baseSalary+ bonus+ additionalBonus; cout<<"该经纪人的月薪为:"<

}

例3-11编写计算阶乘n!的程序。

// 例 3-11:计算阶乘n!的值

#include

using namespace std;

int main()

{

第8章 微机原理习题库

一.填空题 1.类型码为()的中断所对应的中断向量存放在0000H:0058H开始的4个连续单元中,若这4个单元的内容分别为(),则相应的中断服务程序入口地址为5060H:7080H。 2.CPU在指令的最后一个时钟周期检测INTR引脚,若测得INTR为()且IF为(),则CPU在结束当前指令后响应中断请求。 3.从CPU的NMI引脚产生的中断叫做(),它的响应不受()的影响。 4.中断类型码为15H的中断,其服务程序的入口地址一定存放在()四个连续的单元中,若这四个单元的的内容为:66H、50H、88H、30H,则其服务程序的入口地址为()。5.中断控制器8259A中的中断屏蔽寄存器IMR的作用是()。 6.CPU响应可屏蔽中断的条件是()、()和()。 7.在8086/8088微机系统中,INT20H指令中断向量存放在()中。 8.CPU在响应中断时,首先是保护(),然后将中断服务程序入口地址送入()。9.在8086/8088微机中,实现CPU关中断的指令是(),实现开中断的指令是()。10.如果CPU同时接收到中断请求和总线请求,则CPU应先响应()。 11.当用8259A管理INTR中断时,要发出EOI命令结束中断是操作()命令字。12.执行INTn指令时,其中断类型号由()提供,响应INTR时,中断类型号由()提供,响应NMI时,中断类型号由()提供,执行BOUND指令时,中断类型号由( )提供。 13.INTR、NMI均属于外中断,其中INTR被称为()中断,NMI被称为()中断。 14.80486在实模式下,当某中断源的中断类型码为70H时,中断服务程序的偏移地址和段基址将分别填入()单元和()单元。 15.CUP复位时,由于()被清零,使从INTR输入的可屏蔽中断不被响应。 16.2片8259A级联可管理()个可屏蔽中断。 17.INTR输入是()有效。 18.级连系统中,从8259A中的INT引脚应与主8259A的()连接。 19.()时,使用8259A的CS2~CS0引脚。 20.用二片8259A级连后,CPU的可屏蔽方式硬中断可扩充到()级。

c语言程序设计-向艳-书上例题源代码教学提纲

第五章函数 1.定义一个求两个整数和的函数 int sum(x,y) int x,y; { int z; z=x+y; return(z); } 2.编写函数求两个数的最大值 #include float max(float x,float y) { float z; if(x>y) z=x; else z=y; return (z); } void main() { float a,b,c; scanf("%f%f",&a,&b); c=max(a,b); printf("max=&f\n",c); } 3.计算并输出一个圆台两底面积之和 #include float area(float x,float y) { float s; s=3.1415*(x*x+y*y); return s; } void printstar() { int i; for(i=0;i<30;i++) printf("*"); printf("\n"); } void main() {

float r1,r2,s; printstar(); scanf("%f,%f",&r1,&r2); s=area(r1,r2); printf("s=%.2f\n",s); printstar(); } 4.实参求值顺序的例子 #include int fun(int a,int b) { if (a>b) return 1; else if (a==b) return 0; else return -1; } void main() { int k=3,s; s=fun(k,++k); printf("s=%d\n",s); } 5.计算Σn i=1 i #include void main() { void s(int); int n; printf("input number\n"); scanf("%d",&n); s(n); printf("n=%d\n",n); } void s(int n) { int i; for(i=n-1;i>=1;i--) n=n+i; printf("n=%d\n",n); } 6.全局变量被“屏蔽” #include

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-???? -? ?=???? -??A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)

例6.6 对下列矩阵做各种排序。 185412613713-?? ??=?? ??-?? A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -? e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57;

第2章例题源程序

例2.1 计算表达式 i 27147cos 5-++? 的值,并将结果赋给变量x ,然 后显示出结果。 x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i) %计算表达式的值 例2.2 利用M 文件建立MYMAT 矩阵。 (1)启动有关编辑程序或MATLAB 文本编辑器(见第4章),并输 入待建矩阵: MYMAT=[101,102,103,104,105,106,107,108,109 ; 201,202,203,204,205,206,207,208,209; 301,302,303,304,305,306,307,308,309]; (2)把输入的内容存盘(设文件名为mymatrix.m)。 (3)在MATLAB 命令窗口中输入mymatrix ,即运行该M 文件,就会自动建立一个名为MYMAT 的矩阵,可供以后使用。 例2.3 建立5阶方阵A ,判断A 的元素是否能被3整除。 A =[24,35,13,22,63;23,39,47,80,80; ... 90,41,80,29,10;45,57,85,62,21;37,19,3 1,88,76] P=rem(A,3)==0 %判断A 的元素是否可以被3整 除 例2.4 在[0,3π]区间,求y=sin(x)的值。要求: (1)消去负半波,即(π,2π)区间内的函数值置0。

2 (2) (3π,32π)和(37π,38π)区间内取值均为sin 3 π。 方法1: x=0:pi/100:3*pi; y=sin(x); y1=(x2*pi).*y; %消去负半波 q=(x>pi/3&x<2*pi/3)|(x>7*pi/3&x<8*pi/3); qn=~q; y2=q*sin(pi/3)+qn.*y1; %按要求处理第 (2)步 方法2: x=0:pi/100:3*pi; y=sin(x); y1=(y>=0).*y; %消去负半波 p=sin(pi/3); y2=(y>=p)*p+(y=10 & A<=20) ans = 3 6 7 例2.6 建立一个字符串向量,然后对该向量做如下处理:

第十章 输入输出系统习题

第十章输入输出系统习题 一、单项选择题: 1、“总线忙”信号是由__ __建立的。 A.获得总线控制权的设备B.发出“总线请求”的设备 C.总线控制器D.CPU 2、在不同速度的设备之间传送数据__ __。 A.必须采用同步控制方式B.必须采用异步控制方式 C.可以选用同步方式,也可选用异步方式D.必须采用应答方式 3、挂接在总线上的多个部件___ _。 A.只能分时向总线发送数据,并只能分时从总线接收数据 B.只能分时向总线发送数据,但可同时从总线接收数据 C.可同时向总线发送数据,并同时从总线接收数据 D.可同时向总线发送数据,但只能分时从总线接收数据 4、总线从设备是____。 A.掌握总线控制权的设备 B.申请作为从设备的设备 C.被主设备访问的设备D.总线裁决部件 5、假设某系统总线在一个总线周期中传输4个字节信息,一个总线周期占用2个时钟周期,总线时钟频率为10MHz,则总线带宽是__ __。 A.10 MB/s B.20 MB/s C.40 MB/s D.80 MB/s 6、波特率表示传输线路上____。 A.信号的传输速率B.有效数据的传输速率 C.校验信号的传输速率D.干扰信号的传输速率 7、中断系统中的断点是指____。 A.子程序入口地址B.中断服务子程序入口地址 C.中断服务程序入口地址表D.中断返回地址 8、显示器的主要参数之一是分辨率,其含义是____。 A.显示屏幕的水平和垂直扫描频率 B.显示屏幕上光栅的列数和行数 C.可显示不同颜色的总线 D.同一个画面允许显示不同颜色的最大数目 9、下列选项中,能引起外部中断的事件是____。 A.键盘输入B.除数为0 C.浮点运算下溢D.访存缺页 10.CPU响应中断时,最先完成的两个步骤是_ __和保护现场信息。 A.开中断 B.恢复现场 C.关中断 D.不可屏蔽中断 11、在独立编址方式下,存储单元和I/O设备是靠来区分的。 A.不同的地址代码B.不同的地址总线 C.不同的指令和不同的控制信号D.上述都不同 12、计算机系统的输入/输出接口通常是__ __。 A.CPU与存储器之间的交界面B.存储器与打印机之间的交界面 C.主机与外围设备之间的交界面D.CPU与系统总线之间的交界面 13.根据连线的数量,总线可分为串行总线和_____ ___总线

第3章例题源程序

例3.1分别建立3×3、3×2和与矩阵A同样大小的零矩阵。 (1) 建立一个3×3零矩阵。 zeros(3) ans = 0 0 0 0 0 0 0 0 0 (2) 建立一个3×2零矩阵。 zeros(3,2) ans = 0 0 0 0 0 0 (3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵 ans = 0 0 0 0 0 0 例3.2建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。 x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 例3.3将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。 M=100+magic(5) 例3.4求4阶希尔伯特矩阵及其逆矩阵。 命令如下: format rat %以有理形式输出 H=hilb(4) H=invhilb(4) format short %恢复默认输出格式 例3.5求(x+y)5的展开式。 pascal(6) 例3.6先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。 A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;... 11,18,25,2,19]; D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数 例3.7 求方阵A的逆矩阵,且验证A与A-1是互逆的。

第10章例题源程序

例10.1 设系统的微分方程为: ?????==-t e x x t x x 5.02'22'1 试建立系统仿真模型。 例10.2 利用Simulink 构建函数曲线y=5t 2+16。 例10.3 利用Simulink 仿真求I=? +10)1ln(dx x x 。 例10.4 有初始状态为0的二阶微分方程x"+0.2x'+0.4x=0.2u (t), 其中u(t)是单位阶跃函数,试建立系统模型并仿真。 例10.5 PID 控制器是在自动控制中经常使用的模块,在工程应用中其标准的数学模型为 )()/11()(s E N s T s T s T K s U d d i p ++= 其中采用了一阶环节来近似纯微分动作,为保证有良好的微分近似的效果,一般选N ≥10。试建立PID 控制器的模型并建立子系统。 例10.6 利用使能子系统构成一个正弦半波整流器。 例10.7 利用触发子系统将一锯齿波转换成方波。 例10.8 采用S 函数实现模块y=nx ,即模块的功能是把一个输入信号n 倍以后再输出。 (1) 利用MATLAB 语言编写S 函数。程序如下: %************************************************* %S 函数timesn.m ,其输出是输入的n 倍 %************************************************* function [sys,x0,str,ts]=timesn(t,x,u,flag,n) switch flag, case 0 %初始化 [sys,x0,str,ts]=mdlInitializeSizes; case 3 %计算输出量 sys=mdlOutputs(t,x,u,n); case {1,2,4,9} %未使用的flag 值 sys=[]; otherwise %出错处理 error(['Unhandle flag=',num2str(flag)]); end %************************************************* %mdlInitializeSizes :当flag 为0 时进行整个系统的初始化 %************************************************* function [sys,x0,str,ts]=mdlInitializeSizes(T) %调用函数simsizes 以创建结构体sizes

verilog源代码第8.9章例题

第八章语法概念总复习练习 1)以下给出了一个填空练习,请将所给各个选项根据电路图,填入程序中的适当位置。 a s s i g n m o d u l e;~| &i n p u t o u t p u t i n p u t s o u t p u t s e n d m o d u l e A , B , C , D AOI ( A, B, C, D, F ) input A,B,C,D; output F; assign F = ((A&B)&(C&D)); endmodule

2〕 在这一题中,我们将作有关层次电路的练习,通过这个练习,你将加深对模块间调 用时,管脚间连接的理解。假设已有全加器模块FullAdder,若有一个顶层模块调用此全加器,连接线分别为W4,W5,W3,W1和W2。请在调用时正确地填入I/O 的对应信号。 module FullAdder(A,B,Cin,Sum,Cout); input A, B, Cin; output Sum, Cout; endmodule 3) initial begin end initial SEL=0; A=0; B=0; #10 A=1; #10 SEL=1; #10 B=1; $monitor (SEL , A ,B , ,F) ; reg A, B , SEL; wire F; A Sum W1 W2 W3 W4 W5 B Cin Count

endmodule 标准答案: module TestFixture reg A,B,SEL; wire F; MUX2M(SEL,A,B,F); initial begin SEL=0; A=0; B=0; #10 A=1; #10 SEL=1; #10 B=1; end initial $monitor(SEL,A,B,,F); endmodule 4)指出下面几个信号的最高位和最低位。 reg [1:0] SEL; input [0:2] IP; wire [16:23] A; 标准答案: MSB:SEL[1] MSB:IP[0] MSB:A[16] LSB:SEL[0] LSB:IP[2] LSB:A[23] 5)P,Q,R都是4bit的输入矢量,下面哪一种表达形式是正确的。 1)input P[3:0],Q,R; 2)input P,Q,R[3:0]; 3)input P[3:0],Q[3:0],R[3:0]; 4)input [3:0] P,[3:0]Q,[0:3]R; 5)input [3:0] P,Q,R; 标准答案:5) 6)请将下面选项中的正确答案填人空的方括号中。 1. (0:2) 2. (P:0) 3. (Op1:Op2) 4.(7:7) 5. (2:0) 6. (7:0) reg [7:0] A; reg [2:0] Sum, Op1, Op2; reg P, OneBit; initial begin Sum=Op1+Op2; P=1; A[ ]=Sum; .....

第4章例题源程序

例4.1 建立一个命令文件将变量a,b 的值互换,然后运行该命令文件。 程序1: 首先建立命令文件并以文件名exch.m 存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MA TLAB 的命令窗口中输入exch ,将会执行该命令文件。 程序2: 首先建立函数文件fexch.m : function [a,b]=exch(a,b) c=a;a=b;b=c; 然后在MA TLAB 的命令窗口调用该函数文件: clear; x=1:10; y=[11,12,13,14;15,16,17,18]; [x,y]=fexch(x,y) 例4.2 求一元二次方程ax 2+bx+c=0的根。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]); 例4.3 计算分段函数: cos(1)1010x x y x ?++=?=??≠? x=input('请输入x 的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y 也可以用单分支if 语句来实现: x=input('请输入x 的值:'); y=cos(x+1)+sqrt(x*x+1); if x~=10 y=x*sqrt(x+sqrt(x)); end

第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序

第6章软件编码 一、填空题(20小题) 1、源程序中加注释是帮助理解程序的重要手段,注释分为( )、( )两类。答案:序言性注释、功能性注释 2、通常考虑选用语言的因素有( )、( )、( )、( )和( )。 答案:项目的应用领域、软件开发的方法、软件执行环境、算法与数据结构的复杂性、软件开发人员的知识 3、从软件工程的观点,语言的工程特性是指( )、( )、( )和( )。 答案:可移植性、开发工具的可利用性、软件的可重用性、可维护性 4、编写操作系统、编译系统等系统软件时,可选用( )、( )、( )和( )等。 答案:汇编语言、C语言、Pascal语言、Ada语言 5、效率是一个( )要求,目标在( )给出。 答案:性能、需求分析 6、提高程序效率的根本途径在于选择良好的( )、良好的( ),而不是靠编程时对程序语句做调整。 答案:设计方法、数据结构与算法 7、语句构造的原则是( ),不能为了追求效率而使代码( )。 答案:简单直接、复杂化 8、程序设计语言的心理特性在语言中的表现形式为( )、( )、( )、( )和( )。 答案:歧义性、简洁性、局部性、顺序性、传统性 9、语言的心理特性在语言中的表现形式有:( )、( )、( )、( )和( )。 答案:歧义性、简洁性、局部性、顺序性、传统性 10、程序设计语言的简洁性是指人们必须记住的( )的数量。人们要掌握一种语言,需要记住的成分数量越多,简洁性越( )。 答案:语言成分、差 11、在软件的设计中占有极其重要地位的是软件功能结构,它是联系( )跟开发者的规格说明。 答案:用户 12、贯穿于软件生存期中的一个极为重要的问题是( )。 答案:软件质量 13、为了做好软件质量评价,必须在( )定义其质量需求。 答案:开发前

c++书中例题源代码第13章

【例13.1】使用预定义的插入符进行屏幕输出。 #include #include void main( ) { cout<<"The length of \"This a string\" is: " < void main( ) { int x=90; int *px=&x; cout<<"x="< void main( ) { cout<<'B'<<'E'<<'I'<<'J'<<'I'<<'N'<<'G'<<'\n'; cout.put('B').put('E').put('I').put('J').put('I').put('N').put('G').put('\n'); char c1='A',c2='B',c3='C'; cout.put(c1).put(c2).put(c3).put('\n'); } 【例13.5】分析下列程序的输出结果,注意该程序中write( )函数的用法。

第10章_MATLAB Simulink仿真软件_例题源程序

第10章 MATLAB Simlllink 仿真软件 例10.1 设系统的微分方程为: ' 12'0.522 e t x x t x x -?=??=?? 试建立系统仿真模型。 例10.2 利用Simulink 构建函数曲线y =5t 2+16。 例10.3 利用Simulink 仿真求I =1 0ln(1)d x x x +?。 例10.4 有初始状态为0的二阶微分方程x "+0.2x '+0.4x =0.2u (t ),其中u (t )是单位阶跃函数,试建立系统模型并仿真。 例10.5 PID 控制器是在自动控制中经常使用的模块,在工程应用中其标准的数学模型为 )()/1 1()(s E N s T s T s T K s U d d i p ++ = 其中采用了一阶环节来近似纯微分动作,为保证有良好的微分近似的效果,一般选N ≥10。试建立PID 控制器的模型并建立子系统。 例10.6 利用使能子系统构成一个正弦半波整流器。 例10.7 利用触发子系统将一锯齿波转换成方波。 例10.8 采用S 函数实现模块y =nx ,即模块的功能是把一个输入信号n 倍以后再输出。 (1) 利用MATLAB 语言编写S 函数。程序如下: %************************************************* %S 函数timesn.m ,其输出是输入的n 倍 %************************************************* function [sys,x0,str,ts]=timesn(t,x,u,flag,n) switch flag, case 0 %初始化 [sys,x0,str,ts]=mdlInitializeSizes; case 3 %计算输出量 sys=mdlOutputs(t,x,u,n); case {1,2,4,9} %未使用的flag 值 sys=[]; otherwise %出错处理

第1章练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。 A) 有零个或多个输入B) 有零个或多个输出C) 有穷性D) 可行性 二、填空题

C语言程序设计第二版第四章正文例题程序源码详细答案

(1)while循环实现十个整数和; #include #include #include #include int main(void) { int i,number,sum; sum=0; i=1; printf("请输入十个整数:\n"); while(i<=10) { scanf("%d",&number); sum+=number; i++; } printf("累加和为:%d\n",sum); return 0; } (2)for循环实现n个整数求和; #include #include #include #include int main(void) { int n,i,x; int sum=0; printf("请输入总共要输入数字的个数:"); scanf("%d",&n); printf("请输入整数:"); for(i=0;i

(3)输入n个数,输出最大值; #include #include #include #include int main(void) { int n; printf("请输入要比较数字的总数:"); scanf("%d",&n); int i,x; int max=0; for(i=0;i,输出比较数字最大值; #include #include #include #include int main(void) { int n,i,x; printf("请输入要比较数字的总数:"); scanf("%d",&n); int max; max=INT_MIN; for(i=0;i

第04章_MATLAB程序设计_例题源程序

第4章 MATLAB 程序设计 例4.1 建立一个命令文件将变量a,b 的值互换,然后运行该命令文件。 程序1: 首先建立命令文件并以文件名exch.m 存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB 的命令窗口中输入exch ,将会执行该命令文件。 程序2: 首先建立函数文件fexch.m : function [a,b]=exch(a,b) c=a;a=b;b=c; 然后在MATLAB 的命令窗口调用该函数文件: clear; x=1:10; y=[11,12,13,14;15,16,17,18]; [x,y]=fexch(x,y) 例4.2 求一元二次方程a x 2+b x +c=0的根。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]); 例4.3 计算分段函数: cos(1)1010x x y x ?+=?=??≠? x=input('请输入x 的值:');

if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y 也可以用单分支if语句来实现: x=input('请输入x的值:'); y=cos(x+1)+sqrt(x*x+1); if x~=10 y=x*sqrt(x+sqrt(x)); end y 或用以下程序: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); end if x~=10 y=x*sqrt(x+sqrt(x)); end y 例4.4输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)- abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else

第10章练习题

第10章练习题 一、填空: 1.SQL语句中删除一个表中记录,使用的关键字是( delete )。 2.数据库表中的每一行称为一条(记录)。 3.要关闭已打开的数据库连接,应使用连接对象的(close )方法。 4.关闭数据库的连接,应使用连接对象的(close)方法。 5.SQL语句中的选择语句,使用的关键字是( SELECT )。 6.使用SqlDataReader一次可以读取(1)条记录。 7.在https://www.doczj.com/doc/434029565.html,中,表示程序到数据的连接的对象为( Connection对象)。 8.、在https://www.doczj.com/doc/434029565.html,中,可以在DataSet中维护( DataRelation)对象的集合来管理表间 的导航关系。 9.在DataSet对象中,可通过( Tables )集合遍历DataSet对象中所有的数据表 对象。 10.在https://www.doczj.com/doc/434029565.html,中,通过执行Command对象的ExecuteReader方法返回的DataReader 对象是一种(只向前的只读的结果集)。 11.Microsoft https://www.doczj.com/doc/434029565.html,框架中的类主要属于( System.Data )命名空间? https://www.doczj.com/doc/434029565.html,对象模型包含(.NET数据提供程序)和(DataSet)两部分 13.在设置连接字符串时,参数Initial Catalog代表的含义是(数据库的名称)。 14.成功向数据库表中插入5条记录,当调用ExecuteNonQuery方法后,返回值为(5)。 15.属于DDL 语句(数据定义语句)( Create )、(Drop)和(Alter)。 16.若想从数据库中查询到student表和course表中的所有信息并显示出来,则应该调 用 17.命令对象的(ExecuteReader)方法 18.在https://www.doczj.com/doc/434029565.html,中,为访问DataTable对象从数据源提取的数据行,可使用DataTable 19.对象的(Rows)属性 20.DataAdapter 对象使用与(UpdateCommand)属性关联的Command 对象将DataSet 修 改的数据保存入数据源。 21.数据适配器对象使用与(InsertCommand)属性相关联的Command对象将DataSet 插入的数据更新入数据源。

第08章_MATLAB图形用户界面设计_例题源程序

第8章MATLAB图形用户界面设计 例8.1建立图8.1所示的图形演示系统菜单。菜单条中含有3个菜单项:Plot、Option 和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容如图8.1所示,其中Grid on和Grid off控制给坐标轴加网格线,Box on和Box off控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。Window Color控制图形窗口背景颜色。Quit控制是否退出系统。 screen=get(0,'ScreenSize'); W=screen(3);H=screen(4); figure('Color',[1,1,1],'Position',[0.2*H,0.2*H,0.5*W,0.3*H],... 'Name','图形演示系统','NumberTitle','off','MenuBar','none'); %定义Plot菜单项 hplot=uimenu(gcf,'Label','&Plot'); uimenu(hplot,'Label','Sine Wave','Call',... ['t=-pi:pi/20:pi;','plot(t,sin(t));',... 'set(hgon,''Enable'',''on'');',... 'set(hgoff,''Enable'',''on'');',... 'set(hbon,''Enable'',''on'');',... 'set(hboff,''Enable'',''on'');']); uimenu(hplot,'Label','Cosine Wave','Call',... ['t=-pi:pi/20:pi;','plot(t,cos(t));',... 'set(hgon,''Enable'',''on'');',... 'set(hgoff,''Enable'',''on'');',... 'set(hbon,''Enable'',''on'');',... 'set(hboff,''Enable'',''on'');']); %定义Option菜单项 hoption=uimenu(gcf,'Label','&Option'); hgon=uimenu(hoption,'Label','&Grid on',... 'Call','grid on','Enable','off'); hgoff=uimenu(hoption,'Label','&Grid off',... 'Call','grid off','Enable','off'); hbon=uimenu(hoption,'Label','&Box on',...

常见的fortran 例题源文件

1 !求解f(x1)=x1**3-2.0*x1**2+3.0*x1+4.0的泫截法迭代过程 program mian logical e real f,f0,f1,f2 real x0,x1, x2 integer i f(x1)=x1**3-2.0*x1**2+3.0*x1+4.0 e(f1,f2)=sign(f1,f2)==f1!表示a,b同号 do read(*,*)x1,x2 f1=f(x1) f2=f(x2) if (e(f1,f2))then print*,"这不是一个有效的数" else exit !只是退出这个循环而不是整个程序 endif Enddo !求解过程 f0=1e32 i=0 do while (abs(x1-x2)>le-5 .and. f0>1e-6) x0=x2-(x2-x1)/(f2-f1)*f2 !泫截法迭代过程 f0=f(x0) if(e(x1,x0))then x1=x0 f1=f0 else x2=x0 f2=f0 endif i=i+1 write(*,"(1x,i5.5,'x0=',f10.6,'f0=',f10.6)")i,x0,f0 enddo !结果 x0=(x1+x2)/2.0 write(*,"('root is',f10.6)")x0 pause end

2!输入一个三位数调用子函数程序进行逆排序 program main integer i,j,m write(*,*),"输入一个三位数" read*,m m=nimabi(m) write(*,*)m pause End function nimabi(i) integer i,a,b,c a=int(i/100) b=int((mod(i,100))/10) c=mod(i,10) nimabi=c*100+b*10+a !注意结果一定存在函数名中,不然读取不到结果End 3!将三个数进行从小到大排列的子例行子程序program main implicit none integer a ,b,c read*,a,b,c if (a>b) call we(a,b) if (b>c) call we(b,c) if(a>b) call we(a,b) print*,a,b,c pause end subroutine we(i,j) integer i,j,t if (i>j) t=i i=j j=t end !将三个数进行从小到大排列的内部过程 program main implicit none integer a ,b,c read*,a,b,c if (a>b) call we(a,b) if (b>c) call we(b,c) if(a>b) call we(a,b) print*,a,b,c pause Contains !说明为内部过程 subroutine we(i,j) implicit none!数据初始化说明,对已ijk必须有,不然有隐含规则的数值integer i,j,t if (i>j) t=i i=j j=t end end

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