【发布时间】:2020-01-08 03:01:16
【问题描述】:
任务是读取从 0 到 9 范围内的 N 个数字,并找到输入数字的出现频率。除此之外,我需要找到最小值和最大值以及最常见的数字。至少需要使用 3 个函数(不允许存储输入))
到目前为止,我已完成查找出现次数以及输入的最小值和最大值。 我在查找最常见的数字和创建函数时遇到问题。我为每个数字创建了单独的变量来查找频率。 另外,这段代码似乎不是很好,如果您有更好的解决方案,请分享。
{
int n=0;
int max=0,min=9;
int freq0=0,freq1=0,freq2=0,freq3=0,freq4=0,freq5=0,freq6=0,freq7=0,freq8=0,freq9=0;
for (;;)
{
printf ("Please enter the number in range from 0 to 9 (to break enter: 11): ");
scanf ("%d",&n);
if (n==11)//to exit the loop 11 is setteled as a stop value
break;
if (n==0)
freq0++;
if (n==1)
freq1++;
if (n==2)
freq2++;
if (n==3)
freq3++;
if (n==4)
freq4++;
if (n==5)
freq5++;
if (n==6)
freq6++;
if (n==7)
freq7++;
if (n==8)
freq8++;
if (n==9)
freq9++;
if (n>max)
max=n;
if (n<min)
min=n;
}
printf ("Number 0 occured %d times\n",freq0);
printf ("Number 1 occured %d times\n",freq1);
printf ("Number 2 occured %d times\n",freq2);
printf ("Number 3 occured %d times\n",freq3);
printf ("Number 4 occured %d times\n",freq4);
printf ("Number 5 occured %d times\n",freq5);
printf ("Number 6 occured %d times\n",freq6);
printf ("Number 7 occured %d times\n",freq7);
printf ("Number 8 occured %d times\n",freq8);
printf ("Number 9 occured %d times\n",freq9);
printf ("highest %d \n", max);
printf ("smallest %d\n",min);
return 0;
}
【问题讨论】:
-
这里需要用到数组。这会将您的程序的行数除以大约 10。想象一下,如果您有 0 到 100 的数字而不是 0 到 9 的数字,您的程序会是什么样子。
-
...什么是“最常见的数字”?显示一个例子。 Edit你的问题。
-
总是,总是,总是检查
scanf()的返回值,看看它是否成功。如果有人输入了a而不是数字,或者只是输入了^D来触发文件结束怎么办? -
您是否应该在开头输入
N的值?它还说 using 3 个功能。到目前为止,您已经使用了 3 个函数:main、scanf、printf。 -
... 以及如果用户输入会发生什么,例如
12?