반응형

월급에 붙는 소득세를 계산하는 함수 get_tax(int income)를 작성하고 테스트하여 보자. 과표 구간은 1000만원 이하 8%, 1000만원 초과는 10%로 되어 있다고 가정한다. 사용자로부터 소득을 입력받아서 세금을 계산하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
double get_tax(int income);
int get_income(void);
int main(void)
{
    int x;
    x=get_income();
    printf("소득세는 %lf만원입니다.\n", get_tax(x));
    return 0;
}
double get_tax(int income)
{
    double tax;
    {if(income<=1000)
        tax = income*0.08;
    else
        tax = income * 0.1;}
    return tax;
 
}
int get_income(void)
{
    int a;
printf("소득을 입력하시오(만원): ");
scanf("%d"&a);
return a;
}
cs



필자는 income을 int형으로 설정 하고 10보다 작을 경우 결과 값이 0으로 나타나는 것이 싫어서 double 형으로 설정하였다. 그래서 답도 80.0000 이 나왔다. 만약 이것이 싫다면 아래 코드를 참조하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
int get_tax(int income);
int get_income(void);
int main(void)
{
    int x;
    x=get_income();
    printf("소득세는 %d만원입니다.\n", get_tax(x));
    return 0;
}
int get_tax(int income)
{
    int tax;
    {if(income<=1000)
        tax = income*0.08;
    else
        tax = income * 0.1;}
    return tax;
 
}
int get_income(void)
{
    int a;
printf("소득을 입력하시오(만원): ");
scanf("%d"&a);
return a;
}
cs


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

난수 발생기  (0) 2016.07.27
사인값 출력  (0) 2016.07.27
원의 면적 구하기  (0) 2016.07.26
화씨 온도 변환기  (0) 2016.07.26
정수 판별기  (0) 2016.07.26
반응형

원의 면적을 구하는 문제를 함수로 작성하여 보자. 다음과 같은 식을 이용하라. 원의 면적을 구하는 함수 cal_area(double radius)를 작성하고 함수를 호출하여 원의 면적을 출력하는 전체 프로그램을 완성하여라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
double cal_area(double radius);
const double pi = 3.141592;
int main(void)
{
 
    double r;
    printf("원의 반지름을 입력하시오: ");
    scanf("%lf"&r);
    printf("원의 면적은 %lf입니다.\n", cal_area(r));
    return 0;
}
double cal_area(double radius)
{
double a;
= pi * radius * radius;
return a;
}
cs


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

사인값 출력  (0) 2016.07.27
소득세 계산  (0) 2016.07.27
화씨 온도 변환기  (0) 2016.07.26
정수 판별기  (0) 2016.07.26
특정한 정수의 자리수를 반대로 출력하는 프로그램  (0) 2016.07.22
반응형

화씨 온도(F)를 섭씨 온도(C)로 변환하는 함수 f_to_c(double f)를 작성한다. 다음과 같은 식을 이용하라. 사용자로부터 화씨 온도를 입력받아서 함수를 호출하여 섭씨 온도로 변환한 후에 화면에 출력하도록 하라.

C=5.0/9.0*(F-32.0)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
double get_real(void);
double f_to_c(double a);
int main(void)
{
    double x, y;
    x=get_real();
    y=f_to_c(x);
    printf("섭씨 온도는 %lf도입니다.\n", y);
    return 0;
}
double get_real(void)
{
    double x;
printf("화씨 온도를 입력하시오: ");
scanf("%lf"&x);
return x;
}
double f_to_c(double f)
{
double x;
x=5.0/9.0*(f-32.0);
return x;
}
cs





반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

소득세 계산  (0) 2016.07.27
원의 면적 구하기  (0) 2016.07.26
정수 판별기  (0) 2016.07.26
특정한 정수의 자리수를 반대로 출력하는 프로그램  (0) 2016.07.22
순열(permutation)  (0) 2016.07.22
반응형

다음과 같은 간단한 기능을 하는 함수들을 작성하고, 사용자로부터 임의의 값을 입력받은 후에 작성한 함수들을 테스트하여 보자.

