matlab习题,自编程序实现,百分制与五分制的对应转换。

matlab习题,自编程序实现,百分制与五分制的对应转换。,第1张

name = input('学生姓名:\n','s');

score = input('学生成绩:\n');

if score>100 || score < 0

disp('输入错误')

return

end

if score>=90

s5=5;

elseif score >= 75

s5=4;

elseif score>= 60

s5=3;

elseif score>=40

s5=2;

else

s5=0;

end

fprintf('学生:%s ,5分制成绩为%d。\n',name,s5)

新建一个m文件,file-》new-》m—file,将下面程序粘贴并保存为

wholeaves

然后运行即可。

function wholeaves

%求解从一到n个人围成一圈,顺序排号。

%从第一个人开始报数(从1到m报数),凡报到m的人退出 ,并且下一个从1重新开始报数,求出出圈人的顺序。

n=input('请输入人数n: ');

m=input('请输入间隔m: ');

d=0;%

count=0;

a=[1:n];

while d<n

for i=1:n

if a(i)>0

count=count+1;

end

if count==m,

a(i)

a(i)=0;

count=0;

d=d+1;

end

end

end

一、生成独立可执行的程序(exe文件)步骤

1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++60,我基于VS 2003实现。

2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。

3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。

当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;

注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc

-mfilaname;

4、安装<matlab

path>\toolbox\compiler\deploy\win32目录下的MCRInstaller。

二、脱离matlab运行可执行程序

MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:

<matlab path>

\toolbox\compiler\deploy\win32

文件名为MCRInstallerexe。可将其拷贝到自己的文件夹中,(70以前的版本是mglinstallerexe)。

在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。

在其它没有安装matlab的机器上运行exe文件前:

首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。

其次是要将“MCRinstallerexe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。

如果没有,也可手动安装,添加的方法是:

右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。

注:在安装过程中会d出让安装MicrosoftNETFramework可以不用安装。

最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。

问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。

美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:

消除运行MATLAB生成的exe程序的dos黑屏的办法

基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:

方法一: 在命令窗口输入:

cd(prefdir)

edit compoptsbat

在打开的文件最后添加以下语句:

AVC环境下:

set

LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup

BLCC环境下:

set LINKFLAGS=%LINKFLAGS%

-subsystemwindows

C Borland:

set LINKFLAGS=%LINKFLAGS% -aa

保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了

方法二:使用suppress工具:

下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppressini文件,用记事本打开,然后将

其中“Name=testexe”中textexe的改为你生成的exe文件名。将suppressexe(有个关盘和显示器的图标),改后的

suppressini放到你生成的exe的同目录下。执行suppressexe或者您自己生成的exe可以了。当然您可以自己修改

suppressexe的名字,改为您自己想要的名字。

其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。

方法二的缺点就是要同时存在您生成的exe以及supressexe,必须在同一目录下。

clc

clear

x=-10:05:10;

for i=1:41

if x(i)>=0

y(i)=-3x(i)^2+5;

else

y(i)=3x(i)^2+5;

end

end

y

void __fastcall TForm1::Button1Click(TObject Sender)

{

TList L;

int N[7];

long T=time(0);

int iIndex;

T=T % 1000000;

L=new TList();

try

{

Label8->Caption="00";

Label9->Caption="00";

Label10->Caption="00";

Label11->Caption="00";

Label12->Caption="00";

Label13->Caption="00";

Label14->Caption="00";

Application->ProcessMessages();

iIndex=0;

for (int i = 0; i < 47; i++) {

L->Add((void )(i+1));

//Memo1->Lines->Add(i+1);

}

for (int m = 0; m <= 6; m++) {

for (int i = 0; i <= T; i++) {

random(time(0));

int j=rand();

int k=j % L->Count;

int iTmp=(int)L->Items[0];

L->Items[0]=L->Items[k];

L->Items[k]=(void )iTmp;

}

//Memo1->Lines->Add("-----------------------------");

//for (int i = 0; i <= L->Count-1; i++) {

// Memo1->Lines->Add((int)L->Items[i]);

//}

random(time(0));

int j=rand();

j=j%L->Count;

N[m]=(int)L->Items[j];

L->Delete(j);

AnsiString s;

switch (m) {

case 0:{

ssprintf("%22d",N[0]);

Label8->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 1:{

ssprintf("%22d",N[1]);

Label9->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 2:{

ssprintf("%22d",N[2]);

Label10->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 3:{

ssprintf("%22d",N[3]);

Label11->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 4:{

ssprintf("%22d",N[4]);

Label12->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 5:{

ssprintf("%22d",N[5]);

Label13->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

case 6:{

ssprintf("%22d",N[6]);

Label14->Caption=s;

Application->ProcessMessages();

Sleep(10);

break;

}

default:

;

}

}

//ssprintf("%22d-%22d-%22d-%22d-%22d-%22d-%22d",N[0],N[1],N[2],N[3],N[4],N[5],N[6]);

//Edit1->Text=s;

}

__finally

{

L->Free();

}

}

以上就是关于matlab习题,自编程序实现,百分制与五分制的对应转换。全部的内容,包括:matlab习题,自编程序实现,百分制与五分制的对应转换。、帮我编一个matlab程序、如何将MATLAB程序编译成独立可执行的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存