3.字符串:x[]=mcdabhaad y[]=mavbmmcbn 求出:z[]=mab,即是把相同的部分给提取出来放到另外一个数组中输出
时间: 2023-04-08 22:01:37 浏览: 81
答案:可以使用双指针法,分别从x和y的第一个字符开始比较,如果相同则将该字符加入z数组中,然后两个指针同时向后移动,直到其中一个指针到达字符串末尾。具体实现可以参考以下代码:
```python
x = "mcdabhaad"
y = "mavbmmcbn"
z = []
i, j = 0, 0
while i < len(x) and j < len(y):
if x[i] == y[j]:
z.append(x[i])
i += 1
j += 1
else:
i += 1
print("".join(z)) # 输出mab
```
相关问题
function dydt=tongbufadianji(t,y) % 首先指定全局变量 %global a1 a2 a3 a4 Rf % 下面输入电机基本数据: r=2.9069E-03,Rfd=5.9013E-04,Rkd=1.1900E-02,Rkq=2.0081E-02;Ufd=24;w=314,Ll=3.0892E-04,Lmd=3.2164E-03,Lmq=9.7153E-04,Llfd=3.0712E-04,Llkd=4.9076E-04,Llkq=1.0365E-03, Laa0=1/3*(Lmd+Lmq)+Ll;Laa2=1/3*(Lmd-Lmq);Mab0=1/2Laa0;;Mab2=Laa2;Mafd0=2/3Lmd,Makd0=2/3Lmd,Makq0=Lmq,Lfd=Llfd+Lmd,Lkd=Llkd+Lmd,Lkq=Llkq+Lmq,Mfkd=Lmd; L=[ -(Laa0+Laa2cos(2wt)), -(-Mab0+Mab2cos(2(wt+2pi/3))), -(-Mab0+Mab2cos(2(wt-2pi/3))), Mafd0cos(wt), Makd0cos(wt), -Makq0sin(wt); -(-Mab0+Mab2cos(2(wt+2pi/3))), -(Laa0+Laa2cos(2(wt-2pi/3))), -(-Mab0+Mab2cos(2(wt))), Mafd0cos(wt-2pi/3), Makd0cos(wt-2pi/3), -Makq0sin(wt-2pi/3); -(-Mab0+Mab2cos(2(wt-2pi/3))), -(-Mab0+Mab2cos(2(wt))), -(Laa0+Laa2cos(2*(wt+2pi/3))), Mafd0cos(wt+2pi/3), Makd0cos(wt+2pi/3), -Makq0sin(wt+2pi/3); -Mafd0cos(wt), -Mafd0cos(wt-2pi/3), -Mafd0cos(wt+2pi/3), Lfd, Mfkd, 0; -Makd0cos(wt), -Makd0cos(wt-2pi/3), -Makd0cos(wt+2pi/3), Mfkd, Lkd, 0; Makq0sin(wt), Makq0sin(wt-2pi/3), Makq0sin(wt+2pi/3), 0, 0, Lkq] G=[ 2Laa2sin(2wt), 2Mab2sin(2(wt+2pi/3)), 2Mab2sin(2*(wt-2pi/3)), -Mafd0sin(wt), -Makd0sin(wt), -Makq0cos(wt); 2Mab2sin(2*(wt+2pi/3)), 2Laa2sin(2*(wt-2pi/3)), 2Mab2sin(2*(wt)), -Mafd0sin(wt-2pi/3), -Makd0sin(wt-2pi/3), -Makq0cos(wt-2pi/3); 2Mab2sin(2*(wt-2pi/3)), 2Mab2sin(2wt), 2Laa2sin(2*(wt+2pi/3)), -Mafd0sin(wt+2pi/3), -Makd0sin(wt+2pi/3), -Makq0cos(wt+2pi/3); Mafd0sin(wt), Mafd0sin(wt-2pi/3), Mafd0sin(wt+2pi/3), 0, 0, 0; Makd0sin(wt), Makd0sin(wt-2pi/3), Makd0sin(wt+2pi/3), 0, 0, 0; Makq0cos(wt), Makq0cos(wt-2pi/3), Makq0cos(wt+2pi/3), 0, 0, 0] % 下面进行曲线拟合: R=[-r, 0, 0, 0, 0, 0; 0, -r, 0, 0, 0, 0; 0, 0, -r, 0, 0, 0; 0, 0, 0, Rfd, 0, 0; 0, 0, 0, 0, Rkd, 0; 0, 0, 0, 0, 0, Rkq] Uabc=[100,0,0,Ufd,0,0]'; y(1)=0; dydt=L(Uabc-wGy-Ry)这段代码有问题吗
这段代码有一些问题,例如:
1. 在定义全局变量时,应该在代码开头使用关键字 global,例如 global a1 a2 a3 a4 Rf。
2. 在第 9 行代码中,2/3Lmd、2/3Lmd、Lmq、Llfd、Llkd 和 Llkq 的表达式中应该使用乘号 *,例如 2/3*Lmd。
3. 在第 14 行代码中,Mab0 的表达式中应该加上乘号 *,例如 Mab0=1/2*Laa0;。
4. 在第 16 行代码中,L=[...] 后面的矩阵表达式中应该使用乘号 *。
5. 在第 34 行代码中,dydt=L(Uabc-w*G*y-R*y) 应该在等号左边定义输出变量 dydt。
6. 在第 34 行代码中,Uabc、G 和 R 的定义应该放在函数定义之外,或者使用函数嵌套定义。
需要修改的代码如下:
```matlab
function dydt=tongbufadianji(t,y)
global a1 a2 a3 a4 Rf
% 输入电机基本数据:
r=2.9069E-03;
Rfd=5.9013E-04;
Rkd=1.1900E-02;
Rkq=2.0081E-02;
Ufd=24;
w=314;
Ll=3.0892E-04;
Lmd=3.2164E-03;
Lmq=9.7153E-04;
Llfd=3.0712E-04;
Llkd=4.9076E-04;
Llkq=1.0365E-03;
Laa0=1/3*(Lmd+Lmq)+Ll;
Laa2=1/3*(Lmd-Lmq);
Mab0=1/2*Laa0;
Mab2=Laa2;
Mafd0=2/3*Lmd;
Makd0=2/3*Lmd;
Makq0=Lmq;
Lfd=Llfd+Lmd;
Lkd=Llkd+Lmd;
Lkq=Llkq+Lmq;
Mfkd=Lmd;
% 定义矩阵
L=[-(Laa0+Laa2*cos(2*w*t)), -(-Mab0+Mab2*cos(2*(w*t+2*pi/3))), -(-Mab0+Mab2*cos(2*(w*t-2*pi/3))), Mafd0*cos(w*t), Makd0*cos(w*t), -Makq0*sin(w*t);
-(-Mab0+Mab2*cos(2*(w*t+2*pi/3))), -(Laa0+Laa2*cos(2*(w*t-2*pi/3))), -(-Mab0+Mab2*cos(2*w*t)), Mafd0*cos(w*t-2*pi/3), Makd0*cos(w*t-2*pi/3), -Makq0*sin(w*t-2*pi/3);
-(-Mab0+Mab2*cos(2*(w*t-2*pi/3))), -(-Mab0+Mab2*cos(2*w*t)), -(Laa0+Laa2*cos(2*(w*t+2*pi/3))), Mafd0*cos(w*t+2*pi/3), Makd0*cos(w*t+2*pi/3), -Makq0*sin(w*t+2*pi/3);
-Mafd0*cos(w*t), -Mafd0*cos(w*t-2*pi/3), -Mafd0*cos(w*t+2*pi/3), Lfd, Mfkd, 0;
-Makd0*cos(w*t), -Makd0*cos(w*t-2*pi/3), -Makd0*cos(w*t+2*pi/3), Mfkd, Lkd, 0;
Makq0*sin(w*t), Makq0*sin(w*t-2*pi/3), Makq0*sin(w*t+2*pi/3), 0, 0, Lkq];
G=[2*Laa2*sin(2*w*t), 2*Mab2*sin(2*(w*t+2*pi/3)), 2*Mab2*sin(2*(w*t-2*pi/3)), -Mafd0*sin(w*t), -Makd0*sin(w*t), -Makq0*cos(w*t);
2*Mab2*sin(2*(w*t+2*pi/3)), 2*Laa2*sin(2*(w*t-2*pi/3)), 2*Mab2*sin(2*w*t), -Mafd0*sin(w*t-2*pi/3), -Makd0*sin(w*t-2*pi/3), -Makq0*cos(w*t-2*pi/3);
2*Mab2*sin(2*(w*t-2*pi/3)), 2*Mab2*sin(2*w*t), 2*Laa2*sin(2*(w*t+2*pi/3)), -Mafd0*sin(w*t+2*pi/3), -Makd0*sin(w*t+2*pi/3), -Makq0*cos(w*t+2*pi/3);
Mafd0*sin(w*t), Mafd0*sin(w*t-2*pi/3), Mafd0*sin(w*t+2*pi/3), 0, 0, 0;
Makd0*sin(w*t), Makd0*sin(w*t-2*pi/3), Makd0*sin(w*t+2*pi/3), 0, 0, 0;
Makq0*cos(w*t), Makq0*cos(w*t-2*pi/3), Makq0*cos(w*t+2*pi/3), 0, 0, 0];
R=[-r, 0, 0, 0, 0, 0;
0, -r, 0, 0, 0, 0;
0, 0, -r, 0, 0, 0;
0, 0, 0, Rfd, 0, 0;
0, 0, 0, 0, Rkd, 0;
0, 0, 0, 0, 0, Rkq];
Uabc=[100,0,0,Ufd,0,0]';
y(1)=0;
dydt=L*(Uabc-w*G*y-R*y);
end
```
#include <stdio.h> int MAB(int x,int y) { if (x > y) return x; else return(y); } void main( ) { int a=14,b=10,c; c = MAB(a,b); printf("%d\n",c); printf("%d\n",c/3); }
这段代码的输出结果为:
14
4
这是因为该代码定义了一个函数 MAB,用于比较两个数 x 和 y 的大小,然后返回其中较大的那个数。在主函数 main 中,定义了两个整型变量 a 和 b,分别赋值为 14 和 10,然后调用 MAB 函数,将返回的结果赋值给变量 c。因为 14 大于 10,所以 c 的值为 14。
接着,代码打印了变量 c 的值,即 14,然后将其除以 3,打印出结果 4。
阅读全文