(a)주어진 정수가 짝수이면 1을 반환하고 홀수이면 0을 반환하는 함수 int even(int n)

{b)주어진 정수의 절대값을 구하는 함수 int absolute(int n)

(c)주어진 정수가 음수이면 -1을, 양수이면 1을 0이면 0을 반환하는 함수 int sign(int n)


나는 여기에 정수를 scan하는 함수와 출력하는 함수도 만들었다. 그리고 기본으로 무한루프를 생성한 후에(여러분에게 모든 가지수를 보여주기 위해서)

999999를 입력하면 프로그램이 종료되게 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
int scan_integer(void);
int even(int n);
int absolute(int n);
int sign(int n);
void printer(int a, int b, int c);
 
int main(void)
{
    int a, b, c, d;
    while(1)
    {
    a = scan_integer(); //정수를 받음
    if(a==999999)
        break;
    b = even(a); //홀수 짝수 판별
    c = absolute(a); //절댓값
    d = sign(a); // 부호 판별
    printer(b, c, d); // 출력 
    }
    return 0;
}
int scan_integer(void)
{
    int x;
    printf("정수를 입력하시오: (그만하려면 999999입력):");
    scanf("%d"&x);
    return x;
}
int even(int n)
{
    int x=0;
    if(n%2==0)
        x=1;
    else
        x=0;
    return x;
}
int absolute(int n)
{
    int x=0;
    if(n<0)
        x=(-n);
    else
        x=n;
    return x;
}
int sign(int n)
{
    int y;
    if(n<0)
        y=-1;
    else if(n==0)
        y=0;
    else
        y=1;
    return y;
}
void printer(int a, int b, int c)
{
    {if(a==1)
        printf("even()의 결과: 짝수\n");
    else
        printf("even()의 결과: 홀수\n");}
    printf("absoulute()의 결과: %d\n", b);
    {if(c==-1)
    printf("sign()의 결과: 음수\n");
    else if(c==0)
    printf("sign()의 결과: 0\n");
    else
        printf("sign()의 결과: 양수\n");}
}
cs




반응형
반응형

사용자가 입력한 특정한 정수의 자리수를 반대로 출력하는 프로그램을 작성하라. 예를 들어서 사용자가 정수 1206을 입력하였다면 6021이 출력되어야 한다. 만약 음수를 입력하면 오류 메시지를 출력하라. do...while문을 사용하여 보라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main(void)
{
    int a, w, x, y, z;
do{
printf("정수를 입력하세요: ");
scanf("%d"&a);
if(a>=0)
    break;
else
    printf("음수는 안됩니다.\n");
}while(1);
w=(a/1000)%10;
x=(a/100)%10;
y=(a/10)%10;
z=a%10;
printf("%d%d%d%d\n",z,y,x,w);
return 0;
}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

화씨 온도 변환기  (0) 2016.07.26
정수 판별기  (0) 2016.07.26
순열(permutation)  (0) 2016.07.22
피보나치 수열  (0) 2016.07.22
제곱해서 더하기  (0) 2016.07.22
반응형

서로 다른 n개에서 r개를 택하여 일렬로 나열하는 방법의 수를 순열(permutation)이라 하고, nPr로 표시한다. 순열은 다음과 같은 식을 이용하여 구할 수 있다. 순열을 구하는 프로그램을 작성하라. n과 r은 사용자가 입력할 수 있도록 하라.

