3-1
#include <stdio.h> } |
▶풀이:
iPut이라는 변수에 입력값을 받아서 if문으로 작성한 프로그램입니다.
첫번째 조건은 0 == iPut으로 입력받은 값이 0인지 판단하고 0일경우 zero라고 출력해주는 조건입니다.
두번째 조건은 0 == (iPut%2)으로 입력받은 값이 짝수일경우 짝수라고 출력해줍니다.
세번째는 조건없이 위의 두경우를 제외하면 홀수가 남기때문에 두조건에 부합하지 않을경우 홀수라고 출력합니다.
3-2
#include <stdio.h> } |
▶풀이: 1번문제와 마찬가지로 iPut변수를 선언하고 if문을 이용해서 작성한 프로그램입니다.
첫번째 조건은 0을 출력하는 조건입니다.
두번째 조건은 입력받은 값이 0이상일 경우 양수임을 출력하는 조건입니다.
세번째는 별다른 조건없이 위의 두경우를 제외한 음수임을 뜻하므로 음수를 출력합니다.
3-3
#include <stdio.h>
|
▶풀이: iPut이라는 변수를 선언해서 입력받은 값을 if문으로 작성한 프로그램입니다.
조건은 단하나 0 == (iPut%100) && 0 == (iPut%4) 윤년을 확인하는 조건입니다. 입력받은 값이 100의 배수이고 4의 배수임을 확인하는 조건이며 And연산자로 2가지 조건이 모두 참일경우에만 윤년에 해당되며 출력을 해줍니다.
그외에는 윤년이 아니므로 조건없이 윤년이 아님을 출력합니다.
3-4
#include <stdio.h> |
▶풀이: 섭씨와 화씨온도를 구하는 프로그램입니다.
변수는 2가지를 선언했습니다.
하나는 화씨인지 섭씨인지를 구분하는 cTem이라는 char형 자료형의 변수입니다.
두번째는 온도를 입력받는 값입니다. 온도의 경우 소수점까지 표시가 가능하니 실수형 자료인 double형으로 선언했습니다.
입력받은 값은 if문으로 작성되었고 if문의 조건은 섭씨인지 화씨인지 판단합니다.
조건은 섭씨일경우 섭씨를 화씨로 바꾸어주는 수식을 포함시켜 출력하였고, 소수점 2번째자리까지 반올림하여서 출력되게 하였습니다. 대소문자 구분없이 C를 입력할 경우 해당조건에 부합되게 조건을 내걸었습니다.
두번째는 f또는 F로 입력했을 경우 화씨를 섭씨로 변환해주는 조건입니다. 첫번째 조건과 출력은 방식은 같습니다.
마지막으로 그 이외의 출력값은 잘못된 입력이라는 출력과 함께 프로그램이 종료됩니다.
3-5
#include <stdio.h>
|
▶풀이: 두개의 정수를 입력받는 iPut1 iPut2라는 변수를 각각 선언하고 입력받은뒤 if문으로 작성한 프로그램입니다.
iPut1값이 iPut2의 값보다 클경우 iPut1을 앞에 두고 그 차를 구합니다.
두번째는 조건없이 위의 경우를 제외하면 반대의 위치를 두고 그 차를 구합니다.
3-6
#include <stdio.h> } |
▶풀이: 세개의 숫자를 입력받기 위해서 iMax , iMid, iMin이라는 변수를 선언하여 3개의 숫자를 각각 입력 받았습니다.
입력받은 값은 2개의 if문을 작성하여 최대값을 구합니다. iMax라는 변수를 각각 iMid변수, iMin변수와 비교해서 iMax에 입력된 값보다 더 큰값을 가지고 있을 때에 iMax변수에 그 값을 입력하게 하였습니다.
마지막에 printf함수로 iMax변수를 출력하고 종료합니다.
3-7
#include <stdio.h>
|
▶풀이: 월소득을 입력받는 iPut변수를 선언하였고 소득세를 계산하기위해 실수형자료인 double type의 변수 dTax변수를 선언하였습니다. if~elseif문으로 작성하였고 각각의 조건은 다음과 같습니다.
먼저 각각의 소득세와 임금값은 만단위로 입력받게 하였습니다.
소득세 7%적용임금은 입력받는 임금값이 250초과일 경우 소득세를 계산하여 출력합니다. 소득세는 소수점 2자리까지 반올림하여 출력되게 하였습니다.
소득세 5%적용임금은 입력받는 임금값이 250이하일 경우 소득세를 계산하여 출력합니다.
소득세 3%적용임금은 입력받는 임금값이 150이하일 경우 소득세를 계산합니다.
소득세 미적용임금은 입력받는 임금값이 70만원이하일 경우 소득세를 계산합니다.
3-8
#include <stdio.h>
|
▶풀이: 1~100까지 숫자를 입력하기위해 반복문에서 숫자를 카운트할 수 있는 iCnt변수를 선언하였습니다.
중첩for문을 활용하였고 바깥에 있는 for문은 iCnt 초기값을 1로 설정하고 1씩 증가시켜서 100까지 반복되도록 설정하였습니다. printf함수로 값을 출력하되 개행문자를 사용하지않고 공백을 한칸 사용해서 각각의 변수사이의 공백을 주었습니다.
안쪽에 있는 for문은 iCnt의 값이 10의 배수일때 printf함수로 개행문자를 입력하게 하였습니다.
3-9
#include <stdio.h>
|
▶풀이: 값을 입력 받기위한 변수 iPut 변수와 입력받는 값을 카운트 하는 변수 iCnt변수 그리고 입력받은 값을 모두 더하는 iSum변수를 각각 선언하였습니다.
while문으로 반복문을 작성하였습니다.
여기서 조건은 iPut변수 즉 입력 받는 값이 0초과의 값이 입력받을경우에만 반복을 하며 0이 입력되면 반복문을 빠져나오게 하였습니다. 여기서 iPut변수선언과 동시에 1의 값으로 초기화한 것은 처음 반복문이 작동할 수 있게 초기값을 두었습니다.
값이 입력될때마다 iCnt의 값이 1씩증가하며 입력받은 값은 iSum에 계속 더해집니다.
iPut에 입력값이 0이 들어오게되면 iCnt의 값이 1더 증가하고 반복문이 종료됩니다.
마지막으로 printf함수로 입력받은 값의 갯수를 출력하고 iSum값을 입력받은 값의 갯수만큼 나누어서 출력합니다.
입력받은 값의 갯수는 마지막 0의 입력까지 포함되어있기 때문에 값을 -1해주어서 계산을 해줍니다. 그리고 나누기를 하기때문에 평균값을 구하는 식 앞에 double형으로 자료형타입을 명시적변환을 해주고 소수점 2번째 자리까지 반올림해서 출력되게 합니다.
3-10
#include <stdio.h>
|
▶풀이: 연산에 필요한 두개의 값을 입력받기 위해서 iNum1, iNum2변수를 각각 선언합니다. 그리고 연산자 입력을 받기 위해서 char type의 자료형변수 cPut변수를 선언합니다. 값을 2개를 입력받고 printf함수로 연산자의 문자형 입력을 유도하기 위해서 메시지를 아래와 같이 띄워줍니다.
p: [+] , s: [-] , m: [*] , d: [/] , r: [%%] q:종료
입력받은 문자형 자료는 대소문자 구분없이 수행하기 위해서 switch문에 각각의 case를 2개씩 둡니다.
입력받은대로 연산을 하여 출력을 하고 switch문을 탈출하는 break를 넣어 두었습니다.
여기서 뺄셈과 나눗셈의 경우 입력받은 두값을 if문으로 비교해서 큰값을 앞에두고 연산을 수행합니다.
마지막으로 연산자입력이 범위내에 없을 경우에는 default값으로 printf함수의 내용을 출력하고 종료합니다.
3-12
#include <stdio.h> int main() |
▶풀이: 값을 1씩 증가시켜주는 iCnt변수를 선언하고 증가되는 그값을 모두 더해주는 iSum변수를 선언합니다.
while문을 이용했는데 여기서 반복문에서 빠져나가는 조건은 iSum의 값이 1000을 이상이 되는 때로 설정해두었습니다. 그리고 iSum의 값을 더한뒤 iCnt값을 1씩 증가시키도록 하고 반복문을 돌립니다.
위의 조건이 거짓이 되면 빠져나오며 printf함수로 그값들을 출력합니다.
3-13
#include <stdio.h>
|
▶풀이: 입력받는 두값을 iNum1, iNum2 변수로 각각 선언한뒤에 그 값을 입력받습니다.
입력받은 값은 while문으로 반복합니다. 조건은 iNum1의 값이 iNum2보다 커지게되면 반복문을 빠져나옵니다.
if문으로 iNum1의 값이 2의 배수일때 즉 짝수일때에만 iSum에 그 값들을 모두 더합니다. iNum1은 입력받은 값에서 1씩 증가하며 조건이 거짓일때 모든 반복은 종료되며 printf함수로 iSum을 출력하고 프로그램은 종료합니다.
3-14
#include <stdio.h> |
▶풀이: 구구단의 단을 출력하기 위한 iDna변수를 선언하고 구구단의 값을 계산하는 iNum변수를 선언합니다.
먼저 printf함수로 구구단시작을 알리는 메시지를 출력합니다.
일반적인 구구단과 달리 구구단의 값을 계산하는 변수의 조건을 바깥쪽 for반복문에 둡니다.
안쪽 for반복문은 iDan의 초기 구구단값이 2단부터 시작하므로 2로 두고 그값이 하나씩 증가하여 6단까지 증가하게 두었습니다.
printf함수로 2단부터 6단까지 순차적으로 계산하는데 수평탭문자인 /t를 사용해서 각각의 단 사이의 공간을 확보합니다.
첫번째 줄의 수식의 출력이 끝나면 바깥쪽 for문으로 빠져나와서 개행문자를 출력한뒤에 위의 내용을 반복합니다.
실행결과는 가로로 정렬된 2~6단까지의 구구단이 출력됩니다.
3-15
#include <stdio.h>
|
▶풀이: 1~ 100까지의 소수를 구하기 위해서 1~100까지 순서대로 증가시키기 위한 iNum변수를 선언합니다.
iCnt 변수는 iNum의 값과 비교해서 소수에 부합되는 조건을 검사하기위한 함수 입니다.
iCnt2 변수는 각 숫자를 출력한뒤 5번째 출력을 하게되면 개행문자를 출력하기 위해서 선언한 변수입니다.
먼저 바깥쪽 for문으로 1~ 100까지 숫자를 검사하기위한 반복문을 작성합니다. 작성된 for문으로 iNum의 값을 1씩 증가시킵니다. 안쪽 for문은 바깥쪽에서 들어오는 iNum의 값과 비교해서 소수를 판단해줍니다.
여기서 iCnt 변수가 중요합니다. 소수의 판단기준은 1과 자신과 같은 숫자로만 나누어서 딱 떨어지는 숫자를 의미합니다. 따라서 비교해주는 iCnt의 값이 중요한데 여기서 iCnt의 시작값을 1이아닌 2로 시작해줍니다.그리고 iNum의 값까지만 비교할 수 있도록 iCnt의 값을 증가시키는 조건을 만들어 줍니다.(iNum의 값이 자신과 같은 값을 나누기위해서 증가시키는 것이므로 그값이 초과할 필요는 없기 때문입니다.) 그럼 안쪽 for문안에 if문을 하나 작성해서 첫번째 iNum의 값과 iCnt값을 나누었을때 그값이 딱 떨어지는지 조건을 겁니다. 그리고 if문안에 다시한번 iNum의 값과 iCnt의 값이 같은지 비교해봅니다.
(※소수의 판단기준이 자신의 값이외의 값으로는 나누어 떨어지지 않으며 자신의 값으로만 나누었을때 떨어지는 값이므로 비교해주는 값이 iCnt가 현재 iNum의 값까지의 수를 하나씩 비교를하며 나누었고 그 중 그값이 딱맞아 떨어지는게 자신의 숫자인지 비교를 해주는 조건이 2가지인 것입니다.)
두가지 조건에 모두 부합하면 출력을 하고 출력값이 몇개인지 계산하는 iCnt값을 하나씩 증가시킵니다.
그리고 다음 if는 별도로 값이 출력되었을때 그 값들이 5개까지 차면 개행문자로 정렬해주는 부분입니다.
마지막 else에서 break를 걸어주는 것이 중요한데 위에서 첫번째 if문에서 값이 iCnt와 비교해서 나누어 떨어지는데 그 값이 자기자신과 같지 않다면 이 정수는 소수에 속하지 않게 되기 때문에 for문을 중지하고 빠져나가야한다. 그렇지않다면 계속해서 연산을 해서 결국 자기값이랑 나누게되는 iCnt를 찾게되고 그 말은 1~100까지의 모든 정수를 출력해버리기 때문이다.
3-16
#include <stdio.h>
|
▶풀이: 피보나치수열을 계산하는 프로그램이다. 문제는 조금 어려울 수도 있지만 간단하게 생각하면 쉽게 풀릴 문제입니다. 피보나치 수열을 작성하는 프로그램의 핵심은 몇번째까지 출력을 하는지를 입력받았을때 그 입력받은 값에 맞게 출력을 하는 것이 중요합니다.
이 말은 풀어서 보면 반복문을 작성하되 한번 반복될때마다 출력되는 값은 한번이라는 의미입니다.
그럼 본격적으로 풀이를 해보면 다음과 같습니다.
먼저 피보나치 수열을 계산할 one,two,three 변수를 각각 선언합니다. 그리고 몇번째 출력인지 계산할 iNum변수와 몇번째 숫자까지 출력할지에 대한 입력을 받는 iCnt변수를 선언합니다.
먼저 피보나치수열이 시작될 초기값은 one의 값에 입력받습니다. 다음 iCnt에 몇번째 숫자까지 출력할지에 대해서 입력을 받는 지 작성합니다.
그리고 처음 피보나치 수열의 공식을 정리합니다. 초기값은 one변수에 저장이되고 두번째 값은 two에 저장됩니다. 그리고 세번째 값은 one의 값과 two의 값을 더한 값이 three에 저장됩니다. 이렇게 저장된 값중 초기값 one를 printf함수로 출력해주면서 iNum의 초기값을 1로 잡으며 첫번째 출력값이라는 1을 같이 출력해줍니다.
이제 반복문을 작성하는데 이미 첫번째 값을 출력했기 때문에 iNum의 값은 2부터 시작하게 됩니다. 그리고 몇번째 값까지 출력하는지 입력받는 iCnt값을 기준으로 iNum과 비교해서 iNum이 iCnt값보다 커지켠 반복문을 종료합니다.
iNum의 값은 하나씩 증가하게되면서 printf함수로 2번째 값인 two를 출력하게 작성합니다. 그리고 two는 이미 출력되었기 때문에 다음 값인 three를 출력하기 위해서 three값을 two에 저장합니다. 그러기위해서 two에 이미저장된 값을 잃지 않기위해서 제일 처음출력한 one값을 버리고 two의 값을 one에 저장합니다. two에 three값을 저장하고 three값에 앞의 두수인 one의 값과 two의 값을 저장합니다. 이렇게되면 계속해서 two의 값이 출력되며 two의 값은 계속 한번씩 피보나치 수열을 계산하며 증가합니다.
이렇게 피보나치 수열을 출력하는 프로그램이 완성됩니다.
나름 정리해서 작성했는데 부족한 부분이나 틀린부분있으면 지적해주시길 바랍니다.
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014년 3월 24일 서상우 업무일지[출석번호 13번] (18) | 2014.03.24 |
---|---|
20140321 박영주 업무일지[12번] (16) | 2014.03.21 |
2014년 3월 20일 업무일지 문대영[출석번호 11] (15) | 2014.03.20 |
2014년 3월 19일 업무일지 김화린 [출석번호 10번] (18) | 2014.03.19 |
2014년 03월 18일 일일업무일지 김해성 [출석번호 9번] (17) | 2014.03.19 |
2014년 3월 17일 업무일지 김진철[출석번호 8번] (17) | 2014.03.17 |
20140314 일일보고서 김재성 (출번7) (17) | 2014.03.14 |
2014년 3월 13일 수업일지입니다. 김용우[출석번호6번] (19) | 2014.03.13 |