01.
더보기
#include<stdio.h>
extern int x;
int main(void)
{
x = 20;
printf("%d", x);
return 0;
}
int x = 10;
//처음 전역변수를 부를 때, 초기화를 시키지 않는다면, extern시 바로 초기화할 수 있다.
//하지만 그렇지 않다면, extern으로 전역변수를 땡겨오고, 함수내부에서 변수값 변경할 수 있다.
02.
더보기
#include <stdio.h>
#define MAXSIZE 3
int stack[MAXSIZE];
int top = -1;
int isfull(void);
void push(int);
int main(void)
{
push(3);
push(5);
push(9);
push(1);
return 0;
}
int isfull()
{
return (top == MAXSIZE - 1);
}
void push(int num)
{
if (isfull())
printf("모두 찬 스택입니다.\n");
else {
top++;
stack[top] = num;
printf("스택 첨자 %d에 %d 저장합니다.\n", top, num);
}
return;
}
03.
더보기
#include <stdio.h>
#define MAXSIZE 3
int stack[MAXSIZE];
int top = -1;
int isfull(void);
int isempty(void);
void push(int);
int pop(void);
int main(void)
{
push(3);
push(5);
pop();
push(9);
push(1);
return 0;
}
int isfull()
{
return (top == MAXSIZE-1);
}
int isempty()
{
return (top == -1);
}
int pop()
{
if (isempty()) {
printf("비어있는 스택입니다.\n");
return -1;
}
else {
printf("스택 첨자 %d에서 %d를 제거합니다.\n", top, stack[top]);
return stack[top--];
}
}
void push(int num)
{
if (isfull())
printf("모두 찬 스택입니다.\n");
else {
top++;
stack[top] = num;
printf("스택 첨자 %d에 %d 저장합니다.\n", top, num);
}
}
04.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sumplus(int);
int main(void) {
int input, sum;
printf("양의 정수를 입력 >> ");
scanf("%d", &input);
sum = sumplus(input);
printf("sum = %d\n", sum);
return 0;
}
int sumplus(int num)
{
static int count; //정적변수는 초기화 안해주면 자동으로 0임
printf("%d번 호출\n", ++count);
if (num == 1)
return 1;
else
return num + sumplus(num - 1);
}
05.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printrsp(int, int);
void game(int, int);
int main(void)
{
int input, bot;
srand((long)time(NULL));
bot = rand() % 3;
printf("가위(0) 바위(1) 보(2) 중에서 하나 입력 -> ");
scanf("%d", &input);
if (input < 0 || input > 2) {
printf("잘못된 입력입니다.\n");
return 0;
}
printrsp(input, bot);
puts("");
game(input, bot);
}
void game(int usr, int sys)
{
if ((usr == 0 && sys == 2) ||
(usr == 1 && sys == 0) ||
(usr == 2 && sys == 1))
{
printf("당신의 승리입니다.\n");
}
else if (usr == sys)
{
printf("무승부입니다.\n");
}
else
{
printf("컴퓨터의 승리입니다.\n");
}
}
void printrsp(int usr, int sys)
{
printf("당신은 ");
switch (usr)
{
case 0:
printf("가위");
break;
case 1:
printf("바위");
break;
case 2:
printf("보");
break;
}
printf("이고, 시스템은 ");
switch (sys)
{
case 0:
printf("가위");
break;
case 1:
printf("바위");
break;
case 2:
printf("보");
break;
}
printf("입니다.\n");
}
06.
더보기
#include <stdio.h>
int gvar = 20;
void printgvar(void);
int main(void)
{
printf("%d", gvar);
printgvar();
printf("%d", gvar);
return 0;
}
static int gvar = 25;
void printgvar(void)
{
printf("%d", gvar);
//됩니다. 이름이 같더라도 메모리 저장 공간이 독립적이라 서로 다른 개체로 봐도 무방합니다.
}
07.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100;
int number;
static int min, max;
void setNumber(void);
void printHead(void);
void printHigher(int);
void printLower(int);
void printAnswer(void);
int main(void)
{
int input;
setNumber();
printHead();
scanf("%d", &input);
while (input != number)
{
if (input < number)
printHigher(input);
else
printLower(input);
printf("%d에서 %d사이의 정수를 다시 입력하세요. > ", min, max);
scanf("%d", &input);
}
printAnswer(input);
return 0;
}
void setNumber(void)
{
srand((long)time(NULL));
number = rand() % MAX + 1;
min = 1;
max = 100;
}
void printHead(void)
{
printf("%d 에서 %d까지의 하나의 정수가 결정되었습니다.\n", min, max);
printf("이 정수를 맞추어 보세요? > ");
}
void printHigher(int input)
{
printf("\n 맞추어야 할 정수가 입력한 정수 %d보다 큼니다.\n", input);
min = input + 1;
}
void printLower(int input)
{
printf("\n 맞추어야 할 정수가 입력한 정수 %d보다 작습니다.\n", input);
max = input - 1;
}
void printAnswer(int input)
{
printf("\n 축하합니다! 정답은 %d입니다.\n", input);
}
08.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
int number, count = 0;
static int min, max;
void setNumber(void);
void printHead(void);
void printHigher(int);
void printLower(int);
void printAnswer(void);
int main(void)
{
int input;
setNumber();
printHead();
scanf("%d", &input);
while (input != number)
{
if (input < number)
printHigher(input);
else
printLower(input);
if (count >= 5) {
printf("\n\t최대 시도 횟수인 %d회 동안 맞추지 못하였습니다. 종료합니다\n", count);
return 0;
}
printf("%d에서 %d사이의 정수를 다시 입력하세요. > ", min, max);
scanf("%d", &input);
}
printAnswer(input);
return 0;
}
void setNumber(void)
{
srand((long)time(NULL));
number = rand() % MAX + 1;
min = 1;
max = 100;
}
void printHead(void)
{
printf("%d 에서 %d까지의 하나의 정수가 결정되었습니다.%d\n", min, max,number);
printf("이 정수를 맞추어 보세요? > ");
}
void printHigher(int input)
{
printf("\n 맞추어야 할 정수가 입력한 정수 %d보다 큼니다. (시도횟수: %d번)\n", input, ++count);
min = input + 1;
}
void printLower(int input)
{
printf("\n 맞추어야 할 정수가 입력한 정수 %d보다 작습니다. (시도횟수: %d번)\n", input, ++count);
max = input - 1;
}
void printAnswer(int input)
{
printf("\n 축하합니다! 정답은 %d입니다.\n", input);
}