编程训练实例
1.
你玩过牌吗?把13张牌反过来(背面朝上)按一定的顺序排列,先把你已经排好的牌第一张取出放在这叠牌的最底层,拿出第二张放在桌面上,然后将第三张取出又放在最底层,取出第四张放在桌子上……直到游戏结束,你依次取出放在桌子上的牌刚好为K,Q,J,10,9,8,7,6,5,4,3,2,A。问你一开始时这13张牌的顺序是怎样的?请你用MATLAB编程解决这个问题?请把程序附上。
%调用格式为chengxu
function chengxu
a={1,13};k=2;j=1;
b={'K','Q','J','10','9','8','7','6','5','4','3','2','A'};
%for c=1:4
for i=1:13
if mod(i,2)~=0
a{i}=b{j};
j=j+1;
end
end
for i=2:2:13
if mod(i,4)~=0
a{i}=b{j};
j=j+1;
end
end
for i=4:4:13
if mod(i,8)~=0
a{i}=b{j};
j=j+1;
end
end
a{8}=b{13};
a
或
function f=card()
a=1:13;
i=1;
for j=1:13
n=numel(a); %目前的片数;numle为元数的个数。
a(n+1)=a(1); %在多少张里面取第一张。
a(1)=[]; %将上面取出的第一张牌所在空格剪掉。
b(i)=a(1); %翻出来时桌面上亮出来的牌。
i=i+1;
a(1)=[];%随着i自增,取出现的空格为空。(即删除)。
end
c={'K','Q','J','10','9','8','7','6','5','4','3','2','A'};%因为10占两位,故用单元
d=cell(1,13);%由BC对应的数,将C中字符型的牌放入由B决定对应的D中。
for k=1:13
r=b(k);
d{r}=c{k};
end
f=d;
如果把第一张牌放在最底层,第二张放在最底层,取出第三张放在桌子上,依此类推,你最后把所有的牌取出刚好依次是A,2,3,4,5,6,7,8,9,10,J,Q,K.
%调用格式为card2
function f=card2()
a=1:13;
i=1;
for j=1:13
n=numel(a);
a(n+1)=a(1);
a(n+2)=a(2);
a(1)=[];
a(1)=[];
b(i)=a(1)
i=i+1;
a(1)=[];。
end
c={'A','2','3','4','5','6','7','8','9','10','J','Q','K'};
d=cell(1,13);
for k=1:13
r=b(k);
d{r}=c{k};
end
f=d;
课外拓展
按照取出第一张放到最后,然后抽出第二张放在桌子上,依次类推,并且桌子上的牌可以从键盘输入,依次类推,求原来牌的排列。
%调用格式为chengxu
function y=chengxu
a=input('请输入摆在桌子上的牌','s');
b=numel(a);
c=cell(1,b);
for i=1:b
c{i}=a(i);
end
e=[];
f=1:b;
i=1;
for j=1:b
n=numel(f); %目前的片数;numle为元数的个数。
f(n+1)=f(1); %在多少张里面取第一张。
f(1)=[]; %将上面取出的第一张牌所在空格剪掉。
e(i)=f(1); %翻出来时桌面上亮出来的牌。
i=i+1;
f(1)=[];%随着i自增,取出现的空格为空。(即删除)。
end
g=cell(1,b);%由BC对应的数,将C中字符型的牌放入由B决定对应的D中。
for k=1:b
r=e(k);
g{r}=c{k};
end
y=g;
2. 学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息保持体力,请你用MATLAB解决这个问题,并给出至少一个比赛日程表。(每队休息的场次越多越好,但每队都应得到的休息大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了若干场的球队比赛,这是不公平的)。
1.编写一个程序,要求输入五个整数,然后由小到大排序再输出.
1.1
%调用形式为:chengxu2([a b c d e f])
function f=chengxu1(x)
for i=1:4
for j=(i+1):5
if x(i)>x(j)
a=x(i);
x(i)=x(j);
x(j)=a;
end
end
end
f=(x);
1.2
%编写一个程序,要求输入五个整数,然后由小到大排序再输出
function h=chao1()
a=cell(1,5);
a=input('Please input five number:','s');
b=str2num(a)
fprintf('从小到大排序为:')
g=sort(b,'ascend');
disp(g)
1.3
%编写一个程序,要求输入五个整数,然后由小到大排序再输出
function chen1()
a=input('Please input Num1:');
b=input('Please input Num2:');
c=input('Please input Num3:');
d=input('Please input Num4:');
e=input('Please input Num5:');
f=[a b c d e];
fprintf('从小到大排序为:')
2. 将一个整型数组的元素按逆序重新存放(如原序为:8,6,5,4改为:4,5,6,8)。
2.1
% 将一个整型数组的元素按逆序重新存放
%调用形式为:chengxu2([a b c d……n])
function f=chengxu2(x)
a=numel(x);
b=fix(a/2);
for i=1:b;
j=a-i+1;
t=x(i);
x(i)=x(j);
x(j)=t;
end
disp(x)
2.2
%将一个整型数组的元素按逆序重新存放
function chao2()
a=input('请输入一个数组:');
rot90(a,2)
fprintf格式3. 输入一个字符,如果是大写字母,则将其转换成小写并输出;若是小写则直接输出;若是非字母字符则打印:“Dataerror!”。
3.1
%输入形式为chengxu3('x')其中x为从键盘输入的数字或字母。
function chengxu3(x)
if x<=57&x>=48
fprintf('“Dataerror!”\n')
elseif x<=90&x>=65
fprintf('%c\n',x+32)
elseif x<=122&x>=97
x
end
3.2
function f=chao3
m=input('请输入一个字符:','s');
i=isletter(m);
if i==0
fprintf('“Dataerror!”\n')
else n=lower(m);
disp(n)
end
4. 输入一个整数,写一程序输出它是几位数。
%输入形式为chengxu4(x),x为数字。
function f=chengxu4(x)
i=0;
for j=1:10000 %此处表示可以容纳10000位数字的位数求解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论