<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://open.gnu.ac.kr/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Exercises_on_C_Fundamentals</id>
	<title>Exercises on C Fundamentals - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://open.gnu.ac.kr/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Exercises_on_C_Fundamentals"/>
	<link rel="alternate" type="text/html" href="http://open.gnu.ac.kr/mediawiki/index.php?title=Exercises_on_C_Fundamentals&amp;action=history"/>
	<updated>2026-05-04T02:07:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://open.gnu.ac.kr/mediawiki/index.php?title=Exercises_on_C_Fundamentals&amp;diff=32&amp;oldid=prev</id>
		<title>James: Created page with &quot;&lt;!-- &lt;source lang=&quot;c&quot; line start=&quot;1&quot; highlight=&quot;1-8&quot;&gt; --&gt;    == Chapter 2 &amp; 3: Fundamentals and Printf &amp; Scanf ==  some are adapted from [Functions - Learn C - Free Interactiv...&quot;</title>
		<link rel="alternate" type="text/html" href="http://open.gnu.ac.kr/mediawiki/index.php?title=Exercises_on_C_Fundamentals&amp;diff=32&amp;oldid=prev"/>
		<updated>2017-08-25T04:31:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;!-- &amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot; highlight=&amp;quot;1-8&amp;quot;&amp;gt; --&amp;gt;    == Chapter 2 &amp;amp; 3: Fundamentals and Printf &amp;amp; Scanf ==  some are adapted from [Functions - Learn C - Free Interactiv...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!-- &amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot; highlight=&amp;quot;1-8&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chapter 2 &amp;amp; 3: Fundamentals and Printf &amp;amp; Scanf ==&lt;br /&gt;
 some are adapted from [Functions - Learn C - Free Interactive C Tutorial](http://www.learn-c.org/en/Functions)&lt;br /&gt;
&lt;br /&gt;
1. 다음의 코드를 &amp;lt;code&amp;gt;hello.c&amp;lt;/code&amp;gt;라는 이름으로 저장하고 &amp;lt;code&amp;gt;gcc -o hello hello.c&amp;lt;/code&amp;gt;로 컴파일 해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;Hello, World!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:오류 메시지가 출력되는가? &amp;lt;code&amp;gt;gcc  -Wall -o hello hello.c&amp;lt;/code&amp;gt;로 다시 컴파일 해보자. 오류 메시지가 출력되는가? 오류 메시지를 읽어보고 무슨 뜻인지 생각해보자. 어떻게 하면 오류를 해결 할 수 있는가? &lt;br /&gt;
&lt;br /&gt;
2. Hello World 프로그램을 변형하여 &amp;#039;&amp;#039;&amp;#039;I am the master of the C Language&amp;#039;&amp;#039;&amp;#039;를 출력하도록 변형해보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) &lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;Hello, World!\n&amp;quot;);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;를 사용하여 다음과 같은 모양을 출력하도록 프로그램을 작성해보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *&lt;br /&gt;
       *&lt;br /&gt;
      *&lt;br /&gt;
*    *&lt;br /&gt;
 *  *&lt;br /&gt;
   *&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 다음 세 문장의 차이를 생각해보고 검증해보라&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
printf(&amp;quot;To C, or not to C: that is the question.\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
printf(&amp;quot;To C, or not to C: “);&lt;br /&gt;
printf(“that is the question.\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
printf(&amp;quot;Brevity is the soul of wit.\n --Shakespeare\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;를 사용하여 변수 &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;의 합을 구하라. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int a = 3;&lt;br /&gt;
  float b = 4.5;&lt;br /&gt;
  double c = 5.25;&lt;br /&gt;
  float sum;&lt;br /&gt;
&lt;br /&gt;
  /* Your code goes here */&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;The sum of a, b, and c is %f.&amp;quot;, sum);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. 다음 코드에서 weight를 계산할 때 165를 더해서 올림을 하고 있다. 165의 유무에 따라 결과가 어떻게 변하는지 확인해보자. 올림이나 내림을 하지 않고 소수점 자리까지 표기하도록 코드를 변경해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/* dweight.c (Chapter 2, page 20) */&lt;br /&gt;
/* Computes the dimensional weight of a 12&amp;quot; x 10&amp;quot; x 8&amp;quot; box */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int height, length, width, volume, weight;&lt;br /&gt;
&lt;br /&gt;
  height = 8;&lt;br /&gt;
  length = 12;&lt;br /&gt;
  width = 10;&lt;br /&gt;
  volume = height * length * width;&lt;br /&gt;
  weight = (volume + 165) / 166;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Dimensions: %dx%dx%d\n&amp;quot;, length, width, height);&lt;br /&gt;
  printf(&amp;quot;Volume (cubic inches): %d\n&amp;quot;, volume);&lt;br /&gt;
  printf(&amp;quot;Dimensional weight (pounds): %d\n&amp;quot;, weight);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. 변수를 초기화하지 않고 사용할 때 생기는 문제를 다음의 코드를 사용하여 확인해보자. 초기화를 하지 않고 덧셈, 뺄쎔 등의 연산을 하여 그 결과를 예측할 수 있겠는가? 옆의 친구의 결과와 비교해보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	int a;&lt;br /&gt;
	float c;&lt;br /&gt;
	printf(&amp;quot;%d\n&amp;quot;, a);&lt;br /&gt;
	printf(&amp;quot;%f\n&amp;quot;, c);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. 다음은 &amp;lt;code&amp;gt;dweight2.c&amp;lt;/code&amp;gt;의 코드이다.  &amp;lt;code&amp;gt;scanf&amp;lt;/code&amp;gt;의 용법과 받아들이는 인자의 형태를 유심히 살펴보자. 실수를 입력 받을 수 있는지 검사해보자. 실수를 입력받도록 수정해보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/* dweight2.c (Chapter 2, page 23) */&lt;br /&gt;
/* Computes the dimensional weight of a&lt;br /&gt;
   box from input provided by the user */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int height, length, width, volume, weight;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Enter height of box: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;height);&lt;br /&gt;
  printf(&amp;quot;Enter length of box: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;length);&lt;br /&gt;
  printf(&amp;quot;Enter width of box: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;width);&lt;br /&gt;
  volume = height * length * width;&lt;br /&gt;
  weight = (volume + 165) / 166;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Volume (cubic inches): %d\n&amp;quot;, volume);&lt;br /&gt;
  printf(&amp;quot;Dimensional weight (pounds): %d\n&amp;quot;, weight);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. 다음은 &amp;lt;code&amp;gt;celcius.c&amp;lt;/code&amp;gt;의 코드이다. 코드를 수정하여 화씨가 출력되도록 해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/* celsius.c (Chapter 2, page 24) */&lt;br /&gt;
/* Converts a Fahrenheit temperature to Celsius */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define FREEZING_PT 32.0f&lt;br /&gt;
#define SCALE_FACTOR (5.0f / 9.0f)&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  float fahrenheit, celsius;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Enter Fahrenheit temperature: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%f&amp;quot;, &amp;amp;fahrenheit);&lt;br /&gt;
&lt;br /&gt;
  celsius = (fahrenheit - FREEZING_PT) * SCALE_FACTOR;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Celsius equivalent: %.1f\n&amp;quot;, celsius);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. C언어에서 사용할 수 없는 변수명의 목록이 있다. 이 목록의 키워드들을 변수명으로 사용하면 어떤 에러를 발생하는지 예를 만들어 보자. &lt;br /&gt;
&lt;br /&gt;
11. 책에서는 문자열 사이에 줄 바꿈 기호를 삽입하는 것은 안된다고 나와 있다. 다음의 코드가 컴파일 되는지 검사해보자. 에러 메시지를 살펴보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;this is a &lt;br /&gt;
                test of long&lt;br /&gt;
			line\n&amp;quot;);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. 다음 코드의 결과를 확인해보자. &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;변수의 &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt;의 포함 여부에 따라 결과가 어떻게 바뀌는지 검사해보자.&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
