카테고리 없음

[Chapter] 04 주석문과 디버깅

whereareyoung 2023. 7. 14. 13:01
//1
실수형 변수 두 개를 입력받아서 두 수의 합을 정수로 변환한 결과값과 두 수를 각각 정수로 변환하여 합을 구한 결과값을 출력하는 프로그램을 작성하고 프로그램 내용에 관한 설명을 주석으로 표현하시오.
입력 예 3.4 5.65
출력 예 9 8
 
/*
 
이 프로그램은 주석의 사용에 대해 학습하기 위해 작성한 것입니다.
 
주석은 프로그램 작성자가 프로그램을 이해하기 쉽도록 하기 위해 작성하는 것입니다.
 
주석으로 표시된 부분을 프로그램을 컴파일 할 때 무시하고 처리합니다.
 
따라서 실제 프로그램에는 없는 것과 마찬가지입니다.
 
*/
 
#include <stdio.h>
int main()
{
int a, b; /* 정수형 변수 두 개를 선언한다. */
double d, e; /* 실수형 변수 두 개를 선언한다. */
 
scanf("%lf %lf", &d, &e); /* 실수형 변수 두 개를 입력받는다. */
a = d + e; /* 실수 두 개를 더해서 정수 변수에 대입한다. */
b = (int)d + (int)e; /* 두개의 실수를 각각 정수로 변환하여 정수 변수에 대입한다. */
printf("%d %d \n", a, b);
return 0;
}
 
/****************************************
 
여러 줄을 주석 처리하는 방법입니다.
 
*****************************************/
 
 
 
자가진단 1 2개의 실수를 입력 받아서 두 수의 곱을 정수로 변환한 결과값과 두 수를 각각 정수로 변환하여 곱을 구한 결과값을 출력하는 프로그램을 작성하고 프로그램 내용에 관한 설명을 주석으로 표시하시오.
입력 예 3.4 5.65
출력 예 19 15
 
#include <stdio.h>
int main()
{
double a, b; /* 실수형 변수 두 개를 선언한다. */
int c, d; /* 정수형 변수 두 개를 선언한다. */
scanf("%lf %lf", &a, &b); /* 실수형 변수 두 개를 입력받는다. */
c = a * b; /* 실수 두 개를 곱해서 정수 변수에 대입한다. */
d = (int)a * (int)b; /* 두 개의 실수를 각각 정수로 변환하여 정수 변수에 대입한다. */
printf("%d %d \n", c, d);
return 0;
}
 
//2
한 개의 정수를 입력받아 정수 4로 나눈 몫과 실수 4.0으로 나눈 결과값을 각각 출력하는 프로그램을 작성하고 프로그램 내용에 관한 설명을 주석으로 표시하시오. (단, 실수는 반올림하여 소수 둘째자리까지 출력한다.)
입력 예 5
출력 예
5 / 4 = 1
5 / 4.0 = 1.25
 
// 이것은 한줄을 주석처리하는 방법입니다.
// 주석처리 하고자 하는 줄마다 "//" 표시를 해주어야 합니다.
#include <stdio.h>
int main()
{
int a; // 정수형 변수 한 개를 선언한다.
scanf("%d", &a); // 정수를 입력받는다.
printf("%d / 4 = %d \n", a, a / 4);
// 입력받은 정수를 정수 4로 나눈 몫을 출력한다.
printf("%d / 4.0 = %.2f \n", a, a / 4.0);
// 입력받은 정수를 실수 4.0으로 나눈 결과값을 출력한다.
return 0;
}
 
자가진단 2 2개의 정수를 입력 받아서 첫 번째 수를 두 번째 수로 나눈 몫을 출력하고 첫 번째 수를 double로 변환하여 두 번째 수로 나눈 값을 구한 후 반올림하여 소수 둘째자리까지 출력하는 프로그램을 작성하고 프로그램 내용에 관한 설명을 주석으로 표시하시오.
입력 예 11 3
출력 예 3 3.67
 
#include <stdio.h>
int main()
{
int a, b; // 정수형 변수 두 개를 선언한다.
scanf("%d %d", &a, &b); // 정수 두 개를 입력받는다.
printf("%d ", a / b);
// 입력받은 첫 번째 수를 입력받는은 두 번째 수로 나눈 몫을 출력한다.
printf("%.2f", (double)a / b);
// 첫 번째 수를 double로 변환하여 두 번째 수로 나눈 값을 구한 후 반올림하여 소수 둘째자리까지 출력한다.
return 0;
}
 
