请问如何将下列C语言程序改成matlab中的m文件?

#include<stdio.h>voidexchange(int*num){for(inti=0;i<4;i++){if(num[i]<10){num[i]=0;}}}... #include <stdio.h>

void exchange(int *num)
{

for(int i=0; i<4; i++)
{
if(num[i] < 10)
{
num[i] = 0;
}
}

}

int main()
{
int i,a,b,c,d, number[4];

printf("请输入四个数字\n");

for(int i=0; i<4; i++)
{
scanf("%d",&number[i]);
}

exchange(number);

printf("修改后的数组为:\n");
for(int i=0; i<4; i++)
{
printf("%d ",number[i]);
}

}
展开
 我来答
penguinarbiter
2020-11-21 · TA获得超过186个赞
知道小有建树答主
回答量:183
采纳率:100%
帮助的人:49.6万
展开全部

法一:main.m脚本和exchange.m函数

法二:将main定义成函数

对于R2016b以前版本,脚本文件中不能定义函数,因此分为main.m脚本文件和exchange.m函数文件(函数文件名必须和函数名相同)两部分;

对于R2016b及以后的版本,脚本可以定义局部函数,这样可以将exchang.m的内容放在main.m中(必须放在main脚本末尾)

如果main.m定义成函数而不是脚本(一般不会这么做),可以不用分成两个文件,直接将exchange作为main的子函数(放在main函数后面),这时,如果要运行,需要在命令行调用main函数

运行结果

文本代码如下:

[1] main.m 脚本:

disp('请输入四个数字')

number = zeros(1, 4, 'int32');

for ii = 1:4

    number(ii) = input('');

end

number = exchange(number);

disp('修改后的数组为:');

for ii = 1:4

    disp(number(ii));

end

[2] exchang.m 函数

function num = exchange(num)


num(num < 10) = 0;


end

代码流程基本和C语言一样,有三个点不同:

[1] main脚本中的number = exchange(number),因为Matlab没有指针实现,需要用返回值覆盖原数组

[2] exchang函数采用了向量化实现,num(num < 10) = 0表示将num数组中所有小于10的元素置零,如果要贴近C语言的形式,可以用下面的代码:

function num = exchange(num)


for ii = 1:4

    if num(ii) < 10

        num(ii) = 0;

    end


end

[3] 下标变量不能用 i 或者 j 表示,可以用 ii,jj,k,m,n等,这是Matlab的遗留缺陷,i 和 j 本身是个全局变量(而且没有类似const这样的保护),表示单位纯虚数,如果用在循环中被修改值,可能造成不确定的错误计算结果

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式