검색결과 리스트
C언어에 해당되는 글 8건
- 2020.12.27 C언어 기초 13주차
- 2020.12.21 C언어 기초 12주차
- 2020.11.29 C언어 기초 9주차
- 2020.11.22 C언어 기초 8주차
- 2020.11.15 c언어 기초 7주차
- 2020.11.08 c언어 기초 6주차
- 2020.10.25 c언어 기초 4주차
- 2020.09.20 C언어 기초 1 주차
1. 구조체에 대해 조사하여 다음 문항에 답하시오. (1시간 소요)
가. 구조체가 무엇인지 설명하고 쓰임새에 대해 50자 이내로 정리해 보시오.
나. 구조체의 선언은 다음과 같다.
struct 구조체이름
{
구조체에 들어있는 변수들의 선언
};
이를 암기하시오. 또, 점의 좌표를 저장하기 위한 데이터형으로써, 구조체이름은 Point로 하고, 내용은 int x, int y를 가지는 구조체를 선언해 보시오.
다. '나'에서 선언한 구조체의 형태로 만들어지는 변수를 사용하기 위해 main 함수에서
struct 구조체이름 *사용할 변수명 = malloc(sizeof(struct 구조체이름));
과 같이 포인터 변수를 만드시오. 한편, 이를 암기하시오.
라. (1,2)의 좌표를 가지는 A라는 점이 있다. 이를 위해 사용할 변수명을 A로 하고,
A에 들어있는 x,y에 1,2를 넣어보시오.
예를들어 A->x = 10, A->y = 20 처럼 하면 됨
https://dojang.io/mod/page/view.php?id=419
https://dojang.io/mod/page/view.php?id=446 를 참조하시오.
마. (3,4)의 좌표를 가지는 B라는 점이 있다. 이를 위해 사용할 변수명을 B로 하고,
변수 선언과 동시에 값이 들어가도록 해 보시오.
예를들어 struct 구조체이름 *사용할변수명 = {10,20} 처럼 하면 됨.
2. 구조체는 배열로 만들수도 있다. 다음 문항에 답하시오. (2시간 소요)
가. 삼각형의 세 점의 좌표를 받기 위해 1번 문항에서 만들었던 Point라는 이름의 구조체로 3개의 배열을 만들어 보시오. https://dojang.io/mod/page/view.php?id=446 를 참조하시오.
세 점은 (Point[0]->x, Point[0]->y) (Point[1]->x, Point[1]->y) (Point[2]->x, CPoint[2]->y) 처럼 접근할 수 있도록 만드시오.
나. 세 점의 좌표 Point[0]->x Point[0]->y Point[1]->x Point[1]->y Point[2]->x Point[2]->y 를 임의로 입력하시오.
다. 두 점 (x1,y1) (x2,y2) 를 입력받아 두 점사이의 거리를 구하는 함수를 만드시오.
https://dojang.io/mod/page/view.php?id=427 를 참조하시오
라. '다'를 이용하여 (Point[0]->x, Point[0]->y) (Point[1]->x, Point[1]->y) 사이의 거리를 구하고 이를 a라 하시오.
(Point[1]->x, Point[1]->y) (Point[2]->x, Point[2]->y) 사이의 거리를 구하고 이를 b라 하시오.
(Point[2]->x, Point[2]->y) (Point[0]->x, Point[0]->y) 사이의 거리를 구하고 이를 c라 하시오.
마. '라'를 이용하여, 헤론의 공식에 a,b,c를 대입하시오. 그리고 이 삼각형의 넓이를 구하시오.
https://mathbang.net/541 의 하단의 노란색 박스를 참조하시오.
바. '마'에서 0,0 0,1 1,0을 넣어 0.5가 나오는지 확인하시오.
사. '바'에서 1,1 2,2 3,3을 넣으면 세 점이 일직선 위에 있기 때문에 넓이가 0이 되는데 이를 출력할수 있도록 해보시오.
3. 다음과 같은 원시자료가 있다.
학번 닉네임 무게 용돈 학점
1 오리 60 5000 D
2 돼지 100 3000 C
3 토끼 90 7000 B
4 새 80 1000 A
5 비둘기 50 2000 A
6 두꺼비 70 4000 B
이를 저장하기 위한 구조체를 구성하여 보시오. (1시간 소요)
가. char NickName[100], int Weight, int Money, char Point 를 가지는 구조체를 만들고 구조체의 이름을 정해보시오.
나. '가'에서 만든 구조체에 위 6마리 동물들의 데이터를 넣으시오. 단, -> 를 이용하여 일일이 넣으시오.
다. '나'의 방법으로는 닉네임을 넣을 수 없음을 확인하고, strcpy를 이용하시오. https://dojang.io/mod/page/view.php?id=419 를 참조하시오.
라. 데이터가 제대로 들어갔는지 출력하는 함수를 만드시오. 학번을 넣으면 그 학번을 가진 동물의 모든 데이터값(닉네임, 무게, 용돈, 학점)이 출력되도록 해보시오.
C언어 기초 12주차 (0) | 2020.12.21 |
---|---|
C언어 기초 9주차 (0) | 2020.11.29 |
C언어 기초 8주차 (0) | 2020.11.22 |
c언어 기초 7주차 (0) | 2020.11.15 |
c언어 기초 6주차 (0) | 2020.11.08 |
1. 다음 사항에 대해 조사하여 보시오.(1시간 소요)
가. 함수를 만들때 입력에 대해 Call By Value 가 무엇인지 조사하시오. 50자 이내로 적으시오.
Call By Value : 값에 의한 호출
함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.
원래의 값이 보존된 채로 복사해 처리하기 때문에 안전하다.
따라서 값을 담을 수 있는 모든 타입이 가능하다.
정수형, 문자형, 문자열, 실수형 그리고 주소값까지 모두 값이 될 수 있다.
나. int a = 10을 선언하고, 이 값을 입력으로 받는 함수를 만든뒤 그 함수에서는 제곱근을 출력하도록 해보시오. 이 값을 main함수에 있는 변수에 담은 뒤 출력해보시오
다. 함수를 만들때 입력에 대해 Call By Reference 가 무엇인지 조사하시오. 50자 이내로 적으시오.
Call By Reference : 참조에 의한 호출
원본의 주소값을 전달하므로, 원본을 변경할 수 있다.
이유는 주소값을 통해 원본에 접근하기 때문에 변경할 수 있다.
주소값을 저장할 수 있는 자료형을 제공 해야 Call By reference를 사용할 수 있다.
라. int* b = 20을 선언하고, 이 값의 주소를 입력으로 받는 함수를 만든뒤 그 함수에서는 제곱을 출력하도록 해보시오. 이 값을 main함수에 있는 변수에 담은 뒤 출력해보시오
마. '나'와 '라'의 차이에 대해 설명해보시오.
'나'는 원래의 값은 보존한 채로 함수내에서 복사하여 처리하므로 main함수 내 값은 변화가 없다.
'라'는 원본의 주소값을 전달하므로, 원본을 변경할수 있다.(주소값을 통해 원본에 접근하여 변경할 수 있다).
함수내에서 값을 바꾸면 main함수내에서도 값을 변경할 수 있게 된다.
2. 배열은 포인터로 취급할 수 있다. 이 사실을 이용하여 아래 문항을 해결하시오. (2시간 소요)
가. 메인함수에서 행벡터 {1,4,2,3,5,7,6,8,9,10} 를 int* matrix로 선언하시오.
나. matrix의 주소를 받는 새로운 함수를 선언하시오. 함수이름은 BubbleSort로 하시오.
다. 함수 내용은 버블정렬을 이용하여 행벡터의 숫자를 차례대로 정렬하는 기능을 갖도록 하시오.
라. 메인함수에서 BubbleSort를 호출한 후, 호출 전후의 행벡터의 모든 값을 출력해 보시오.
마. matrix의 값 10개를 받는 새로운 함수를 선언하시오. 함수이름은 Selection Sort로 하시오. 10개의 입력은 일일이 직접 써서 넘기시오.
바. 함수 내용은 선택정렬을 이용하여 행벡터의 숫자를 차례대로 정렬하는 기능을 갖도록 하시오.
사. 메인함수에서 Selection Sort를 호출한 후, 호출 전후의 행벡터의 모든 값을 출력해 보시오.
아. Call By Value와 Call By Referernce의 장단점을 100자 이내로 비교해보시오
Call By Value : 원래의 값을 보존할 수 있는 장점이 있기 때문에 원래의 값은 건드리면 안되는 안전한 프로그램에
사용하면 좋다
Call By Referernce : 본의 주소값을 전달하므로, 원본을 변경할수 있다.
(주소값을 통해 원본에 접근하여 변경할 수 있다).
그러기 때문에 원본의 값을 변경하기 때문에 위험 요소가 있다.
3. 이차정사각행렬도 포인터로 취급할 수 있다. 이 사실을 이용하여 아래 문항을 해결하시오. (2시간 소요)
가. 메인함수에서 이차정사각행렬을 만들고 {1,2,3,4}를 넣으시오.
나. 이차정사각행렬의 각 성분값을 받는 함수를 만드시오.
다. 이차정사각행렬을 함수에 넣으면 그 역행렬이 만들어지도록 해보시오. 다음식을 참조하시오.
라. 이차정사각행렬을 포인터를 이용하여 주소값을 넘기도록 해보시오.
마. 이차정사각행렬을 함수에 넣으면 그 역행렬이 만들어지도록 해보시오.
C언어 기초 13주차 (0) | 2020.12.27 |
---|---|
C언어 기초 9주차 (0) | 2020.11.29 |
C언어 기초 8주차 (0) | 2020.11.22 |
c언어 기초 7주차 (0) | 2020.11.15 |
c언어 기초 6주차 (0) | 2020.11.08 |
1. 함수의 선언 방식은
반환할자료형 함수명(입력1의자료형 입력1를받을변수명, 입력2를받을자료형 입력2를받을변수명...)
{
처리할 내용
return 반환할변수명
}
이다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(1시간 소요)
가. 반환할 자료형이 int 이고 입력은 int a, int b이며 처리할 내용은 int result = a+b 와 같이 두 수를 더해주는 프로그램을 짜고 return에 result를 주어 결과값이 반환되도록 만드시오. 함수명은 임의로 지으시오.
나. int main() 내에서 int x=10, y=20 를 주고, 아까 만든 함수의 이름을 쓰고 입력을 넣은 뒤 출력을 z1로 받아 printf 해보시오. 아래의 슈도코드를 참조하시오.
int main()
{
int x=10, y=20;
출력받을 변수 = 함수이름(입력1, 입력2);
printf()
}
다. 두 수를 곱하는 함수를 만들고 int main 내에서 호출하여 입력을 넣은 뒤 출력을 z2로 받아 printf 해보시오.
라. 두 수의 차이를 구하는 함수를 만드시오. 둘 중 더 큰수에서 더 작은 수를 빼도록 하시오. 출력을 z3으로 받아 printf 해보시오. (힌트 : 삼항연산자를 이용하면 간단히 해결됨)
마. 만든 함수들을 main 함수 뒤로 자리를 바꾸어 주고, main함수 앞에는 아까 만든 함수의 반환할자료형 함수명(입력1, 입력2...); 를 써서 함수의 형태만 먼저 정의하고 내용은 뒤에 있도록 해보시오. https://enter.tistory.com/59 를 참조하시오.
2. 다음 함수를 구현하시오.(3시간 소요)
가. 반복할 횟수 int n 을 받아 n!를 출력하는 함수를 만드시오. 입력받은 n으로부터 n=1일때까지 계속 곱하면 됨. (주의 : 재귀함수를 이용하지 마시오!) n 양수일때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.
나. '가'를 재활용하여 퍼뮤테이션 함수를 만드시오. nPr 에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.
다. '가~나'를 재활용하여 콤비네이션 함수를 만드시오. nCr에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.
라. nCr 에서
n=1 r=0, n=1 r=1
n=2 r=0, n=2 r=1, n=2 r=2
n=3 r=0, n=3 r=1, n=3 r=2, n=3 r=3
n=4 r=0, n=4 r=1, n=4 r=2, n=4 r=3, n=4 r=4 ...
...
일때의 값을 출력하는 함수를 for를 두번 이용하여 만들어 보시오. n=10일때까지 계산하여 스크린샷을 첨부하시오.
C언어 기초 13주차 (0) | 2020.12.27 |
---|---|
C언어 기초 12주차 (0) | 2020.12.21 |
C언어 기초 8주차 (0) | 2020.11.22 |
c언어 기초 7주차 (0) | 2020.11.15 |
c언어 기초 6주차 (0) | 2020.11.08 |
1. switch 함수의 사용 방법은
switch( 조건분기할 변수 )
case 변수의값 : 실행내용 break;
case 변수의값2 : 실행내용 break;
case 변수의값3 : 실행내용 break;
default : 실행내용
과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(2시간 소요)
가. 이차방정식 ax2+bx+c = 0 에 대해 a,b,c를 선언하고, 각각 입력받으시오.
단, 입력받은 a=0이면 0이 아닌 수를 입력할 때 까지 반복하여 입력을 받도록 하시오.(do while이용)
나. math.h를 include하시오
다. 변수 det를 선언하고, 이차방정식의 판별식을 계산하여 넣으시오.
라. 변수 SolNum를 선언하고, if~elseif~else로 해의 갯수를 넣으시오. '나'를 활용하시오.
마. switch 함수를 만들고 조건분기할 변수를 SolNum으로 하시오.
바. case에서 SolNum=2 이면 두 근을 표시하시오.
사. case에서 SolNum=1 이면 중근을 표시하시오.
아. case에서 SolNum=0 이면 '해가없다'를 표시하시오.
2. 숫자를 읽어주는 프로그램을 만드시오.(2시간 소요)
가. 1~99까지 반복문을 for로 만드시오.
나. 1~99까지의 수의 십의자리를 읽어주는 프로그램을 switch case로 만드시오.
x번째 수에 대해, x를 10으로 나눈 몫 n이 십의 자리이다.
n=1이면 '십', n=2이면 '이십', n=3이면 '삼십'....과 같이 십의 자리를 읽어주도록 만드시오.
다. 1~99까지의 수의 일의자리 m를 읽어주는 프로그램을 switch case로 만드시오. 나머지 연산자를 이용하시오.
m=1이면 '일' m=2이면 '이', m=3이면 '삼'.... 과 같이 일의 자리를 읽어주도록 만드시오.
라. 나~다에서 switch case가 아닌 if ~elseif~ else~를 이용하여 똑같은 기능을 하도록 만드시오.
마. switch case와 if elseif else의 특징에 대해 조사하고 어떤 때에 어떤 분기를 쓰면 유리한지 50자 이내로 정리해 보시오.
switch case는 변수 값이 정해져 있을때 사용하는게 좋다. 조건을 보다 간결하게 표현할수 있는 장점이 있다.
if elseif else는 변수가 정해진 범위(남자, 여자) 사용하는 것이 유리하다.
3. 환전 프로그램을 만드시오 (2시간 소요)
가. 환전하고자 하는 한국 돈을 int input으로 입력받으시오.
나. define을 통해 USA,JAPAN,EUROPE를 1,2,3 으로 정의하시오. 어느나라 돈으로 바꿀지를 정의할 때 사용할 것임(switch case의 입력임)
다. define을 통해 USD,JPY,EUR을 정의하시오. 현재 환율을 이용하시오. 단, 엔화환율은 100으로 나누어야 계산이 정상동작함
라. 어느나라 통화로 바꿀것인지 입력받으시오.(1.USA 2.JAPAN 3.EUROPE) switch ~ case문을 통해 바꿀통화의 번호를 nation이라는 변수로 받아 USA,JAPAN,EUROPE와 비교하여 넣으시오.
scanf( "%d", &nation );
switch( nation )
case USA : 실행내용 break;
case JAPAN : 실행내용 break;
case EUROPE : 실행내용 break;
default : 실행내용
마. case문 안에서 원화량을 환율로 나누어 외환으로 얼마인지 구하시오.
바. 1달러 미만, 1000엔 미만, 1유로 미만은 절사하고 한국돈 잔돈으로 받을수 있도록 계산하시오.
사. 최종적으로 한국돈입력, 어느나라통화로 바꿀지 입력하면 상대 통화로 얼마를 받을수 있고 잔돈은 얼마인지 출력되는 프로그램을 만드시오.
아. define을 통해 USA,JAPAN,EUROPE,USD,JPY,EUR등을 정의하면 무엇이 좋은지 50자 이내로 쓰시오.
define으로 정의해ㅅ 놓으면 코드 가독성도 좋고 프로그램을 읽기 쉽게 만들 수 있다.
그리고 상수를 바꿔야 할 일이 생기면 지시어만 바꾸어 주면 되기 때문에 유지보수성에서도 좋다.
C언어 기초 12주차 (0) | 2020.12.21 |
---|---|
C언어 기초 9주차 (0) | 2020.11.29 |
c언어 기초 7주차 (0) | 2020.11.15 |
c언어 기초 6주차 (0) | 2020.11.08 |
c언어 기초 5주차 (0) | 2020.11.01 |
# 기본과제 및 제출 양식
1. while의 사용방법은
while( 조건식 )
{
조건식이 참일때 실행할 문장
}
과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(3시간 소요)
가. 100, 97, 94... 와 같은 등차수열이 있다.
An = a + (n-1)*d; a=초항, d=공차임을 이용하여 등차수열의 일반항을 수기로 구하시오. 위 수열에서 초항은 100, 공차는 -3이다. 이 때, n값을 숫자로 넣으면 A를 계산해주는 프로그램을 for문을 이용하여 구하시오. 예를들어, n=3 이면 94를 출력해야함.
나. S1 = 100;
S2 = 100 + 97;
S3 = 100 + 97 + 94;
Sn = A1 + A2 + A3 + ... + An; 임을 이용하여 S1, S2, S3 .... S34, S35 를 for문을 이용하여 구하시오. '가'에서 만들어놓은 일반항 프로그램을 재사용 하여 구현하시오. (예를들어, Sum = Sum + A; A = 103-3N; 과 같이 구하면 됨) 예를들어, n=5 이면 470을 출력해야함. (=100+97+94+91+88)
다. S34은 100+97+94...1 이어서 모든 수가 양수가 더해지고 있고, S35는 100+07+94+...1+ (-2) 처럼 되어 음수를 처음으로 더하게 되므로 Sn의 최대값은 S34이다. Sn의 최대값을 구하기 위해 어디까지 Sum하여야 하는지 수기로 계산하여야 하는 불편함이 있다. '나'에서 만든 프로그램을 조건식 A>0으로 주고 while문을 이용하여 똑같은 기능을 하는 프로그램을 구현하시오.
라. '다'를 개조하여, 초항과 공차를 입력받아
공차가 양수이거나 초항과공차가 모두 음수인경우 S1,S2,S3... S20를 출력하고,
초항이 양수이고 공차가 음수이면 수열의 값이 0 이상일때까지만 합해지도록 하여 부분합S를 출력해 보시오. for과 while중 구현하기 유리한 것을 선택하여 사용해 보시오.
마. 코딩 중, for문과 while문 중 어떤 반복문을 어떨때 사용하는 것이 더 유리한지 50자 이내로 정리해보시오.
for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다.
while문은 조건을 입력후 진행 할 경우에는 사용한다.
2. Do while문의 사용법은
Do{
조건식이 참이거나 첫 실행일때 실행할 문장
}while( 조건식 )
과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오. (1시간 소요)
가. Do While문 바깥에 char password = 'a' 를 주시오. char input=0을 주시오.
나. Do While문 안쪽에서 input를 scanf하시오.
다. input의 값이 password가 아니면 '나'를 반복하고 "입력한 값은 ~이며 암호가 틀렸습니다"를 출력하고, a 이면 반복문을 종료하도록 하는 적당한 조건식을 작성하시오. do~while문 뒤쪽 바깥에 "a를 입력하였으므로 종료되었습니다"를 출력하시오.
라. while문은 언제 끝나게 될지 모를 경우 조건식을 통해 종료조건을 줄 수 있다는데에 의의가 있으며 do~while문은 반드시 한 번 이상은 실행해야 하는경우, 예를들어 패스워드 검증 등에 쓰인다는 데에 의의가 있다. for, while, do while에 대해 언제 어떤 반복문을 사용하는 것이 더 유리한지 100자 이내로 정리해 보시오.
for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다.
while문은 조건을 입력후 진행 할 경우에는 사용한다.
do while문은 반복제한 변수의 최초 상태와 무관하게 반복문을 한번 실행할 필요가 있을때 사용한다.
C언어 기초 9주차 (0) | 2020.11.29 |
---|---|
C언어 기초 8주차 (0) | 2020.11.22 |
c언어 기초 6주차 (0) | 2020.11.08 |
c언어 기초 5주차 (0) | 2020.11.01 |
c언어 기초 4주차 (0) | 2020.10.25 |
# 기본과제 및 제출 양식
1. for의 사용방법은
for(초기값;종료조건;증감값)
{
반복할 내용
}
과 같다. 이를 암기하시오. 또한 아래 문항을 해결하시오. (0.5시간 소요)
가. int start를 선언하고 1을 주시오.
나. int end를 선언하고 10을 주시오.
다. for문의 초기값에 int i=start를 주시오.
라. for문의 종료조건에 i<=end를 주시오.
마. for문의 증감값은 i++를 주시오.
바. 가~마를 이용하여, 1부터 10까지 출력되게 하시오. '반복할 내용'에 printf를 이용하여 구현하면 됨.
2. for를 이용하여 숫자들의 합을 구하는 프로그램을 구현하시오. (1시간 소요)
가. int sum을 for문 이전에 선언하고 0을 주시오.
나. '1.바'를 이용하여 sum에 1부터 10까지의 합을 구하시오. 이를 printf 하시오. (힌트 : sum = sum+i 처럼 하면 됨.) 참고자료 : https://wikidocs.net/11368
다. '1.가', '1.나'를 개조하여, 합을 구할 시작숫자와 끝 숫자를 scanf하시오. 시작숫자와 끝 숫자 사이에 있는 모든 값의 합을 구하시오. 이를 printf 하시오.
3. continue의 사용방법은 다음과 같다.
for(초기값;종료조건;증감값)
{
if(반복문을 띄워넘을 조건)
{
continue;
}
}
이를 암기하시오. 또한 아래 문항을 해결하시오. https://wikidocs.net/11613를 참조하시오. (1.5시간 소요)
가. int i=1 ~ 9 까지 나오도록 for 문을 만드시오.
나. int j=1 ~ 9 까지 나오도록 '가'에서 만든 for문 안에, for문을 하나 더 만드시오.
다. 가,나를 이용하여 i*j를 만들고 구구단을 출력하도록 해 보시오
라. '다'에서 구구단 3단이 출력되지 않도록 continue를 사용해 보시오.
마. 논리연산자 &&,||,! 에 대해 조사하시오. 이를 이용하여 구구단 3,5,7단이 출력되지 않도록 해보시오.
논리연산자 | 의미 |
&& | 논리 곱(AND) |
|| | 논리 합(OR) |
! | 부정(NOT) |
// 논리 곱(&&)연산자
true && true // true
true && false // false
false && true // false
false && false // false
// 논리 합(||)연산자
true || true // true
true || false // true
false || true // true
false || false // false
// 논리 부정(!)연산자
!true // false
!false // true
바. 구구단 4,8단만 출력되도록 continue를 사용해 보시오. (! 연산자를 사용하시오.)
4. break의 사용방법은 다음과 같다.
for(초기값;종료조건;증감값)
{
if(반복문을 종료할 조건)
{
break;
}
}
이를 암기하시오. 또한 아래 문항을 해결하시오. https://wikidocs.net/11613를 참조하시오. (1시간 소요)
가. for문의 종료조건에 숫자1 또는 true를 주어 무한루프를 만드시오.
나. 무한루프 이전의 밖에서 char password=0을 만드시오.
다. 무한루프 안에서 password를 scanf하시오.
라. password의 값이 a가 아니면 '다'를 반복하고 "입력한 값은 ~이며 암호가 틀렸습니다"를 출력하고, a 이면 break를 하여 반복문을 종료하도록 하시오. for문 뒤쪽 바깥에 "a를 입력하였으므로 종료되었습니다"를 출력하시오.
C언어 기초 8주차 (0) | 2020.11.22 |
---|---|
c언어 기초 7주차 (0) | 2020.11.15 |
c언어 기초 5주차 (0) | 2020.11.01 |
c언어 기초 4주차 (0) | 2020.10.25 |
c언어 기초 3주차 (0) | 2020.10.18 |
# 기본과제 및 제출 양식
1. 증감연산자가 무엇인지 찾아보고 x의 초기값이 1일때의 사용 예시를 적고 결과값을 printf해 보시오. (0.5시간 소요)
증감연산자 : 증감 연산자는 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자입니다.
이 연산자는 피연산자가 단 하나뿐인 단항 연산자입니다
가. x++ :
나. x-- :
2. 자동형변환(올림변환, 내림변환)에 대해 조사하고 아래 문항을 해결하시오(1시간 소요)
가. 자동형변환(올림변환, 내림변환) 에 대해 50자 이내로 요약하여 설명해보시오.
컴파일러에 의해 자동으로 수행되는 자료형 변환이라고 한다.
자료형의 크기가 큰쪽으로 변환하는 것을 올림변환, 낮은 쪽으로 변환하는 것을 내림 변환이라 한다.
나. double a = 10, double b=3 일때 a/b=3.333... 이지만, int c = a/b처럼 짜면 어떤 값이 나오는지 printf 로 확인하고 그 이유를 설명하시오.
결과 값 : 3
이유 : double형인 a/b는 값이 3.333... 으로 출력되지만 int c로 변환될 경우 정수형 자료로 형변환되어서
소수자리는 버리고 정수 부분인 3만 출력하게 된다.
다. int a = 10, int b=3일때 a/b=3 이지만, 캐스팅 연산자 (double)를 사용하여 (double)a/ (double)b 처럼 계산 후 이것을 double x에 대입한 후 값을 확인하면 3.333.... 이 정상적으로 나옴을 확인하시오. 그리고 이유를 설명하시오.
결과 값 : 3.333...
이유 : a와 b int형 이지만 강제 형변환으로 double로 만들었다.
a = 10.000000, b= 3.000000으로 변환 되어 double 형의 값이 나오며 double x에 대입하여 3.333....을
출력하게 된다.
라. 임의의 유리수를 입력받아 소수점자리에서 올림, 버림 하여 정수부분만 뽑아주는 프로그램을 구현하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
double a = 0;
int b;
printf("유리수 입력하시오 : ");
scanf("%lf", &a);
b = a;
printf("소수 자리에서 올림: %d\n", b + 1);
printf("소수 자리에서 내림: %d\m", b);
return 0;
}
마. '라'를 이용하여 임의의 유리수의 소수부분을 뽑아주는 프로그램을 구현하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
double a = 0;
int b;
printf("유리수 입력하시오 : : ");
scanf("%lf", &a);
b = a;
printf("소수값 = %lf", a - b);
}
바. math.h를 include 한 뒤 '라,마'를 이용하여 임의의 유리수의 log값을 알 때 그 숫자를 소수넷째짜리까지 찾아주는 프로그램을 만드시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
double a = 0;
printf("유리수 로그값 :");
scanf("%lf", &a);
double b;
b = pow(10.0, a);
printf("원래의 유리수값:%.4f", b);
return 0;
}
3. 구구단 2~9단을 출력해보시오. 단, 반복문을 사용하지 마시오 (3시간 소요)
가. int a=2, int b=1로 시작하시오.
나. a * b = c라고 출력해보시오.
다. b++를 하여 b를 2로 만드시오.
라. a * b = c라고 출력해보시오.
마. b++를 하여 b를 3로 만드시오.
바. a * b = c라고 출력해보시오.
사. b++를 하여 b를 4로 만드시오.
아. a * b = c라고 출력해보시오.
자. 나~아의 방식으로 b가 9일때까지 출력해보시오
차. 자 항이 끝나면 a++를 하여 a=3으로 만드시오. b=1을 주어 초기화하시오.
카. 다시 나~아의 방식으로 b가 9일때까지 출력해보시오.
타. 가~카의 방식으로 a가 9일때까지 출력해보시오.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 2;
int b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
a++;
b = 1;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
b++;
printf("%d * %d = %d\n", a, b, a * b);
return 0;
}
c언어 기초 6주차 (0) | 2020.11.08 |
---|---|
c언어 기초 5주차 (0) | 2020.11.01 |
c언어 기초 3주차 (0) | 2020.10.18 |
c언어 기초2주차 (0) | 2020.10.04 |
C언어 기초 1 주차 (0) | 2020.09.20 |
1. 기계어와 고급언어에 대해 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (0.5시간 소요)
가. 기계어 : 컴퓨터가 이해할 수 있는 언어, 0과 1의 2진수 형태로 표현 하는 언어체이다.
나. 고급언어 : 실행을 위해서는 번역과정이 필요하고 인간이 사용하는 언어와 비슷한 형태의 언어이다.
다. 요약설명 : 기계어는 컴퓨터가 이해할 수 있는 언어, 고급언어는 인가이 쉽게 이해할 수 있는 언어이다.
2. 빌드와 빌드과정에 대해 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (1.5시간 소요)
가. 빌드란? : 소스코드를 실행파일로 변환하는 작업.
나. 전처리란? 소스파일에서 실행코드로 만들어지기 위해서 일련의 과정들을 거치는 작업.
다. 컴파일이란? : 프로그래밍 언어로 작선항 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역하는 역할.
라. 링크란? : 프로그램에서 사용된 라이브러리를 연결하는 과정.
마. 로드란? : 프로그램 실행 후 메모리 로드
바. 요약설명 :
1)빌드란 소스코드를 실행파일로 변환하는 작업
2)빌드 과정에는 소스파일에서 실행코드로 만들어지기 위해서 일련의 과정들을 거치는 작업을 전처리
3)소스코드를 기계어로 번역하는 컴파일
4)컴파일 결과들을 서로 연결시켜 정리하는 링크
5)링크된 프로그램을 CPU 메모리에 적재하여 실행하는 로드
3. IDE란 무엇인지 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (1시간 소요)
가. IDE란? : 프로그래머가 소스코드를 편리하게 작성할 수 있는 환경을 제공하는 인터페이스라 한다.
나. 비주얼스튜디오란? : 마이크로소프트에서 개발한 IDE, 확장성 생성 언어(XML)기반의 응용 프로그램 개발도구로,
프로그래머들에게는 포토샵(Photoshop)과 같은 존재이다.
다. 에디터플러스란? : 인터넷 환경에서 편리하게 사용할 수 있는 윈도우용 문서 편집기로서, HTML 편집기, PHP 편집기,
자바 편집기, Hex 뷰어 기능을 지원한다.
라. 이클립스란? : JAVA 기반으로 한 통합 개발 환경이다. 운영체제의 제한 없이 사용할 수 있는 이점이 있다.
마. 요약설명 :
1) 프로그래머가 소스코드를 편리하게 작성할 수 있는 환경을 제공하는 인터페이스를 IDE라 정의 할 수 있다.
2) IDE에는 마이크로소프트어 회사에서 만든 범용성 비주얼스튜디오
3) 인터넷환경에 특화된 에디터플러스
4) JAVA 언어에 특화된 이클립스
4. 비주얼 스튜디오를 설치하시오. 본 게시판의 201,204,205번 참조하세요 (1시간 소요)
(※ 본인의 취향에 따라, 비주얼 스튜디오 이외의 IDE를 설치하여도 무방함)
가. 다운로드 받는 장소 URL : visualstudio.microsoft.com/ko/vs/
나. 설치결과 스크린샷 :
5. 구글 및 검색, 또는 본 게시판의 공지에 있는 교재를 찾아보고 기본 프로젝트를 생성해 보세요 (1시간 소요)
가. 비주얼스튜디오에서 C 콘솔 프로젝트를 만드는 과정을 1줄로 쓰시오 (주의 : C++콘솔이 아니라 C임) :
비주얼스튜디오 실행->파일(F)->새로 만들기(N)->프로젝트(P) 과정을 거쳐 프로젝트를 생성하고 소스파일의 확작자는 .c를
생성한다.
나. 전처리기 stdio 를 include 하는 방법을 1줄로 쓰시오 :
#include <stdio.h>
다. '나. 항목을 왜 하는지 쓰시오 :
헤더파일 stdio.h에는 printf 함수의 호출에 필요한 정보가 존재한다. 이 파일의 정보를 포함하는 헤더파일 선언문이 삽입
되어야 한다. stdio.h에는 표준 입출력에 관한 라이브러리 정보가 담겨져 있다.
라. 다음의 기본 코드를 작성 및 암기하시오. 앞으로 모든 프로그램은 아래 2줄을 기본으로 작성하여 진행됨.
int main()
{ return 0; }
마. 기본코드에 자신의 닉네임을 출력하는 프로그램 1줄을 적어보시오. printf를 이용하시오.
printf("스네이크");
바. '마' 항의 실행결과 스크린샷을 올리고, 작성한 소스코드를 업로드하시오. 소스코드는 텍스트로 올리시오.
#include <stdio.h>
int main()
{
printf("스네이크");
return 0;
}
# 심화과제 제출 양식( 안해도 됨 )
1. 2020년 3월 달력을 출력하는 프로그램을 짜고, 결과물 스크린샷및 소스코드를 올리세요. 소스코드는 텍스트로
올리세요. 'ㅂ+한자' 를 눌러 나오는 특수문자를 이용하여 표를 구현하고 표 안에 월화수목금토일 및 일자를 적어
보세요.
#include <stdio.h>
int main()
{
printf(" *2020년 03월 달력* \n");
printf("┌--------------------┐\n");
printf("│일 월 화 수 목 금 토│\n");
printf("│ 1 2 3 4 5 6 7│\n");
printf("│ 8 9 10 11 12 13 14│\n");
printf("│15 16 17 18 19 20 21│\n");
printf("│22 23 24 25 26 27 28│\n");
printf("│29 30 31 │\n");
printf("└--------------------┘\n");
return 0;
}
c언어 기초 6주차 (0) | 2020.11.08 |
---|---|
c언어 기초 5주차 (0) | 2020.11.01 |
c언어 기초 4주차 (0) | 2020.10.25 |
c언어 기초 3주차 (0) | 2020.10.18 |
c언어 기초2주차 (0) | 2020.10.04 |
RECENT COMMENT