我正在尝试编写一个关于统计数据的程序

时间:2015-10-26 07:05:17

标签: c

我的程序需要编写程序来分数并做其他事情。我已经编写了2个函数,1个用于输入分数(每行5个)并对其进行排序。现在我正在尝试计算得分的频率并将其作为图表打印出来。我写了一个函数,但它不起作用。任何人都教我如何修复。

有我的代码:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 30
int sort(const void *p, const void *q);
void output(int testscore[], int size);
void frequence(int testscore[], int size);
int main()
{
   int i;
   int testscore[SIZE] = {90, 85, 100, 50, 50, 85, 60, 70, 55, 55, 80, 95,         70, 60, 95, 80, 100, 75, 70, 95, 90, 90, 70, 95, 50, 65, 85, 95, 100, 65};
    for(i = 0; i < SIZE; i++) {
        testscore[SIZE];
    }
    printf("before sort\n");
    output(testscore, SIZE);
    qsort(testscore, SIZE, sizeof(int), sort);
    printf("\nafter sort\n");
    output(testscore, SIZE);
    return 0;
 }
int sort(const void *p, const void *q) {
    if (*(int*)p < *(int*)q) {
        return -1;
    }
    return *(int*)p > *(int*)q;
}

void output(int testscore[], int size) {
    int i;
    for(i = 0; i < size; ++i) {
        printf("%6d", testscore[i]);
        if ( i % 5 == 4 || ( i == size - 1)) {
            printf("%c", '\n');
    }
    else {
        printf("%c", ' ');

    }
   }

}
void frequence(int testscore[], int size) {
    int i, j, count = 0;
    char value;
    char frequency;
    printf("%15c %15c", "value", "frequency");
    printf("%15s %15s", "-----", "---------");
    for(i=0;i<SIZE;i++){
        count=1;
        for(j=i+1;j<=SIZE-1;j++){
            if(testscore[i]==testscore[j] && testscore[i]!='\0'){
                count++;
                testscore[j]='\0';
          }
        }
        if(testscore[i]!='\0'){
            printf("%d is %d times.\n",testscore[i],count);
            }
        }
}

1 个答案:

答案 0 :(得分:0)

我复制并运行时你的代码是正确的,你需要在main函数中调用频率。

但是有一些格式问题。

这是我在函数频率中使用的

void frequence(int testscore[], int size) {
int i, j, count = 0;
char value;
char frequency;
printf("\n");
printf("%5s %9s", "value", "frequency");
printf("\n");
printf("%5s %9s", "-----", "---------");
printf("\n");
for(i=0;i<SIZE;i++){
    count=1;
    for(j=i+1;j<=SIZE-1;j++){
        if(testscore[i]==testscore[j] && testscore[i]!='\0'){
            count++;
            testscore[j]='\0';
      }
    }
    if(testscore[i]!='\0'){
        printf("%3d     %d\n",testscore[i],count);
        }
    }
}

这是我得到的o / p ..希望这是你接受的

before sort
90     85    100     50     50
85     60     70     55     55
80     95     70     60     95
80    100     75     70     95
90     90     70     95     50
65     85     95    100     65

after sort
50     50     50     55     55
60     60     65     65     70
70     70     70     75     80
80     85     85     85     90
90     90     95     95     95
95     95    100    100    100

value frequency
----- ---------
 50     3
 55     2
 60     2
 65     2
 70     4
 75     1
 80     2
 85     3
 90     3
 95     5
100     3