본문 바로가기

반응형

학습공간/C, 프로그래밍기초

(10)

[10주차] 파일 입출력, 메모리 관리와 동적 할당 프로그래밍기초 연습문제 풀이 01. 파일의 읽기(read text)와 쓰기(write text) #include void main(){ FILE *fi = fopen("abc.dat", "rt"); FILE *fo = fopen("ccc.dat", "wt"); char a[6]; int i; for(i=0;ib) printf("%d - %d = %d\n", a, b, sub(a, b)); else printf("%d + %d = %d\n", a, b, add(a, b)); } 03. 점수를 입력받아 학점으로 출력하는 함수 만들기 #include int Sub(int x) { if(x>=90) printf("A"); else if(x>=80) printf("B"); else if(x>=70) printf(..
[9주차] 구조체와 사용자 정의 자료형 1, 2 (배열, 구조체, 포인터) 프로그래밍기초 연습문제 풀이 01. 학번/이름(문자), 국어/영어/수학/합계(정수), 평균(실수) 형태의 구조체를 선언하고 출력해보기 #include struct student { int bunho; char name[10]; int kor; int eng; int math; int sum; double ave; }; void main() { struct student std1; std1.bunho = 11; std1.name = "shim"; std1.kor = 90; std1.eng = 90; std1.math = 90; std1.sum = std1.kor + std1.eng + std1.math; std1.ave = std1.sum / 3; printf("---성적표---\n"); printf("-..
[8주차] 다차원 배열, 문자와 문자열 처리 함수 프로그래밍기초 연습문제 풀이 01. 일차원 정수 배열의 MIN, MAX 값 찾기 #include void main() { int i,A,B; int arr[5] = {50, 30, 70, 80, 90}; A=arr[0]; B=arr[0]; for(i=0; i arr[i]) A = arr[i]; if(B
[7주차] 포인터와 배열 함께 이해하기, 포인터와 함수에 대한 이해 (Call by Value & Call by Reference) 13장 포인터와 배열의 관계 - 배열 이름도 포인터이다. 단 그 값을 바꿀 수 없는 상수라는 점이 일반적인 포인터와의 유일한 차이점이다. 위 예제를 보면, a라는 배열(size = 5)에 0,1,2,3,4를 순서대로 담고 있다. 자 그럼 0번지 요소와 1번지 요소의 값을 보면 0, 1 이 나올 것이다. 그리고 & 연산자를 이용하여 각 각의 주소를 보니 1245036, 1245040 으로 나타나있다. 자료 형이 int 이므로 주소가 4byte 차이나는 것을 볼 수 있다. 그렇다면 세 번째 출력 문을 보니 배열의 이름 a를 출력하였다. 이를 통해 배열의 이름은 가장 첫 번째 0번지 주소와 같다는 것을 볼 수 있을 것이다. 다시 말하면 배열의 이름은 0번지의 주소. 다시 말해, a 라는 포인터 변수에 배열의 ..
[6주차] 1차원 배열, 포인터의 이해 10장 배열이란 무엇인가? - 많은 양의 데이터를 처리하는 경우 유용하게 사용할 수 있는 것이 배열이다. 예를 들어서 10층짜리 아파트의 각층별 사람 수를 구하는 프로그램을 짠다고 해보자. 그렇다면 변수를 선언할 때는 이러한 귀찮음이 따른다. 만약에 아파트의 층수가 10층이 아니라 20층, 또는 30층이라면 어떻게 하겠는가? 배열의 사용은 우리들이 저러한 끔찍한 일을 겪지 않도록 편의를 제공해 준다. 배열이라는 문법적 요소는 여러 개의 변수를 동시에 생성할 수 있는 특징을 지니기 때문이다. 1차원 배열의 선언 및 초기화 배열은 선언되는 형식에 따라서 1차원 구조로 선언할 수도 있고, 2차원 구조로 선언할 수도 있다. 지금은 1차원 배열의 경우를 살펴보겠다. 배열 요소 자료형(int) : 배열을 구성하는 ..
[5주차] 함수의 정의와 선언 그리고 호출, 지역변수 & 전역변수, 재귀함수의 호출 9장 함수를 정의하고 선언하기 - 함수에 대해서는 한번 설명 언급하였다. 본격적으로 함수에 들어가기에 앞서서 다시 함수의 형태를 봐 두길 바란다. 함수의 형태는, 1. 함수의 반환형 (리턴형) 2. 함수의 이름 3. 함수의 입력 형태 (인자 전달) 이 세 가지가 중요한 구성이다. 함수를 만들어야 하는 이유는? - 프로그래밍을 한다는 것은 복잡한 문제를 해결하는 것과 같다. 문제를 main이라는 하나 의 함수 안에서 해결하다 보면 복잡해질 뿐만 아니라 그만큼 더 어려워진다. 구현에 필요한 기능들이 어떤 것이 있는지 분석해서 각각을 독립적인 함수로 구현하고, 이들을 하나의 프로그램으로 완성시켜가야지만 좋은 프로그램을 쉽게 작성할 수 있는 것이다. 다양한 형태의 함수 정의하기 - 이제부터 main 함수가 아닌..
[4주차] 흐름의 분기 if else문과 continue, break문, switch문 8장 조건에 따른 흐름의 분기 - 예를 들어서 사칙연산이 가능한 계산기 프로그램을 구현한다고 가정해 보자. 1번을 누르면 덧셈을, 2번을 누르면 뺄셈을, 3번을 누르면 곱셈을, 4번을 누르면 나눗셈을.. 이렇게 프로그램은 순간 순간마다 요구하는 바가 달라질 수 있다는 것이다. 우리가 배운대로 하면 덧셈, 뺄셈, 곱셈, 나눗셈을 계산해서 한 번에 출력이 가능하다. 커피 자판기를 보면 동전을 넣은 후, “선택 하세요” 라는 빨간 불이 들어오면서 사용자의 입력을 기다린다. 여기까지는 공통으로 실행되는 부분이다. 그러나 그 다음부터 사용자의 선택에 따라 실행의 형태가 다양해진다. 즉 프로그램 흐름의 분기가 생기는 것이다. if 와 else - if문에 의한 조건적 실행 if 라는 단어는 “만약에 어떠한 조건이 ..
[3주차] prinf 함수 scanf 함수 조금 깊게, 반복문 6장 printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 - printf 함수는 문자열을 출력하는 함수이다. 그리고 특수 문자 출력도 가능하다. 이렇게 출력을 하면 앞집 강아지가 말했다. “멍! 멍!” 정말 귀엽다. 라고 출력이 되야 한다. 하지만 컴파일 시켜보면 에러 메시지가 뜨게 된다. 왜냐하면 컴퓨터는 문자열1과 문자열2를 인식 하는데 그 사이에 정체불명의 글귀가 끼어 있기 때문이다. 그렇다면 큰 따옴표 같은 특수문자들의 출력은 어떻게 할까? 출력하고자 하는 특수문자 앞에 \(백 슬래쉬)를 붙여서 출력하게 하면 된다. 다양한 종류의 특수 문자 (외울 필요는 없다. 필요할 때 참고) 특수 문자 의 미 \a 경고음 소리 발생 \b 백스페이스(backspace) \f 폼 피드(form ..
반응형