nPr=n(n-1)(n-2)...(n-r+1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(void)
{
    int n, r, a, total;
    printf("n의 값: ");
    scanf("%d"&n);
    printf("r의 값: ");
    scanf("%d"&r);
    total=1;
    for(a=1;a<=r;a++)
    {
    total = total*n;
    n--;
    }
    printf("순열의 값은 %d입니다.\n", total);
    return 0;
}
cs


반응형
반응형

피보나치 수열은 다음과 같이 정의되는 수열이다.

f0=0, f1=1, f(i+1)=f(i)+f(i-1) (i=1, 2, ...)

피보나치 수열에서는 앞의 2개의 원소를 합하여 뒤의 원소를 만든다. 피보나치 수열은 컴퓨터에서도 탐색 문제 등에 사용되기도 한다. 피보나치 수열을 생성하여 출력하는 프로그램을 작성하여 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(void)
{
int b, x, y, z, n;
printf("몇 번째 항까지 구할까요?");
scanf("%d"&n);
x=0; y=1;
printf("%d %d ", x ,y);
for(b=0;b<=n-2;b++//f2부터 시작하기 때문에 -2가 필요
{
    z=x+y;
    x=y;
    y=z;
    printf("%d ", z);
}
return 0;
}
cs


반응형
반응형

1^2+2^2+3^2+...+n^2 의 값을 계산하여 출력하여 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(void)
{
int a, b, total;
total = 0;
printf("n의 값을 입력하시오: ");
scanf("%d"&a);
for(b=1;b<=a;b++)
{
    total = total + b*b;
}
printf("계산값은 %d입니다.\n", total);
return 0;
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

순열(permutation)  (0) 2016.07.22
피보나치 수열  (0) 2016.07.22
실수의 거듭 제곱값  (0) 2016.07.21
1부터 n까지의 합  (0) 2016.07.21
별표 막대 그리기  (0) 2016.07.21
반응형

실수의 거듭 제곱값을 계산하는 프로그램을 작성하여 보자. 사용자로부터 하나의 실수 r와 거듭 제곱 횟수를 나타내는 정수 n을 입력받아서 r^n을 구하여 화면에 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(void)
{
double x, b;
int  n, a;
b=1;
printf("실수의 값을 입력하세요: ");
scanf("%lf"&x);
printf("거듭제곱횟수를 입력하세요: ");
scanf("%d"&n);
for(a=1;a<=n;a++)
{
    b=b*x;
 
}
printf("결과값은 %lf\n", b);
return 0;
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

피보나치 수열  (0) 2016.07.22
제곱해서 더하기  (0) 2016.07.22
1부터 n까지의 합  (0) 2016.07.21
별표 막대 그리기  (0) 2016.07.21
모든 소수를 찾는 프로그램  (0) 2016.07.21
반응형

(1+2+3+...+n)가 10000을 넘지 않으면서 가장 큰 값과 그 때의 n의 값을 구하라.

주의 할 점은 10000이 넘어야 break가 되기 때문에 a에서 1을 빼주고 total 에서 a를 빼줘야 한 다는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(void)
{
int a,total;
total = 0;
for(a=1;;a++)
{
    total+=a; // total=total+a;
    if (total>=10000)
        break;
}
printf("1부터 %d까지의 합이 %d입니다.\n", a-1, total-a);
return 0;
}
cs


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

제곱해서 더하기  (0) 2016.07.22
실수의 거듭 제곱값  (0) 2016.07.21
별표 막대 그리기  (0) 2016.07.21
모든 소수를 찾는 프로그램  (0) 2016.07.21
정수 계산기, 실수 계산기  (0) 2016.07.21
반응형

컴퓨터는 막대 그래프를 그리는 데도 사용된다. 사용자로부터 1부터 50사이의 숫자를 입력 받아서 숫자만큼의 별표를 출력하는 프로그램을 작성하라. 막대는 세로로 그려지게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(void)
{
int h, b;
do{
printf("막대의 높이(종료: -1): ");
scanf("%d"&h);
if(h==-1)
    break;
else if(h<1||h>50)
    continue;
for(b=1;b<=h;b++)
    {printf("*\n");}
}while(1);
return 0;
}
cs




반응형
반응형

2와 100 사이에 있는 모든 소수(prime number)를 찾는 프로그램을 작성하라. 정수가 소수가 되려면 1과 자기 자신만을 약수로 가져야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(void)
{
int a, b, c; //a는 나눠지는수 b는 나누는수
 
for(a=2;a<=100;a++)
{
    c=0// c는 약수 개수 카운터
for(b=1;b<=a;b++)
{
if(a%b==0
    c++;
}
if(c==2)
    printf("%d ", a);
}
return 0;
}
cs




반응형
반응형

앞장에서 간단한 정수 계산기를 만들어본 적이 있다. 이 계산기 프로그램에 메뉴를 추가하도록 한다. 다음과 같은 메뉴를 화면에 출력하고 사용자가 메뉴 중에서 하나를 선택할 때 까지 반복을 계속한다. do...while 반복문을 사용하여 사용자가 적절한 선택을 했는지를 검사하도록 하라. 만약 사용자가 A, S, M, D, Q가 아닌 다른 문자를 입력하면 "연산을 선택하시오:" 메시지를 계속해서 출력한다. 하나의 메뉴가 선택되면 해당되는 연산을 실행하고 다시 메뉴를 선택할 수 있도록 하라. 반복을 종료하는 메뉴인 Q는 break 문을 이용하여 구현하도록 하라.

1)정수계산기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
int main(void)
{
char a;
int x,y;
printf("****************\n");
printf("A----Add\n");
printf("S----Subtract\n");
printf("M----Multiply\n");
printf("D----Divide\n");
printf("Q----Quit\n");
printf("****************\n");
do{
printf("연산을 선택하시오:");
scanf(" %c"&a);
if(a=='Q')
    break;
if((a=='A')||(a=='S')||(a=='M')||(a=='D'))
{
    printf("두 수를 공백으로 분리하여 입력하세요: ");
scanf("%d %d"&x, &y);
if(a=='A')
    printf("연산의 결과는 %d입니다.\n", x+y);
else if(a=='S')
    printf("연산의 결과는 %d입니다.\n", x-y);
else if(a=='M')
    printf("연산의 결과는 %d입니다.\n", x*y);
else if(a=='D')
    printf("연산의 결과는 %d입니다.\n", x/y);
break;
}
}while(1);
return 0;
}
cs




2)실수계산기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
int main(void)
{
char a;
double x,y;
printf("****************\n");
printf("A----Add\n");
printf("S----Subtract\n");
printf("M----Multiply\n");
printf("D----Divide\n");
printf("Q----Quit\n");
printf("****************\n");
do{
printf("연산을 선택하시오:");
scanf(" %c"&a);
if(a=='Q')
    break;
if((a=='A')||(a=='S')||(a=='M')||(a=='D'))
{
    printf("두 수를 공백으로 분리하여 입력하세요: ");
scanf("%lf %lf"&x, &y);
if(a=='A')
    printf("연산의 결과는 %lf입니다.\n", x+y);
else if(a=='S')
    printf("연산의 결과는 %lf입니다.\n", x-y);
else if(a=='M')
    printf("연산의 결과는 %lf입니다.\n", x*y);
else if(a=='D')
    printf("연산의 결과는 %lf입니다.\n", x/y);
break;
}
}while(1);
return 0;
}
cs


반응형
반응형

가끔은 일정한 시간 동안 아무 일도 하지 않으면서 시간을 지연시킬 목적으로 반복문을 사용하기도 한다. 사용자에게서 하나의 수를 입력받아서 변수에 저장한다. 반복문을 사용하여 이 변수의 값을 1씩 감소시키면서 이 변수의 값이 0이 될 때까지 반복한다. 반복이 끝나면 벨소리를 낸다.

1)scanf를 for 초기식 밖에 넣는 경우

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void)
{
int a;
printf("카운터의 초기값을 입력하세요:");
scanf("%d"&a);
for(;a>0;a--//초기식이 없다. 위에서 a를 scanf로 받았기 때문
    {printf("%d ", a);}
printf("\a\n");
return 0;
}
cs


2)scanf를 for 초기식 안에 넣는 경우

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(void)
{
int a;
printf("카운터의 초기값을 입력하세요:");
for(scanf("%d"&a);a>0;a--//초기값에 scanf를 넣어줘도 된다.
    {printf("%d ", a);}
printf("\a\n");
return 0;
}
cs

결과




반응형
반응형

중첩 반복문을 사용하여서 다음과 같이 출력하는 프로그램을 작성하여 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(void)
{
    int a, b, c;
printf("정수를 입력하세요");
scanf("%d"&a);
for(b=1;b<=a;b++)
{
    for(c=1;c<=b;c++)
    {
    printf("%d ", c);
    }
printf("\n");
}
return 0;
}
cs




반응형
반응형

반복 루프를 사용하여 다음과 같은 패턴을 출력하는 프로그램 작성하라.


이는 중첩 반복 구조를 사용하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(void)
{
int x, y, z;
y=1;
for(x=1;x<=7;x++)
{
    for(z=1;z+y<=7;z++)
        printf(" ");
    
    for(y=1;y<=x;y++)
        printf("*");
 
printf("\n");
}
return 0;
}
cs


반응형
반응형

반복 루프는 파일의 끝을 만날 때까지 자료를 처리하는 데 많이 사용된다. 표준 입력에서는 사용자가 Ctrl+Z를 입력하면 파일의 끝으로 간주한다. scanf()가 Ctrl+Z를 만나면 EOF를 반환한다. 사용자가 Ctrl+Z 를 누르기 전까지, 입력한 정수의 합를 계산하여 출력하는 프로그램을 작성하여 테스트하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <limits.h>
int main(void)
{
    int n, total;
    total = 0;
    printf("정수를입력하세요 끝내려면 Ctrl+z\n");
    while(scanf("%d"&n) != EOF)
    {
    total = total + n;
    }
    printf("정수의 합은 %d입니다.\n", total);
    return 0;
}
cs


반응형
반응형

1부터 100사이의 모든 3의 배수의 합을 계산하여 출력하는 프로그램

1)while 루프

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(void)
{
int x, sum;
=1;
sum = 0;
while(x<=100)
{
if(x%3==0)
{sum = sum +x;}
x++;
}
printf("1부터 100사이의 모든 3의배수의 합은 %d입니다.\n", sum);
return 0;
}
cs


2)for 루프

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(void)
{
int x, sum;
sum = 0;
for(x=1;x<=100;x++)
{
if (x%3==0)
    sum = sum + x;
}
printf("1부터 100사이의 모든 3의배수의 합은 %d입니다.\n", sum);
return 0;
}
cs


