본문 바로가기

분류 전체보기

(297)
c언어 구조체 이해 우선 구조체는 객체 지향 프로그래밍 언어에서 말하는 클래스의 모체가 되는 것으로 여러 개의 자료형을 묶어서 새로운 자료형을 만들 수 있는 방법이다. 학생정보 구조체 만들기 #include #include struct student { >>하나의 구조체를 만들어줌 int number; char name[10]; double grade; grade>>학점 }; int main(void) { struct student s; s.number = 20150001; strcpy(s.name, "홍길동"); s.grade = 4.5; //여기까지 s라는 이름의 student구조체 변수는 이런 식으로 각각의 변수에 대한 값을 가지게 된 것이다 printf("학번: % d\n", s.number); printf("이름:..
배열과 포인터의 연관 및 다양한 문자열 함수 문자열은 c언어에서 다양한 문자 표현을 나타내기 위해 사용한다. 내부적으로 문자열은 char자료 타입의 배열로 이루어져 있으며 이것은 포인터와 같다고 할 수 있다 즉, 배열은 내부적으로 포인터와 동일한 구조이다. char array[10];이 선언된 후 10개 바이트만큼 우리 메모리에 자리 잡았다고 생각하면 된다. #include int main(void) { char input [1001]; gets(input); int count = 0; while (input [count]!= '\0') { count++; } printf("입력한 문자열의 길이는% d입니다", count); //문자열의 길이 맞는 표현 ㅇ printf("입력한 문자열은 % s입니다.", input); return 0; } 예를 들..
c언어 포인터 이해. //두 변수의 값을 서로 변환하는 포인터 함수 #include void swap(int* x, int* y) { int temp; temp = *x; *x = *y; *y = temp; } int main(void) { int x = 1; int y = 2; swap(&x, &y); printf("x = %d\ny = % d\n", x, y); return 0; } 출력은 x와 y값이 바뀐채로 출력이 된다. swap(&x, &y);를 통해 void swap(int* x, int* y) 함수가 호출이 되었고 swap 함수를 통해 x가 가리키는 값과 y가 가리키는 값이 바뀌게 되면서 x y의 값이 서로 바뀌었다. 포인터 추가 개념이해 int x = 70; int *y = &x; (x주소를 가리키도록 선언)가..
코드업 1019번 문제(원하는 자릿수(칸)만큼 출력) 년, 월, 일 을 입력받아 지정된 형식으로 출력하는 문제. #include int main(void) { int Y,M,D; scanf("%d.%d.%d",&Y,&M,&D ); printf("%04d.%02d.%02d",Y,M,D); return 0; } 와 같이 풀어야 하는데, 위문제에서 보이는 %02d는 2칸을 사용하여 출력을 하는데 한자리인 경우에는 앞에 0을 붙여 출력한다. 그럼 %04d는 ? 4칸을 사용하여 출력을 한다. 한자리인 경우에는 앞에000을 붙여 출력을 한다.
코드업 기초100제 1018번(scanf 입력형태) 어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보는 문제이다. #include int main(void) { int h , m; scanf("% d:%d",&h,&m); 입력창에서 3:16과 같은 형태로 입력을 해주어야 한다. 평소 입력했듯이 공백을 두게 되면 printf("% d:%d", h, m); 출력 값에서 오류가 나게 된다. return 0; } #include int main(void) { int h , m; scanf("% d^%d",&h,&m); 3과 16을 입력해준다 하면 3^16으로 입력을 해주어야 정상적인 출력 결과를 얻을 수 printf("% d^%d", h, m); 있다. return 0; } scanf()는 지정한 형식에 따라 입력받는 함수이다. 따라서 입력받고..
코드업 1015번(선언한 자료형에 맞는 서식문자 사용) 실수 한 개를 입력받은 후 저장되어 있는 값을 소수점 셋째 자리에서 반올림한 후 소수점 이하 둘째 자리까지 출력하는 문제이다. #include int main(void) { float A; scanf("% f", &A); printf("%. 2f", A); %f 의 f앞에 .2를 붙여 줌 으로써 소수점 둘째자리 까지 출력한다는 명령을 내렸다. return 0; } #include int main(void) { float A; scanf("%lf", &A); printf("%lf", A); 출력이 에러가 뜨는 코드인데, 선언한 자료형에 알맞은 실수형 서식문자 f 를 사용하여야 한다. return 0; } #include int main(void) { double A; scanf("%lf", &A); 선언한..
배열 기반의 문자열 표현 11-2 문제 3 영단어를 입력받아 입력받은 영단어 중 아스키코드 값이 가장 큰 문자를 출력하는 문제이다. 처음 문제를 구상할때 전체적인 틀을 떠올리는 데에 성공했지만, 16행 17행 부분에서 문자 요소끼리는 대소 비교를 할 수 있나?라는 의문이 들어 결국 풀지 못했던 문제이다. 밑에 사진에 나온대로 여러 경우의 코드 문장을 작성해보며 궁금증을 해결하였다. 위 50행에서 문자가 컴파일되어 아스키코드값으로 출력될 수 있음을 알 수 있다. 가장 궁금하였던 것은 58행 부분인데, 숫자 값 변환 없이 대 소 비교를 할 수 있는지에 대한 것이었다. '조건 연산자'를 통해 대 소 비교를 해보았고, 그 결과 문자열 배열의 요소끼리도 먼저 % d를 통해 정수 값으로 변경해 주지 않고도 대 소 비교를 진행할 수 있다는 것을 알 ..
배열기반의 문자열 표현 문제 11-2(영단어 길이계산) -윤성우 열혈 c 프로그래밍- 문제 1 영단어를 입력받아 그 영단어의 길이를 계산하여 출력하는 프로그램을 작성하는 문제이다. 널문자가 문자열의 끝에 있으므로 이와 같이 문장을 구성할 수 있다. 위 37~39행의 과정은 영단어의 길이를 출력하는 과정이지, 문자열 배열의 길이를 출력하는 과정이 아니다. 위 문제를 풀던 중 반복문에 대한 개념이 헷갈려 반복문에 대한 고민을 해보았다. 위는 for반복문인데, is = 5가 될 때 for문을 탈출한다 왜냐하면 (is < 5)라는 조건식이 있기 때문이다. 그러면 9행에서 출력되는 is의 값은 4 일까? 그것은 출력 결과를 통해 아니라는 답을 얻을 수 있다. is = 5인 상태에서 for문을 나온 것이므로 위 9행의 출력 결과는 5 인 것이다. 문제 2 프로그램 사용..