嘿傢伙我完成了這個基本的C程序,顯示一個有序集,最小值,最大值,平均和中位數的用戶誰輸入任何給定的數字。我遇到的問題是,在打印數字時,我必須使用諸如「3.2%f」之類的設置來設置標準數量的精度,我如何才能打印每個數字所需的最小小數位數?例如,如果我輸入5,5.5,-0.2313和4,我的程序將以-0.23,4.00,5.00和5.50的順序顯示它們。我怎樣才能讀取-2313,4,5和5.5?先謝謝您的幫助。控制精度的雙打
#include <stdio.h>
int findSize();
void sortArray(int size, double num[]);
double findAverage(int size, double num[]);
double findMedian(int size, double num[]);
void findLowtoHigh(int size, double num[]);
void findHightoLow(int size, double num[]);
int main()
{
while(1)
{
int size = findSize();
if(size <= 1)
{
return 0;
}
double num[size];
double lowest = 0;
double highest = 0;
double average = 0;
double median = 0;
fprintf(stdout, "\n");
sortArray(size, num);
findLowtoHigh(size, num);
findHightoLow(size, num);
average = findAverage(size, num);
median = findMedian(size, num);
fprintf(stdout, "\n\nLowest Value: %3.4f", num[0]);
fprintf(stdout, "\nHighest Value: %3.4f", num[size-1]);
fprintf(stdout, "\n\nAverage Value: %3.4f\n", average);
fprintf(stdout, "Median Value: %3.4f", median);
fprintf(stdout, "\n");
}
}
int findSize()
{
int size;
fprintf(stdout, "\nPlease enter size of the array: ");
scanf("%d", &size);
return size;
}
void sortArray(int size, double num[])
{
for(int i = 0; i <= size - 1; i++)
{
int j = i+1;
fprintf(stdout, "Please enter number %d: ", j);
fscanf(stdin, "%lf", &num[i]);
}
if(size > 1)
{
double holder = 0;
for(int y = 0; y < size - 1; y++)
{
for(int k = 0; k < size - 1; k++)
{
if(num[k] > num[k+1])
{
holder = num[k];
num[k] = num[k+1];
num[k+1] = holder;
}
}
}
}
}
void findLowtoHigh(int size, double num[])
{
fprintf(stdout, "\nFrom least to greatest: ");
for(int x = 0; x <= size - 1; x++)
{
fprintf(stdout, "%3.2f ", num[x]);
}
}
void findHightoLow(int size, double num[])
{
fprintf(stdout, "\nFrom greatest to least: ");
int reverse = size - 1;
while(reverse != -1)
{
fprintf(stdout, "%3.2f ", num[reverse]);
reverse--;
}
}
double findAverage(int size, double num[])
{
double average = 0;
for(int a = 0; a <= size - 1; a++)
{
average = average + num[a];
}
average = average/size;
return average;
}
double findMedian(int size, double num[])
{
double median = 0;
if(size % 2 == 0)
{
median = (num[size/2 - 1] + num[size/2])/2;
}
else
{
median = num[size/2];
}
return median;
}
我對C很新,你能解釋一下這樣做的更多嗎? – yaboi
添加的評論。注意:@John C解決方案對學習者來說是一個很好的解決方案。它不會得到你所問的,但更簡單,可能會達到你的總體目標。 OTOH,上述嘗試緊密地實現您的目標。 (當| x | <1.0時仍然領先0) – chux
謝謝!這是有效的,但是當打印小數點右側的項目時,它仍然會打印小數點。例如,5將打印爲5. – yaboi