我正在撰寫一個程式,我們需要在其中找到陣列中所選數字的頻率。數字由用戶輸入,他/她將選擇一個數字來計算其實體。我用這個程式做到了。
#include<stdio.h>
int main()
{
int n, frq=0, chn;
int num[10];
int i, j;
printf("Enter quantity of numbers to be inputted: ");
scanf("%d", &n);
for(i=0; i<n; i )
{
printf("Enter number[%d]: ", i 1);
scanf("%d", &num[i]);
}
printf("(");
for(j=0; j<n; j )
{
printf("%d, ", num[j]);
}
printf(")\n\n");
printf("Enter number to be counted: ");
scanf("%d", &chn);
for(i=0; i<n; i )
{
if(num[i]==chn)
{
frq ;
}}
printf("Instance count: %d", frq);
return 0;
}
它作業得很好。然后我們的老師讓我們做同樣的事情。但是這一次,我們將對程式將計算所選數字的實體的部分使用用戶定義的函式。這就是我所做的。
#include<stdio.h>
int freq(int n);
int main()
{
int n, frq=0, chn;
int num[10];
int i, j;
printf("Enter quantity of numbers to be inputted: ");
scanf("%d", &n);
for(i=0; i<n; i )
{
printf("Enter number[%d]: ", i 1);
scanf("%d", &num[i]);
}
printf("(");
for(j=0; j<n; j )
{
printf("%d, ", num[j]);
}
printf(")\n\n");
printf("Enter number to be counted: ");
scanf("%d", &chn);
frq = freq(n);
printf("Instance count: %d", frq);
return 0;
}
int freq(int n)
{
int chn, num[10], i, frq=0;
for(i=0; i<n; i )
{
if(num[i]==chn)
{
frq ;
}}
return(frq);
}
但是當我運行它時,它不會帶出假設的輸出。例如;
input quantity: >>>6
Enter number[1]: >>>1
Enter number[2]: >>>2
Enter number[3]: >>>3
Enter number[4]: >>>3
Enter number[5]: >>>3
Enter number[6]: >>>2
(1, 2, 3, 3, 3, 2, )
Enter number to be counted: >>>3
Instance count: 1
Process Finished.
>>>
它應該列印 3,但它列印了 1。我不知道我哪里做錯了,我需要你們的幫助。我真的很感謝你在這里提出的每一個答案和評論,我瀏覽了其中的每一個,這對我有幫助。再次感謝你!
ps. we were not allowed to use pointers or structures or idk in this program yet. Just in case some of you will suggest using them lol.
uj5u.com熱心網友回復:
要撰寫查找您需要傳遞的頻率的函式:
- 陣列
- 陣列的大小
- 號碼。
您只需在函式內部宣告陣列,認為它會神奇地擁有您在另一個函式中輸入的內容。不,它包含未確定的值并呼叫 UB
size_t freq(int *array, size_t size, int val)
{
size_t freq = 0;
while(size--) freq = *array == val;
return freq;
}
int main(void)
{
int num[] = {1, 2, 3, 3, 3, 2, };
printf("The %d is present in the array %zu times\n", 3, freq(num, sizeof(num)/sizeof(num[0]), 3));
}
或者相反(如@4386427 發現的那樣)“oneliner”
while(size--)
{
if(*array == val) freq = 1;
array ;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329345.html
標籤:arrays c function user-defined-functions frequency
