본문 바로가기
반응형

C언어129

[C언어 코딩문제] 최대공약수 구하기 (for문) 문제 두 정수를 입력받고 최대공약수를 반환하시오. 풀이 #include int max(int a,int b) { if (a>b) return a; else if (a 2022. 6. 22.
C언어 산술연산자 더하기 + 빼기 - 곱하기 * 나누기 / 나머지 % 2022. 6. 22.
[C언어] for문 예시 (1부터 10까지 출력) #include int main() { for (int i=1; i 2022. 6. 22.
C언어 논리연산자 1. 논리곱 (AND) 기호 : && 설명 : 양쪽 모두일 때 참 2. 논리합 (OR) 기호 : || 설명 : 둘 중 하나라도 참이면 참 3. 논리부정 (NOT) 기호 : ! 설명 : 참이면 거짓, 거짓이면 참 2022. 6. 21.
[C언어 코딩문제] 온도 변환 (함수) 문제 현재 온도를 섭씨(Celsius)와 화씨(Fahrenheit) 중 선택하고, 현재 온도를 입력하면 화씨는 섭씨로 섭씨는 화씨로 바꿔주는 코드를 작성하시오. 화씨와 섭씨의 관계는 아래와 같습니다. (함수를 사용하시오.) F=1.8xC+32 풀이 #include float CeltoFah (float num1) { float F; F=1.8*num1+32; return F; } float FahtoCel (float num1) { float C; C=(num1-32)/1.8; return C; } int main() { int choice; while (1) { printf("섭씨를 화씨로 바꾸려면 1을, 반대는 2를 입력하시오."); scanf("%d",&choice); if (choice==1) b.. 2022. 6. 17.
[C언어 코딩문제] 학점 출력 프로그램 (if문) 문제 0~100 사이의 점수를 입력하면 학점을 출력하는 프로그램을 작성하시오. 학점 기준은 아래와 같습니다. A : [90,100] B : [80,90) C : [70,80) D : [60,70) E : [50,60) F : [0,50) 풀이 #include int main() { int score; printf("점수를 입력하시오"); scanf("%d",&score); if ( (90 2022. 6. 16.
[C언어 코딩문제] 아스키코드 출력 문제 정수를 입력받고, 해당정수의 아스키코드를 출력하는 코드를 작성하시오. 정답 #include int main() { int num; printf("정수를 입력하세요"); scanf("%d",&num); printf("입력하신 정수 %d에 해당되는 아스키코드 문자는 %c 입니다.",num,num); return 0; } 2022. 6. 15.
[C언어 코딩문제] 서식문자를 이용한 문장 출력 문제 아래 문장을 출력하시오. 숫자는 서식문자를 사용하시오. "제 나이는 27살입니다. 키는 183cm 이고 몸무게는 73kg 입니다." 정답 #include int main() { printf("제 나이는 %d 입니다. 키는 %dcm 이고 몸무게는 %dkg 입니다.",27,183,73); return 0; } 2022. 6. 15.
[C언어 코딩문제] 구구단 문제 숫자를 입력받고, 해당 숫자의 구구단을 출력하시오. 정답 #include int main() { int A; printf("숫자를 입력하세요"); scanf("%d",&A); int B; for(B=1;B 2022. 6. 13.
[C언어 코딩문제] 두 정수 A,B 입력받고, 평균 출력 문제 두 정수 A,B 입력받고, 평균을 출력하는 프로그램을 작성하시오. 정답 #include int main() { int A,B; printf("첫 번째 정수를 입력하시오"); scanf("%d",&A); printf("두 번째 정수를 입력하시오"); scanf("%d",&B); double C; C=(double)(A+B)/2; printf("두 수의 평균은 %lf 입니다.",C); } 2022. 6. 10.
[C언어] 포인터의 포인터의 포인터 (다중 포인터) 포인터는 삼중 이상의 다중 포인터도 가능합니다. 어떤 변수의 주소를 저장하는 포인터의 주소를 저장하는 포인터의 주소를 저장하는 포인터의 주소를 저장하는.....포인터 아래는 삼중포인터 예시입니다. #include int main(void) { int num=3; int *p_num=# int **p_p_num=&p_num; printf("%p\n",p_num); printf("%p\n",p_p_num); printf("%p\n",*p_p_num); } 2022. 4. 7.
[C언어] 포인터의 포인터 포인터변수는 어떤 변수의 주소를 저장합니다. 포인터변수에도 주소가 있는데요. 포인터 변수의 주소를 저장하는 포인터는 포인터의 포인터입니다. 이를 이중포인터라과 부릅니다. **를 붙여서 정의합니다. #include int main(void) { int num=3; int *p_num=# int **p_p_num=&p_num; printf("%p\n",p_num); printf("%p\n",p_p_num); printf("%p\n",*p_p_num); } 2022. 4. 1.
[C언어] 다차원 배열 (2차원 배열) 2차원 이상의 배열을 만들 수 있습니다. 2차원 배열은 아래와 같이 선언합니다. int arr2[3][2] 3행 2열의 배열을 뜻합니다. 선언과 동시에 초기화하는 방법은 아래와 같습니다. #include int main(void) { int arr2[3][2]={ {1,2},{3,4},{5,6} }; } 아래 배열을 만든 것입니다. 1 2 3 4 5 6 일부를 비워두면 0으로 초기화됩니다. 2022. 3. 31.
[C언어] scanf 에서 숫자 입력과 문자열 입력 scanf 에서 숫자를 입력받을 때는 주소 연산자 &를 붙이고 문자의 경우는 붙이지 않습니다. #include int main(void) { int num; char str[10]; scanf("%d", &num); scanf("%s", str) } 숫자 입력을 받을 때 &를 붙이는 이유는 주소에 접근해서 값을 넣어주기 위함입니다. 주소에 접근하지 않고 값을 입력하면 함수에서 지역변수가 바뀔 뿐입니다. 문자열은 그 자체가 배열의 주소값입니다. &를 붙일 필요가 없습니다. 2022. 3. 31.
[C언어] 함수의 인자로 배열을 입력받을 때 다른 형태의 선언 함수의 인자로 배열을 입력받을 때 아래와 같이 한다고 배웠습니다. void PrintArr(int *p_ar) *연산자로 포인터변수를 선언해서 배열의 주소를 가져오는 것인데요. 아래와 같이 선언해도 됩니다. void PrintArr(int p_ar[ ] ) p_ar[ ] 을 다른 경우에 사용할 수는 없습니다. 함수의 인자로 받는 경우만 가능합니다. 2022. 3. 31.
[C언어] 포인터 변수의 크기는 그냥 포인터의 크기이다 배열의 주소가 저장된 포인터 변수의 크기는 배열의 크기와 다릅니다. 64비트 운영체제에서 포인터 변수의 크기는 8바이트입니다. #include int main(void) { int ar[3]={1,2,3}; int *p_ar=ar; printf("%ld\n",sizeof(ar)); printf("%ld\n",sizeof(p_ar)); } 2022. 3. 31.
[C언어] 포인터 배열 포인터를 배열 형태로 만드는 것도 가능하다. 배열의 각 요소는 주소값을 갖는다. #include int main(void) { int num1=1; int num2=2; int num3=3; int *ar[3]={&num1,&num2,&num3}; printf("%p\n",ar[0]); printf("%d\n",*ar[0]); printf("%p\n",ar[1]); printf("%d\n",*ar[1]); } 2022. 3. 31.
[C언어] 포인터 연산의 활용 배열 ar 이 있고, 이 배열 주소를 포인터 p_ar 에 저장했다고 하자. 이때 아래 세 코드의 의미가 같다 . ar[i]==*(ar+i)==*(p_ar+i) ar은 주소이고, i가 더해지면 i번째 요소의 주소가 된다. 해당 주소가 가리키는 값에 * 를 이용하여 접근하면 결국 ar[i] 과 같아진다. 아래는 예시이다. #include int main(void) { int ar[3]={10,20,30}; int *p_ar=ar; printf("%d\n",*(ar+1)); printf("%d\n",*(p_ar+1)); printf("%d\n",ar[1]); } 2022. 3. 31.
[C언어] 포인터의 연산 int 형 포인터에 1을 더하면, 값이 4 증가한다. 크기만큼 증가하는 것이다. double 이라면 8이 증가할 것이다. 아래는 예시이다. #include int main(void) { int num=3; int *p_num=# printf("%p\n",p_num); printf("%p\n",p_num+1); printf("%p\n",p_num+2); printf("%p\n",p_num+3); } 2022. 3. 31.
[C언어] 배열의 이름은 포인터 배열의 이름은 포인터입니다. 배열의 이름을 출력하면 주소가 출력됩니다. 아래와 같습니다. 주소가 가리키는 값에 접근하는 *연산자도 사용가능합니다. #include int main(void) { int ar[2]={10,20}; printf("%p\n",ar); printf("%p\n",&ar[0]); printf("%p\n",&ar[1]); printf("%d\n",*ar); printf("%d\n",*&ar[0]); printf("%d\n",*&ar[1]); } 2022. 3. 30.
c언어 조건문,반복문,함수 한눈에 보기 while (조건) {명령} for (초기값; 조건식; 변화식 ) {명령} if (조건) {명령} else if (조건) {명령} else {명령} 반환형 함수이름 (변수) {내용} 2022. 3. 30.
[C언어] 포인터란 무엇인가 어떤 변수가 정의되면 저장공간을 할당받습니다. 각 저장공간에는 고유한 주소가 있는데요. 이 주소를 저장하는 변수가 포인터변수입니다. 아래는 예시입니다. int main(void) { int num=3; int * pnt_num=# printf("%p \n",pnt_num); printf("%d",*pnt_num); } &는 주소를 가져오는 주소연산자입니다. num의 주소를 가져다가 pnt_num 에 저장하였습니다. 포인터변수를 정의할 때는 *를 붙입니다. 출력할 때 서식문자는 %p입니다. 포인터가 가리키는 주소에 저장된 값을 출력할 때는 * 연산자를 사용합니다. 2022. 3. 30.
[C언어] 문자열의 끝을 나타내는 널문자 문자열에서는 널문자 '\0' 를 문자열의 끝으로 인식합니다. 널문자의 아스키코드가 0이므로 0을 입력해도 결과는 같습니다. 아래는 예시입니다. int main(void) { char str[10]="abcdefgh"; printf("%s\n",str); str[4]=0; printf("%s\n",str); } 다섯번째 자리에 널문자를 넣었더니, 네번째 자리 까지만 문자열로 인식합니다. 2022. 3. 30.
[C언어] 배열의 길이 출력하기 정의된 변수가 몇 바이트를 사용하는지는 sizeof 함수로 알 수 있습니다. sizeof 함수는 배열에도 적용이 가능합니다. 길이가 3인 배열을 정의하고 sizeof 함수를 적용해봅시다. #include int main(void) { int a[3]; printf("%ld",sizeof(a)); } 12가 출력됩니다. 4바이트인 정수형 세개가 하나의 배열을 구성하고 있기 때문입니다. 전체 크기 12를 정수형 하나의 크기 4로 나눠주면 배열의 길이가 됩니다. #include int main(void) { int a[3]; printf("배열의 길이 : %ld",sizeof(a)/sizeof(int)); } 3이 출력됩니다. 2022. 3. 29.
[C언어] 배열 초기화하기 배열을 초기화 하는 방법은 네가지가 있습니다. 1. 배열 선언 후 각 원소 각각 입력 int main(void) { int ar[3]; ar[0]=10; ar[1]=20; ar[2]=30; } 2. 중괄호 이용하여 입력 #include int main(void) { int ar[3]={10,20,30}; } 배열 크기를 비워놓아도 결과는 동일합니다. #include int main(void) { int ar[]={10,20,30}; } 3. 배열의 길이 보다 초기값을 덜 선언 #include int main(void) { int ar[3]={10,20}; } 나머지 값은 0으로 초기화됩니다. 2022. 3. 29.
[C언어] 배열 정의하기 배열을 정의하는 방법은 아래와 같습니다. 자료형을 선언할 때 대괄호 안에 배열의 길이를 넣어주면 됩니다. 아래 배열은 자료형이 정수이고 길이가 5인 배열입니다. int ar[5]; 각 배열 요소는 0 부터 시작됩니다. ar[0] 이 첫번째 요소이고, ar[4] 가 마지막 요소인 다섯번째 요소입니다. 아래는 배열 정의 예시입니다. #include int main(void) { int ar[5]; ar[0]=10; printf("첫번재 요소: %d",ar[0]); } 2022. 3. 29.
[C언어] 재귀함수를 이용한 팩토리얼 함수 만들기 재귀함수를 이용하여 팩토리얼 함수를 만들어보면 아래와 같습니다. #include int factorial(int n) { if(n==0) return 1; else return n * factorial(n-1); } int main(void) { printf("5!=%d",factorial(5)); } 아래는 실행결과입니다. 2022. 3. 29.
[C언어] 재귀함수 재귀함수는 함수 안에 자기 자신을 호출하는 함수를 말합니다. 아래 예시에서 MyRecur 이 재귀함수입니다. #include void MyRecur(void) { printf("Recursive call! \n"); MyRecur(); } int main(void) { MyRecur(); } 위 코드를 실행할 경우 "Recursive call!" 이 무한히 출력됩니다. 2022. 3. 28.
[C언어] 지역변수를 종료시 까지 유지 (static 변수) - 지역변수 앞에 static 을 붙여주면 프로그램 종료 시 까지 사라지지 않는다. 단, 선언된 함수 내에서만 접이 가능하다. - 값을 입력하지 않으면 0으로 초기화된다. void myfunction(void) { static int num=10; } 2022. 3. 28.
[C언어] 전역변수 - 중괄호 밖에 정의된 변수로 프로그램 종료시 까지 존재 - 값을 입력하지 않으면 0으로 초기화됨 - 지역변수와 이름이 겹칠 경우, 지역변수로 접근 아래는 예시입니다. #include int num=10; int main() { printf("전역변수 : %d \n",num); int num=20; printf("지역변수 : %d \n",num); } 2022. 3. 28.
반응형