2014-02-25 132 views
-1

问题被写入代码下面输出屏幕需要帮助到格式输出

#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的

是3

2频率的2是

3的频率是2

频率4是3

的5频率是4

的6频率是3

的7频率为1

的8频率是1频率的9

是3

+0

你最外层循环应该通过所有可能的数字(0〜9),而不是通过串的元素进行迭代。 –

+0

谢谢你们... 找到解决方案。问题解决了 – user3138350

回答

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]); 
0
  1. 排序N [1]列表,使得

    n[i] = 1, 7, 4, 8, 5, 1, 1, 2 
    

    出现,

    n[i] = 1, 1, 1, 2, 4, 5, 7, 8 
    
  2. 现在使用次数来计算出现的次数,你可以做谷歌那。

  3. 最后使用,

    if(no[i]!=no[i-1]) 
    { 
        printf("\n\nFrequency of %c is %d",no[i],count); 
    } 
    

换句话说,使用二进制搜索算法。 http://en.wikipedia.org/wiki/Binary_search_algorithm

+0

好的答案!二进制搜索是。 – Code

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(); 
} 
0

,你可以这样做: 保持处理元素的新阵列和处理新的元素之前检查是否存在新的数组元素。如果可用,则跳过该元素的过程。

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(); 
    }