int i, j;&lt;br /&gt;
float x, y;&lt;br /&gt;
&lt;br /&gt;
i = 10;&lt;br /&gt;
j = 20;&lt;br /&gt;
x = 43.2892f;&lt;br /&gt;
y = 5527.0f;&lt;br /&gt;
printf(&amp;quot;i = %d, j = %d, x = $f, y = %f\n&amp;quot;, i, j, x, y);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13. &amp;#039;&amp;#039;&amp;#039;conversion specification&amp;#039;&amp;#039;&amp;#039; 은 전달받은 변수의 수와 동일해야 한다는 제한 조건이 있다. 더 많거나 더 적은 경우 어떤 오류 메시지를 출력하는지 위의 예제를 변형하여 검사해보자. &lt;br /&gt;
&lt;br /&gt;
14. &amp;#039;&amp;#039;&amp;#039;conversion specification&amp;#039;&amp;#039;&amp;#039; 이 전달받은 변수의 형과 다른 경우 어떤 결과를 출력하는지 검사해보자. &lt;br /&gt;
&lt;br /&gt;
15. 다음은 &amp;lt;code&amp;gt;tprintf.c&amp;lt;/code&amp;gt;의 코드이다. 자리수와 길이의 표현이 익숙해질 때까지 조정해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/* tprintf.c (Chapter 3, page 40) */&lt;br /&gt;
/* Prints int and float values in various formats */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  float x;&lt;br /&gt;
&lt;br /&gt;
  i = 40;&lt;br /&gt;
  x = 839.21f;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;|%d|%5d|%-5d|%5.3d|\n&amp;quot;, i, i, i, i);&lt;br /&gt;
  printf(&amp;quot;|%10.3f|%10.3e|%-10g|\n&amp;quot;, x, x, x);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. 다음의 코드의 결과를 예상해보자. 실행해서 예상과 같은지 확인해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
