프로그래밍/C,C++

[ANSI C 프로그래밍]5,6,7장 프로그래밍 연습

수학가형 2022. 1. 6. 15:34

단원:

5.입출력 다루기

6. 판단과 분기

7. 판단과 반복

 

 

[프로그래밍 연습 4.12] scanf함수를 사용하여 세개의 정수를 입력 받고, 다음결과를 출력하는 프로그램을 작성하시오.

(a)   수의

(b)   수의 평균

(c)   수중 최대값

(d)   수중 최소치

코드:

#include<stdio.h>
 
main()
{
     int x , y , z;
     int sum, max, min;
     float avg;
     float max_xy, max_yz, min_xy, min_yz;
 
     scanf("%d %d %d",&x,&y,&z);
     sum = x + y + z;
     avg = (int)sum / 3;
     max_xy = (x > y) ? x : y;
     max_yz = (y > z) ? y : z;
     max = (max_xy > max_yz) ? max_xy : max_yz;
     min_xy = (x > y) ? y : x;
     min_yz = (y > z) ? z : y;
     min = (min_xy > min_yz) ? min_yz : min_xy;
 
     printf("sum=%d, avg=%f, max=%d, min=%d", sum, avg, max, min);
}

 

 

[프로그래밍 연습 4.13]아래의 그림처럼 15 간격으로 0도에서 180도까지 sin cos 함수의 값을 표로 출력하는 프로그램을 작성하시오.

코드:

#include<stdio.h>
#include<math.h>
 
#define PI 3.141592
 
main()
{
         float sine, cosine, angle;
         double radian;
         angle = 0;
 
         printf("--------------------------------------------------------------\n");
         printf("x() \t sin(x) \t cos(x)\n");
         printf("--------------------------------------------------------------\n");
 
         for (angle = 0; angle <= 180; angle = angle + 15)
           {
                  radian = (angle*PI) / (float)180;
                  (float)sine = sin(radian);
                  (float)cosine = cos(radian);
                  printf("%f \t %f \t %f\n", angle, sine, cosine);
           }
         printf("--------------------------------------------------------------\n");
}

 

 

[프로그래밍 연습 5.5]사용자에게 자리 두개를 입력받고, 두수의 곱셈과정을 다음과 같이 보여주는 프로그램을 작성하시오.

코드:

#include<stdio.h>
 
main()
{
         int x, y;
         int multi_1, multi_2, digit_10, digit_1, answer_10, answer_1, finalanswer;
 
         scanf("%d %d", &x, &y);
         digit_10 = y / 10;
         digit_1 = y % 10;
         answer_10 = x*digit_10;
         answer_1 = x*digit_1;
         finalanswer = x*y;
 
         printf(">첫번째 두자리수: %d\n>두번째 두자리수: %d\n",x, y);
         printf("\t %d\n\tx%d\n-------------\n", x, y);
         printf("\t %d\n\t%d\n", answer_1, answer_10);
         printf("------------------------");
         printf("\n\t%d\n", finalanswer);
}

 

 

[프로그래밍 연습 6.10]이차방정식 ax^2+bx+c=0의 계수 a,b,c를 입력받아 실수근을 출력하는 프로그램을 작성하라.

코드:

#include<stdio.h>
#include<math.h>
main()
{
float a, b, c;
float discriminant=-1,root1,root2;
while (discriminant < 0)
{
         printf("type 2nd order eqauation's coefficient a,b,c\n");
         scanf("%f%f%f", &a, &b, &c);
         discriminant = (b*b) - (4 * a*c);
         if (discriminant < 0)
         {
                  printf("this equation has complex root\n");
         }
}
root1 = (((-1*b) + sqrt(discriminant)) / (2 * a));
root2 = (((-1*b) - sqrt(discriminant)) / (2 * a));
printf("first root=%.3f  second root=%.3f\n", root1, root2);   
}

 

 

[프로그래밍 연습 7.12]다음과 같은 순서로 정수를 출력하기위한 for문을 작성하시오.

(a)1,2,4,8,16,32

#include<stdio.h>
#include<math.h>
main()
{
    int i = 0, x;
    for (i = 0; i < 6; i=i+1)
            {
            x = pow(2,i);
            printf("%d,", x);
            }
}

(b)1,3,9,27,81,243

#include<stdio.h>
#include<math.h>
 
main()
{
    int i = 0, x;
    for (i = 0; i < 6; i=i+1)
            {
            x = pow(3,i);
            printf("%d,", x);
            }
}

(c)-4, -2, 0, 2, 4

#include<stdio.h>
 
main()
{
    int i = 0, x=-4;
    for (i = 0; i < 5; i=i+1)
            {
            x = x + 2 * i;
            printf("%d ", x);
             x = -4;
            }
}

(d)-10, -12, -14, -18, -26, -42

#include<stdio.h>
 
main()
{
    int i = 0, a_2, a_1;
    a_2 = -10;
    for (i = 0; i < 5; i=i+1)
            {
            printf("%d ", a_2);
            if(a_2 == -10)
            {
                    a_2 = -12;
                    printf("%d ", a_2);
            }
            a_1 = a_2;
            a_2 = 2 * a_1 + 10;
            }
}

 

 

[교수님 자체제작?]어떤 정수 m m! 1부터 m까지의 연속된 정수를 곱한 것이다.  m을입력 받아 팩토리알을 계산하고 일를 출력하는 프로그램을 작성하시오.

코드:

#include<stdio.h>
 
main()
{
int m, n, f, exp;
do
{
         scanf("%d", &m);
         f = m;
         if (m < 0)
         {
                  printf("type positive integer\n");
         }
}
while (m < 0);    if (m == 0)

f = 1;
}
else
{
         for (n = 1; n < m; ++n)
                  f = f*(m - n);
}
printf("%d!=%d\n",m, f);
}

 

 

[교수님 자체제작?]하나의 정수를 입력 받아서 정수와 같은 값의 이진수를 출력하는 프로그램을 작성하시오.

#include<stdio.h>
 
main()
{
int decimal, i, minus = 0;
int binary[100];
 
printf("decimal number: \n");
scanf("%d", &decimal);
 
if (decimal < 0)
        decimal = (-1)*decimal;
        minus = 1;
 
for (i = 1; i <= 100; i++)
{
        binary[100 - i] = decimal % 2;
        decimal = decimal / 2;
        if (decimal == 0)
               break;
}
 
printf("binary number: \n");
if (minus == 1)
        printf("-");
 
for (; i >= 1; i--)
{
printf("%d", binary[100 - i]);
}
printf("\n");
}

 


문제 소스

책정보, ANSI C 프로그래밍 : 네이버 책 (naver.com)

 

ANSI C 프로그래밍

책으로 만나는 새로운 세상

book.naver.com