목차
1.정적 지역변수 사용
#include <stdio.h>
void sum();
void subtract();
void multiply();
void divide();
double a, b;
int main()
{
char c;
while (1)
{
printf("연산을입력하시오:");
scanf(" %lf %c %lf", &a, &c, &b);
switch (c)
{
case '+': sum(); break;
case '-': subtract(); break;
case '*': multiply(); break;
case '/': divide(); break;
default: {
printf("지원하지않는연산자입니다.");
printf("\n");
}break;
}
}
}
void sum()
{
static int count=0;
count++;
printf("덧셈은총%d번실행되었습니다.\n", count);
printf("연산결과: %lf\n",a+b);
}
void subtract()
{
static int count = 0;
count++;
printf("뺄셈은총%d번실행되었습니다.\n", count);
printf("연산결과: %lf\n", a - b);
}
void multiply()
{
static int count = 0;
count++;
printf("곱셈은총%d번실행되었습니다.\n", count);
printf("연산결과: %lf\n", a * b);
}
void divide()
{
static int count = 0;
count++;
printf("나눗셈은총%d번실행되었습니다.\n", count);
printf("연산결과: %lf\n", a / b);
}
1-2.전역변수사용
#include <stdio.h>
int sum_count = 0;
int sub_count = 0;
int mul_count = 0;
int div_count = 0;
void sum();
void subtract();
void multiply();
void divide();
double a, b;
int main()
{
char c;
while (1)
{
printf("연산을입력하시오:");
scanf(" %lf %c %lf", &a, &c, &b);
switch (c)
{
case '+': sum(); break;
case '-': subtract(); break;
case '*': multiply(); break;
case '/': divide(); break;
default: {
printf("지원하지않는연산자입니다.");
printf("\n");
}break;
}
}
}
void sum()
{
sum_count++;
printf("덧셈은총%d번실행되었습니다.\n", sum_count);
printf("연산결과: %lf\n",a+b);
}
void subtract()
{
sub_count++;
printf("뺄셈은총%d번실행되었습니다.\n", sub_count);
printf("연산결과: %lf\n", a - b);
}
void multiply()
{
mul_count;
printf("곱셈은총%d번실행되었습니다.\n", mul_count);
printf("연산결과: %lf\n", a * b);
}
void divide()
{
div_count++;
printf("나눗셈은총%d번실행되었습니다.\n", div_count);
printf("연산결과: %lf\n", a / b);
}
2.주사위 면
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_dice_face()
{
static int a,count = 0, c0 = 0, c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0;
a=rand() % 6;
count++;
if (a == 0)
c0++;
else if (a == 1)
c1++;
else if (a == 2)
c2++;
else if (a == 3)
c3++;
else if (a == 4)
c4++;
else
c5++;
if (count % 100 == 0)
printf("%d %d %d %d %d %d\n", c0, c1, c2, c3, c4, c5);
}
int main()
{
srand((unsigned)time(NULL));
while (1)
{
get_dice_face();
}
}
3.초기화 한번만 수행
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_random()
{
static int inited = 0;
if (inited == 0)
{
srand((unsigned)time(NULL));
inited++;
}
return rand();
}
int main()
{
int i = 0;
while (i<5)
{
i++;
printf("%d번째호출값:%d\n",i,get_random());
}
}
4.
#include <stdio.h>
double recursive(int n)
{
if (n == 1)
return 1;
else
return 1.0 / n + recursive(n - 1);
}
int main()
{
int n;
printf("n의값을입력하시오:");
scanf("%d", &n);
printf("값은%lf입니다.\n", recursive(n));
}
5.
#include <stdio.h>
int amount;
int save()
{
int n;
printf("저축할금액:");
scanf("%d", &n);
amount += n;
}
int draw()
{
int n;
printf("인출할금액:");
scanf("%d", &n);
amount -= n;
}
int main()
{
int n;
while (1) {
printf("메뉴를선택하세요:저축(1),인출(2):");
scanf("%d", &n);
if (n == 1)
save();
else if (n == 2)
draw();
else
printf("잘못입력하셨습니다.\n");
printf("현재잔액은%d입니다.\n", amount);
}
}
6.
#include <stdio.h>
int get_tri_number(int n)
{
if (n == 1)
return 1;
else
return n + get_tri_number(n - 1);
}
int main()
{
int n;
printf("n의값을입력하시오:");
scanf("%d", &n);
printf("결과값:%d\n", get_tri_number(n));
}
7.
#include <stdio.h>
int b_c(int n, int k)
{
if (k == 0 || k == n)
return 1;
else
return b_c(n - 1, k - 1) + b_c(n - 1, k);
}
int main()
{
int n,k;
printf("n과k의값을입력하시오:");
scanf("%d %d", &n, &k);
printf("결과값:%d\n", b_c(n,k));
}
8.
#include <stdio.h>
int s_d(int x)
{
if (x > 0)
{
s_d(x / 10);
printf("%d ", x % 10);
}
}
int main()
{
int x;
printf("정수를입력하시오:");
scanf_s("%d", &x);
s_d(x);
printf("\n");
}
2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 8장 연습문제
2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 7장 연습문제
2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 5장 연습문제
'프로그램 개발' 카테고리의 다른 글
쉽게 풀어쓴 C언어 express 11장 연습문제 (0) | 2016.09.25 |
---|---|
쉽게 풀어쓴 C언어 express 10장 연습문제 (0) | 2016.09.25 |
쉽게 풀어쓴 C언어 express 8장 연습문제 (0) | 2016.09.24 |
쉽게 풀어쓴 C언어 express 7장 연습문제 (0) | 2016.09.24 |
쉽게 풀어쓴 C언어 express 5장 연습문제 (2) | 2016.09.24 |