输入测试用例之后,无返回结果?
错误代码
#include<stdio.h>
void mp(int n,int a[])
{
int i,j,k;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
}
int main()
{
int n,i,j,b[30]={0};
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
mp(n,a);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
a[i]=0;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;i<j;i++)
{
if(a[i]==a[j])
b[i]++;
}
if(a[i]!=0&&b[i]!=0)
printf("%d:%d\n",a[i],b[i]);
}
return 0;
}
题目如下
标题
统计正整数的个数
类别
流程控制
时间限制
1S
内存限制
1000Kb
问题描述
统计n个正整数中每个数出现的次数。
输入说明
第一行是一个整数n(5<n<30),表示要待统计整数的个数;
第二行是n个整数,每个整数均小于100000
12
输出说明
按照整数从小到大的顺序依次输出不同的整数及其出现次数,整数和出现次数之间用冒号(:)分隔。
输入样例
12
19 223 35 321 2 33 44 223 2 19 2 19
输出样例
2:3
19:3
33:1
35:1
44:1
223:2
321:1
#include<stdio.h>
void mp(int n, int a[])
{
int i, j, k;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
}
int main()
{
int n, i, j, b[30] = { 0 };
scanf("%d", &n);
int a[1024];
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
mp(n, a);
for (i = 0; i < n; i++)
{
if (b[i] == 0)
{
b[i] = 1;
}
for (j = i + 1; j < n; j++)
{
if (a[i] == a[j])
{
a[j] = 0;
b[i] += 1;
}
}
}
for (i = 0; i < n; i++)
{
/*for (j = 0; i < j; i++)
{
if (a[i] == a[j])
b[i]++;
}*/
if (a[i] != 0 && b[i] != 0)
printf("%d:%d\n", a[i], b[i]);
}
return 0;
}