输入:第一行n(5<n<30)是一个整数,表示要输入整数的个数;第二行是n个整数,每个整数均小于100000输出:按照整数从小到大的顺序依次输出不同的整数及其出现次数,整数和出现次数之间用:分隔.
var a:array[1..30]of longint;
n,i,j,t:integer;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
i:=1; j:=1;
while i<n do
begin
write(a[i],':');
while (i<n)and(a[i]=a[i+1]) do begin inc(i); inc(j) end;
writeln(j); inc(i); j:=1;
end;
if i=n then writeln(a[n],':1');
end.
追问能用C++语言编这个程序吗?
追答#include<stdio.h>
void main()
{
long t,a[30];
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%ld",&a[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0,j=1;i<n-1;i++)
{
printf("%ld:",a[i]);
while(i<n-1&&a[i]==a[i+1]){i++;j++;}
printf("%d\n",j);
j=1;
}
if(i==n-1)printf("%ld:1\n",a[i]);
}
能用c++语言吗?
追答c++很久没用了 工具也没有了 你看看理解就可以
排个序 然后再 从头往后 比较 a[i] a[i+1]
相等就让计数器+1 不相等就输出 重置计数器
结尾+个 100001 不然最后一位输不出来 就这么点东西 你肯定能写的