问题写在输出屏幕的代码下面
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
int i,j,x,n,count;
char no[100],no1[100];
printf("Enter an array of numbers:- ");
scanf("%s",no);
strcpy(no1,no);
x = strlen(no);
for(i=0;i<x;i++)
{
count = 0;
for(j=0;j<x;j++)
{
if(no[i]==no1[j])
count++ ;
}
printf("\n\nFrequency of %c is %d",no[i],count);
}
getch();
}
输出:
Enter an array of numbers:- 17485112
Frequency of 1 is 3
Frequency of 7 is 1
Frequency of 4 is 1
Frequency of 8 is 1
Frequency of 5 is 1
Frequency of 1 is 3
Frequency of 1 is 3
Frequency of 2 is 1
/ **所以问题是它显示了字符串的每个数字的出现。我想要的是它应该忽略重复的数字。 例如。这里1具有频率3和相同的线(频率为1为3)重复3次。 所以我不想重复它。
首先我做了这个
\\ if(no[i]!=no[i-1])
printf("\n\nFrequency of %c is %d",no[i],count);
如果重复的数字是连续的,则无效
然后我试了
\\for(n=0;n<i;n++)
\\{
\\if(no[i]!=no[i-n])
printf("\n\nFrequency of %c is %d",no[i],count);
解决方案: -
我按升序排列了字符串并使用了以下内容
if(no[i]!=no[i-1])
printf("\n\nFrequency of %c is %d",no[i],count);
输出:
输入一组数字: - 1236665554447182999352000
0的频率为3
1的频率是2
2的频率为3
3的频率为2
4的频率为3
5的频率为4
6的频率是3
7的频率为1
8的频率为1
9的频率是3
答案 0 :(得分:0)
试试这个
x = strlen(no);
int number_count[10] ={0};
int i=0,j=0;
for(i=0;i<x;i++)
{
for(j=0;j<=9;j++)
if(no[i] -'0' ==j)
number_count[j]++;
}
for(j=0;j<=9;j++)
if(number_count[j] != 0)
printf("\n\nFrequency of %c is %d",j,number_count[j]);
答案 1 :(得分:0)
对n [i]列表进行排序,使其
n[i] = 1, 7, 4, 8, 5, 1, 1, 2
显示为,
n[i] = 1, 1, 1, 2, 4, 5, 7, 8
现在使用count来计算出现次数,你可以谷歌那样做。
最后使用,
if(no[i]!=no[i-1])
{
printf("\n\nFrequency of %c is %d",no[i],count);
}
换句话说,使用二进制搜索算法。 http://en.wikipedia.org/wiki/Binary_search_algorithm
答案 2 :(得分:0)
main()
{
int i,x,count;
char numbers[100];
int noofoccurance[10]={0};
printf("Enter an array of numbers:- ");
scanf("%s",numbers);
x = strlen(no);
for(i=0;i<x;i++)
{
a[no[i]-48] = a[no[i]-48]+1;
}
for(i=0;i<10;i++)
{
if[noofoccurance[i]!=0]
printf(\nFrequency of %d is %d",i,noofoccurance[i])
}
getch();
}
答案 3 :(得分:0)
答案 4 :(得分:0)
试试这个
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
int i,j,x,n,count;
char no[100],no1[100];
printf("Enter an array of numbers:- ");
scanf("%s",no);
strcpy(no1,no);
x = strlen(no);
for(i=0;i<x;i++)
{
count = 0;
for(j=0;j<x;j++)
{
if(no[i]==no1[j])
{
count++ ;
no1[j] = 0.1;
}
}
if(count!=0)
printf("\n\nFrequency of %c is %d",no[i],count);
}
getch();
}