나는 두 가지 다른 C 문제를 해결하려고 노력하고 있으며 C가 어떻게 작동하는지 더 잘 이해하기 위해 도움과 조언을 얻고 싶습니다.
첫 번째 문제는 다음과 같습니다. 값 (x)이 배열의 첫 번째 (n) 요소 사이에 나타나는 횟수를 계산하고 해당 개수를 배열에서 x의 빈도로 반환하는 함수를 작성합니다. 따라서 전달되는 배열에 {5, 7, 23, 8, 23, 67, 23} 값이 포함 된 경우를 예로들 수 있습니다. n은 7이고 x는 23이면 배열의 처음 7 개 요소 내에서 23 개가 3 번 발생하므로 3의 값을 반환합니다.
지금까지 내가 가지고있는 것은 다음과 같습니다.
#include <stdio.h>
#define SIZE 20 /* just for example - function should work with array of any size */
int frequency (int theArray[], int n, int x)
{
int i;
int count = 0;
for (i = 0; i < n; i++)
{
if (theArray[i] == x)
{
count = count++;
}
}
return (count);
}
int main(void)
{
/* hard code n and x just as examples */
int n = 12; /* look through first 12 items of array */
int x = 5; /* value to find */
int numberFrequency;
long int theArray[SIZE] = {5,2,3,4,5,6,1,2,10,5,10,12,6,8,7};
numberFrequency = frequency (theArray[SIZE], n, x);
printf ("%i", numberFrequency);
return 0;
}
현재 런타임 오류 메시지가 표시되고 for 루프 함수와 관련이 있다고 생각합니다.
두 번째 문제는 정수를 양의 정수 거듭 제곱으로 올리는 함수를 작성하는 것입니다. 함수가 x의 n 제곱을 계산 한 결과를 나타내는 long int를 반환하도록합니다. C pow 라이브러리 함수를 사용하지 말고 재귀를 사용하지 마십시오!
지금까지 내 코드 :
#include <stdio.h>
int x_to_the_n (int x, int n)
{
int i;
long int result = 1;
if (n == 0)
{
return(result);
}
else
{
for (i = 0; i < n ; ++i)
{
/* equation here - How can I make (x*x*x*x*x*x,etc...? */
result = x*(n*x);
}
}
return (result);
}
int main(void)
{
int x =4;
int n =5;
long int result;
result = x_to_the_n (x, n);
printf ("%i", result);
return 0;
}
재귀를 사용할 수 없으므로 의문의 여지가 없습니다. 그래서 차선책은 for 루프라고 생각했습니다. 그러나 나는 (n)의 값을 기반으로 for 루프를 (x x x * x ....) 만드는 방법에 약간 갇혀 있습니다. 모든 도움과 조언을 주시면 감사하겠습니다!
첫 번째 문제에서는 배열 뒤에있는 요소를 함수의 매개 변수로 제공합니다.
long int 배열을 정의하고 int 배열이 필요한 함수에 전달합니다.
long int theArray[SIZE] = {5,2,3,4,5,6,1,2,10,5,10,12,6,8,7};
해야한다
int theArray[SIZE] = {5,2,3,4,5,6,1,2,10,5,10,12,6,8,7};
대신 :
numberFrequency = frequency (theArray[SIZE], n, x);
이 시도:
numberFrequency = frequency (theArray, n, x);
그리고 교체 :
count = count++;
와:
count++;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다