【发布时间】:2020-07-27 13:32:48
【问题描述】:
我是编程的超级新手,我遇到了一个问题,我应该编写一个 C 程序来让用户输入一些数字并对输入的元素进行排序并找到它的中位数。一旦用户按下回车,它应该停止获取输入。 这是我的代码和 idk 出错的地方(顺便说一句,很抱歉问了这么简单的问题)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int i = 0;
int j,k,m,num;
int arr[20];
while(i<20 )
{
printf("Enter a number: ");
scanf("%d",&num);
if(num == '\n') break;
arr[i] = num;
i++;
}
n = sizeof(arr)/sizeof(arr[0]);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i] < arr[j])
{
k = arr[i];
arr[i] = arr[j];
arr[j] = k;
}
}
}
if(n%2 != 0)
{
printf("The median is %d", arr[n/2] ) ;
}
else printf("The median is %.2f", arr[(n-1)/2] + arr[n/2]/2.0);
return 0;
}
【问题讨论】:
-
使用
scanf("%d",&num);,您正在读取像123或456这样的字符串作为整数。但随后您尝试将其用作字符if(num == '\n') break;。条件num == '\n'仅当您输入数字 10 时才会为真 -
通过使用
fgets()输入字符串。空(换行符除外)字符串终止程序,否则使用sscanf()处理它。 -
"else printf("介质为 %.2f", arr[(n-1)/2] + arr[n/2]/2.0);"在这一行,您可能想在求和周围使用括号