2012-12-30 回答
clc
clear all
rm=10;%rm等于矩阵的行数
cm=10;%cm等于矩阵的列数
m=round(rand(rm,cm)*10)%m等于一个10x10的随机整数矩阵,每个元素在0~10之间
i1=1;%计数器1,这个用来显示一个数字在不同位置重复的次数
i2=0;%计数器2,记录重复过得数字的数量
s=[];%用来记录被重复的数字
for r_1=1:1:rm%逐行
for c_1=1:1:cm%逐列
if i1~=1%如果计数器不等于1,也就是说有两个或两个以上的数字相等
fprintf('\n %d cells are equal to %d,\n',i1,equal_number)
end
cell_1=m(r_1,c_1);%元素1数值
p_cell_1=[r_1,c_1];%元素1位置
i1=1;%重新把计数器归1
find(s==cell_1);%查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
a=size(find(s==cell_1));%查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
if a(2)==0 %查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
for r_2=1:1:rm%逐行
for c_2=1:1:cm%逐列
cell_2=m(r_2,c_2);%元素2数值
p_cell_2=[r_2,c_2];%元素2位置
if cell_1==cell_2 && (p_cell_2(1)~=p_cell_1(1)||p_cell_2(2)~=p_cell_1(2))%比较cell_1与cell_2是否相等,同时判断是否是同一元素
equal_number=m(r_2,c_2);%满足条件则这个位置的数字为被重复的数字
if i1==1
i2=i2+1;%计数器2,多了一个被重复过得数字
s(i2)=equal_number;%将这个被重复的数字计入矩阵s中
fprintf('(%d,%d)=(%d,%d)',r_1,c_1,r_2,c_2)
else
fprintf('=(%d,%d)',r_2,c_2)
end
i1=i1+1;%计数器2,这个被重复的数字多被重复了一次
end
end
end
end
end
end