需要帮助格式化输出

时间:2014-02-25 05:36:43

标签: c output

问题写在输出屏幕的代码下面

#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

5 个答案:

答案 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)

  1. 对n [i]列表进行排序,使其

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

    显示为,

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

  3. 最后使用,

    if(no[i]!=no[i-1])
    {
       printf("\n\nFrequency of %c is %d",no[i],count);
    }
    
  4. 换句话说,使用二进制搜索算法。 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();
    }