printf(&amp;quot;\&amp;quot;hello\b\b\bl\tl\to!\&amp;quot;\n&amp;quot;);&lt;br /&gt;
printf(&amp;quot;Item\tUnit\tPurchase\n\tPrice\tDate\n&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
17. 다음의 코드를 사용하여 &amp;lt;code&amp;gt;scanf&amp;lt;/code&amp;gt;에 공백문자가 포함되면 그 문자를 어떻게 인식하는지 검사해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
	float x, y;&lt;br /&gt;
	scanf(&amp;quot;%d%d%f%f&amp;quot;, &amp;amp;i, &amp;amp;j, &amp;amp;x, &amp;amp;y);&lt;br /&gt;
	printf(&amp;quot;i = %d\tj = %d\tx = %f\ty = %f);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
18. 다음과 같이 코드를 작성하여 입력을 &amp;#039;&amp;#039;&amp;#039;10 11&amp;#039;&amp;#039;&amp;#039;이라고 전달하면 각 변수에 어떤 값이 저장이 되는가? &amp;#039;&amp;#039;&amp;#039;10,11&amp;#039;&amp;#039;&amp;#039;이라고 전달하면 어떤 값을 출력하는가? &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
	scanf(&amp;quot;%d, %d&amp;quot;, &amp;amp;i, &amp;amp;j);&lt;br /&gt;
	printf(&amp;quot;i = %d\tj = %d&amp;quot;, i, j);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
19. 다음은 &amp;lt;code&amp;gt;addfrac.c&amp;lt;/code&amp;gt;의 코드이다. 실행해보고 코드를 한 줄씩 이해해보자. &lt;br /&gt;
:&amp;lt;source lang=&amp;quot;c&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/* addfrac.c (Chapter 3, page 46) */&lt;br /&gt;
/* Adds two fractions */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int num1, denom1, num2, denom2, result_num, result_denom;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Enter first fraction: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d/%d&amp;quot;, &amp;amp;num1, &amp;amp;denom1);&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Enter second fraction: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d/%d&amp;quot;, &amp;amp;num2, &amp;amp;denom2);&lt;br /&gt;
&lt;br /&gt;
  result_num = num1 * denom2 + num2 * denom1;&lt;br /&gt;
  result_denom = denom1 * denom2;&lt;br /&gt;
  printf(&amp;quot;The sum is %d/%d\n&amp;quot;, result_num, result_denom);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
	</entry>
</feed>