编写一个程序,从键盘先输入n的值,然后输入n个正整数,输出每个数出现的次数

输入:第一行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]);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-23
import java.util.Arrays;

public class Test {
public static void main(String[]args){
int length = Integer.parseInt(args[0]);
int a[] = new int[length+1];
a[length] = 100001;
for(int i=0;i<length;i++){
a[i] = Integer.parseInt(args[i+1]);
}
Arrays.sort(a);
int temp = 1;
for(int i=0;i<a.length-1;i++){
if(a[i]==a[i+1]){
temp++;
}else{
System.out.println(a[i]+":"+temp);
temp = 1;
}
}
}

}

追问

能用c++语言吗?

追答

c++很久没用了 工具也没有了 你看看理解就可以
排个序 然后再 从头往后 比较 a[i] a[i+1]
相等就让计数器+1 不相等就输出 重置计数器
结尾+个 100001 不然最后一位输不出来 就这么点东西 你肯定能写的