//3
디버깅
아래 소스를 입력하고 한 줄씩 실행하면서 디버깅을 해 보시오.
 
/*******************************************************************
 
디버깅은 프로그램에서 논리적인 에러를 찾아내기 위해 사용합니다.
 
*******************************************************************/
#include <stdio.h>
int main()
{
int a = 10;
int b;
int c;
scanf("%d", &b);
c = a + b;
printf("%d \n", c);
return 0;
}
 
디버깅 하는 법
디버깅 모드 실행 : F10 더블 탭
디버깅 작업
F10을 누르면 화살표 대로 실행된다. 차례로 넘겨가며 체크한다.
입력해야할것 입력하며 지역창 체크가 가능하다.
Ctrl + F10을 누르면 커서 이전까지의 프로그램실행이 가능하다.
 
디버깅 모드 종료 : Shift F5
 
자가진단 3 4과목의 점수를 입력받아 합계와 평균을 구하는 프로그램을 작성하고 디버깅을 해 보시오.
 
#include <stdio.h>
int main()
{
int a, b, c, d;
int sum, avg;
 
scanf("%d %d %d %d", &a, &b, &c, &d);
 
sum = a + b + c + d;
avg = sum / 4;
 
printf("%d %d", sum, avg);
 
return 0;
}
 
 
형성평가
 
//1
정수로 된 3과목의 점수를 입력받아 평균을 구한 후 반올림하여 소수 첫째자리까지 출력하는 프로그램을 작성하시오.
입력 예 70 95 65
출력 예 76.7
 
#include <stdio.h>
int main()
{
int a, b, c; /* 정수형 변수 세 개(3과목의 점수)를 선언한다. */
float avg; /* 실수형 변수 한 개(평균)를 선언한다. */
 
scanf("%d %d %d", &a, &b, &c); /* 정수형 변수 세 개(3과목의 점수)를 입력받는다. */
 
avg = (a + b + c) / 3.0; /* 정수형 변수의 평균을 구한다. */
 
printf("%.1f", avg); /* 반올림하여 소수 첫째자리까지 출력한다. */
return 0;
}
 
 
//2
실수로 된 3과목의 점수를 입력받아 총점은 정수부분의 합계를 출력하고, 평균은 실수의 평균을 구한 뒤 정수부분만 출력하는 프로그램을 작성하시오.
입력 예 70.5 95.5 68.5
출력 예
sum 233
Avg 78
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
double a, b, c; /* 실수형 변수 세 개(3과목의 점수)를 선언한다. */
int sum, avg; /* 정수형 변수 두 개(총점, 평균)를 선언한다. */
 
scanf("%lf %lf %lf", &a, &b, &c); /* 정수형 변수 세 개(3과목의 점수)를 입력받는다. */
 
sum = (int)a + (int)b + (int)c; /* 정수의 총점을 구한다. */
avg = (a + b + c) / 3; /* 실수의 평균을 구한다. */
 
printf("sum %d \n", sum); /* 정수의 합계를 출력한다. */
printf("avg %d \n", avg); /* 실수 평균의 정수 부분 합계를 출력한다. */
 
return 0;
}
 
 
//3
아래의 프로그램을 작성하여 디버깅을 하면서 디버깅 창에서 화살표가 ① 위치에 있을 때 a의 값이 얼마인지 출력하시오.
문제
 
#include <stdio.h>
int main()
{
int a = 5;
 
a += 10;
a = a - 1; // -------------- ①
 
printf("%d\n", 15); // 여기에서 출력될 1을 ①위치에서의 a 값으로 바꾸어 준다.
 
return 0;
}
 
//4
다음의 프로그램을 작성하여 같은 방법으로 ①, ②, ③ 위치에서 디버깅 창에 표시된 a의 값을 각각 출력하시오.
문제
 
#include <stdio.h>
#include <time.h>
int main()
{
int a = 0;
struct tm tt;
 
time_t now;
time(&now);
tt = *localtime(&now);
a = tt.tm_year; // ----------------------- ①
a += tt.tm_mon; // ----------------------- ②
a += tt.tm_mday;
 
printf("%d %d %d\n", 0, 123, 134); // -------- ③
// 위 문장에서 출력될 값들을 각각 ①②③위치에서의 a의 값으로 바꾸어 준다.
 
return 0;
}