3)do..while 루프

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(void)
{
int x, sum;
=1;
sum = 0;
do
{
if(x%3==0)
{sum = sum +x;}
x++;
}
while(x<=100);
printf("1부터 100사이의 모든 3의배수의 합은 %d입니다.\n", sum);
return 0;
}
cs


반응형
반응형

복리는 이자 계산 중 하나인데 일정 기간마다 원금에 이자를 더한 것을 새로운 원금으로 하여 계산하는 방법이다.


이를 씨언어로 표현하면

#include <stdio.h>

int main(void)

{

double total, rate, investment;  //(총금, 이율, 원금)

int year, n;    //(돈 맡기는 기간, 출력 년도)

n =1;

printf("원금을 입력하세요");

scanf("%lf", &investment);

printf("이율을 입력하세요");

scanf("%lf", &rate);

printf("기간(년)을 입력하세요");

scanf("%d", &year);

total = investment;

rate = rate / 100.0; 

printf("연도 원리금\n");

while(year>0)

{

total = total *(1+rate);

printf("%d %lf\n",n, total);

year--;

n++;

}

return 0;


}

출력값



for문으로도 충분히 나타낼 수 있다.

반응형
반응형

이 알고리즘은 파이 값을 계산 하는 알고리즘이다. 

가 된다.

따라서 이를 알고리즘으로 작성하면

#include <stdio.h>  //헤더파일

int main(void)

{

double w, x, y, z, pii;  // w,x,y,z 는 각각 분자와 분모 숫자 pii는 pi값 

int count;

w = 4.0;

x = 2.0;

y = 3.0;

z = 4.0;

pii = 3.0;


printf("루프카운트를입력하세요");

scanf("%d", &count);

while(count>0) // count가 0보다작아지면 반복이 끝난다.

{

pii = pii + (w/(x*y*z));

w = w*(-1.0);

x = x+2.0;

y = y+2.0;

z = z+2.0;

count--;

}

printf("파이값은 %lf 입니다\n", pii);

return 0;

}


가 되고 출력값은

루프카운트를입력하세요9999999999

파이값은 3.141593 입니다.

가 된다.



반응형

+ Recent posts