我的程序需要编写程序来分数并做其他事情。我已经编写了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);
}
}
}
答案 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