모 님이 주기적으로 자게에 올리는 프로그래밍 근황 글을 보고 C언어에 관심이 쵸큼 생겨, 더듬거려가며 간단히 C언어를 조금 만져보고 있습니다. 하라는 VBA는 안 하고!!
근데 제가 컴맹이다 보니까, 처음부터 막히는 데가 생기는군요.
#include <stdio.h> unsigned int exponential (int a, int b) { int i; int result = a; for (i = 1; i < b; i++) { result *= a; }; return result; }; int main (int argc, char **argv) { //int a = (int)argv[1]; //int b = (int)argv[2]; int a = 2; int b = 3; int c = exponential(a, b); printf("%d\n", c); return 0; };
간단하게 명령행에서 인자로 숫자 2개를 받아 a^b를 계산하여 출력하는 프로그램을 짜려고 했는데, 인자를 받아들이는 곳에서 막혀 버렸습니다. 이거 해결하려면 그 포인터인가 뭐시긴가부터 먼저 좀 알아야 할 것 같은데, 맞나 모르겠네요. 중괄호나 문장 끝에 붙이는 ; 이것도 익숙하지 않고, 프로그램의 진입점인 main() 함수가 맨 아래인 것도 그렇고, 좀 헷갈리네요. 좋은 독학용 책이라도 추천받아야 할까봐요.
하여튼, 이런 거 만져보다 보니 파이썬이 얼마나 편한 언어였는지 새삼 깨닫게 되네요. 근데 난 지금 VBA를 만져야 하는데, 대체 뭐하는 건지…
추가 :
여러분들의 도움을 받아 다음과 같이 의도한 대로 동작하는 코드를 작성할 수 있었습니다. 감사합니다.
#include <stdio.h> #include <stdlib.h> unsigned int exponential (int a, int b); int main (int argc, char **argv) { if (argc != 2+1) { printf("Please enter 2 arguments together.\n"); exit(1); }; int a = atoi(argv[1]); int b = atoi(argv[2]); int c = exponential(a, b); printf("%d\n", c); return 0; }; unsigned int exponential (int a, int b) { int i; int result = a; for (i = 1; i < b; i++) { result *= a; }; return result; };
{
if( b == 0) return 1;
return a*expotential(a, b-1)
}
제곱은 재귀함수 처리 하면 편합니다..