레이블이 C Programming basic인 게시물을 표시합니다. 모든 게시물 표시
레이블이 C Programming basic인 게시물을 표시합니다. 모든 게시물 표시

2010년 4월 17일 토요일

난수 생성

#include

#include // rand(), srand() 함수를 사용하기 위해서 인클루드 함
#include // time() 함수를 사용하기 위해서 인클루드 함



int random(int);
void ran (int num[]);



void main(){



int tt[100]; //생성된 난수가 저장될 배열

srand(time(0)); //매번 실행 할때 마다 같은 순서의 난수값을 발생시키 않기 위해 현재 시간값을 준다.
ran(tt); //100개의 난수 발생

printf("\n*** 1부터100까지의 발생 된 난수 ***");

for(int r=0 ; r<100; r++){ //100개 난수
if(r%20 == 0) printf("\n");
printf("%3d ",tt[r]);
}



}




void ran(int num[]){

int i,j;
int sfound;

for (i=0; i<100; ++i){

while(1){

num[i] = random(100);
sfound = 0;// 이미있는값인지확인하기위해플래그설정

for (j=0; j if ( num[j] == num[i] ){ // 같은값이있으면 플래그값을 참으로
sfound = 1;
break;
}
}
if (!sfound)
break; // 같은값이없으면while문탈출
}
}
}


int random(int n) //난수 발생 함수
{
int res;
res = rand() % n; //0에서 n-1까지 난수 발생
return res+1; //그값에 1을 더해주어 반환하면 1에서 n까지 난수 발생
}

특수키의 아스키코드값, 스캔코드값 알아내기~

#include
#include

void main()
{
char c1, c2;

c1 = getch();

if(c1 == -32 || c1 ==0){

c2=getch();

printf("특수key Asciicode : %d Scancode : %d \n",c1,c2);
}
else{
printf("일반key Asciicode : %d \n",c1);
}
}

큐~

#include

#define MAX 3 //Maximum queue size

int Front = 0;
int Rear = 0;

int CQ[MAX];

void Enqueue(int item)
{
if((Rear+1)%MAX == Front)
printf("Queue is full \n");
else
{
Rear = (Rear+1)%MAX;
printf("Rear = %d, Front = %d \n",Rear,Front);

CQ[Rear]=item;
}
}

void Dequeue(void)
{
if(Front==Rear)
printf("Queue is Empty \n");
else
{
printf("Rear=%d, Front=%d \n", Rear,Front);
Front=(Front+1)%MAX;
printf("%d \n", CQ[Front]);
}
}

int main(void)
{
int Num;

printf("원형큐에 삽입할 데이터를 입력하시오.");
scanf("%d", &Num);
Enqueue(Num);

printf("원형큐에 삽입할 데이터를 입력하시오.");
scanf("%d", &Num);
Enqueue(Num);

printf("원형큐에서 데이터를 삭제합니다.");
Dequeue();

printf("원형큐에 삽입할 데이터를 입력하시오.");
scanf("%d", &Num);
Enqueue(Num);

printf("원형큐에서 데이터를 삭제합니다.");
Dequeue();

printf("원형큐에 삽입할 데이터를 입력하시오.");
scanf("%d", &Num);
Enqueue(Num);

printf("원형큐에 삽입할 데이터를 입력하시오.");
scanf("%d", &Num);
Enqueue(Num);
return 0;
}

스택~

#include

#define Max 100 //Maximum stack size

typedef char data;

data stack[Max]; //캐릭터형 스택 생성

int Top = -1; //공백스택 상태


void Push(data Item)
{
if (Top >= Max)
printf("stack is full \n");
else

Top++;
stack[Top] = Item;

}

data Pop()
{
if(Top==-1)
printf("Stack is Empty \n");

else
return(stack[Top]);
//Top--;

}

int main(void)
{
data w, Item1;

printf("'q'를 입력시 입력이 종료 됩니다. \n");

printf("문자를 입력하세요 : ");
scanf("%c", &w);
fflush(stdin);

while(w != 'q'){
Push(w);
printf("문자를 입력하세요 : ");
scanf("%c",&w);
fflush(stdin);
}


while(Top != -1){
Item1=Pop(); Top--;
printf("반환된 문자 : %c \n",Item1);
}

return 0;
}

연결자료구조~

#include
#include


struct node {
int Data;
struct node *next;
};
struct node *head=NULL, *del_node;

//struct node *tmp=head, *del_node;

void main()
{
head = (struct node*)malloc(sizeof(struct node));
head ->Data = 5;
head ->next = (struct node*)malloc(sizeof(struct node));
head ->next->Data=3;
head ->next->next=(struct node*)malloc(sizeof(struct node));
head ->next->next->Data=45;
head ->next->next->next= (struct node*)malloc(sizeof(struct node));
head ->next->next->next->Data=21;
head ->next->next->next->next= (struct node*)malloc(sizeof(struct node));
head ->next->next->next->next->Data=9;
head ->next->next->next->next->next=NULL;


del_node = head;
head = head->next;
free(del_node);

while(head != NULL)
{
printf("%d \n", head->Data);
head = head ->next;
}

getchar();
}

순차자료구조~

#include

void insert();
void delet();

int num[10]={1,2,3,4,5,6}; //배열선언

void main()
{
int e;

insert();
delet();

scanf("%d",&e); //출력을 보기좋게하여주는 문장
}

void insert()/*원소를 삽입하는함수*/
{
int q,l;

printf("삽입할 인덱스값을 입력하시오.\n");
scanf("%d",&q);

printf("추가할 값을 입력하시오.\n");
scanf("%d",&l);

for (int j=9 ; j>q ; j--){
num[j]=num[j-1]; //삽입할곳의 데이터가 가장마지막데이터부터 오른쪽으로 자리이동을한다.
}

num[q]=l;

for (int k=0 ; k<10 ; k++){
printf("%d \t", num[k]);
}

}

void delet() /*원소를 삭제하는 함수부분*/
{
int r;
printf("삭제할 인덱스값을 입력하시오.\n");
scanf("%d",&r);

for (int i=r ; i<10 ; i++){
num[i]=num[i+1]; //삭제한데이터의 자리로 다음 인덱스의 값이 왼쪽으로 이동한다.
}

for (int k=0 ; k<10 ; k++){
printf("%d \t", num[k]);
}
}

템플릿을 이용한 오름차순정렬하기~

#include
#include

template //템플릿 상수 선언

void Tsort(T *cip,int n) //
{
T temp; //임시 저장 변수도 오는 형을 다 받아야대니까..

for(int i=0 ; i for(int j=n-1 ; j>=i+1 ; j--){

if(cip[i] > cip[j]) //앞에 수가 크면 뒤로 보내야댄다.
{
temp = cip[i]; //임시저장 공간에 저장하고
cip[i] = cip[j]; //복사하고
cip[j] = temp; //임시저장 공간에 있던것을 복사
}
}
}
}

template

void Output(T *p) //오는 형태를 다 출력하려고 출력 함수에서도 템플릿 적용
{
for(int i=0; i<10 ; i++){

cout< }

cout<}

void main()
{
/*값 초기화*/
int iary[10]={5,3,7,6,9,8,1,4,2,0};
char cary[10]={'n','c','z','w','r','d','s','a','q','o'};
float fary[10]={9.2, 8.2, 1.2, 0.2, 3.6, 5.3, 3.4, 2.9, 1.9, 7.3};

/*소트함수 호출*/
Tsort(iary,10);
Tsort(cary,10);
Tsort(fary,10);

/*출력함수 호출*/
Output(iary);
Output(cary);
Output(fary);

getch();
}

성적관리 프로그램~

#include
#include //getch() 쓰기위해
#include // cls쓰기위해
#include

char menu();
void input(int p1[30][5], char p2[30][25]);
void output(int p1[30][5], char p2[30][25]);
void search(int p1[30][5], char p2[30][25]);
void del(int p1[30][5], char p2[30][25]);
void sort(int p1[30][5], char p2[30][25]);

void main()
{
int score[30][5] = {{90,80,100},{70,80,45},{80,90,70},{75,90,65},{85,95,70},{100,80,65},
{75,65,90},{98,70,70},{82,45,75},{49,55,80},{80,50,65},{80,75,66},
{79,73,77},{59,90,77},{88,100,95},{88,60,70},{90,55,82},{29,77,59},
{87,69,90},{100,98,95},{45,91,88},{89,75,66},{88,100,72},{79,82,95},
{88,95,22},{80,75,60},{100,80,92},{95,75,100},{77,100,65},{66,75,98}}; //서른명의 점수

char name[30][25]={"Kimyt","Kimjj","Sinkh","Leemr","Nojh","Huj","Sondi","Ahnyg","Kimsj","Leeej",
"Humu","Kimdb","Jungks","Kimsk","Leesk","Kimjh","Honges","Kimka","Leehj","Kwonht",
"Uooks","Jungsk","Seoos","Kanghs","Namdo","Junyb","Parkjs","Gwaknk","Yangcj","Leesd"};//서른명의이름

char menuNumber;
while(1){

system("cls");
menuNumber = menu();

if(menuNumber == '1'){ system("cls"); input(score,name);}

else if(menuNumber == '2'){system("cls"); output(score,name); }

else if(menuNumber == '3'){system("cls"); search(score,name); }

else if(menuNumber == '4'){system("cls"); del(score,name); }

else if(menuNumber == '5'){ break;}

}
}

char menu()
{

printf("\n\n\n\n\n\n");
printf(" 1. 총 점 구 하 기 \n\n");
printf(" 2. 성적 출력 하기 \n\n");
printf(" 3. 개인 성적 확인 \n\n");
printf(" 4. 성 적 수 정 \n\n");
printf(" 5. 종 료 \n\n");

printf(" # 메뉴를 선택하세요 : ");

char menuNumber=getchar();

return menuNumber;

}

void input(int p1[30][5], char p2[30][25]){

/* printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 1번 입력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
int i,j;

for(i=0 ; i<30;i++){
p1[i][3] = 0;
} //재차 눌를때 누적방지..

for(i=0;i<30;i++){

for(j=0;j<3;j++){

p1[i][3] += p1[i][j];
}
} //총점 구하기

sort(p1,p2); //등수에 따라 정렬함수 호출

printf("\n\n\n\n\n\n\n\n\n");
printf(" 총 점 계 산 중 \n\n");

printf(" ");
for(i=0 ; i<11 ; i++)
{
printf("[");
Sleep(150);
printf("]");
Sleep(150);
}

/*보기좋게 하기 위해서*/
printf("\n\n\n #계산이 완료 되었습니다. 아무키나 누르면 주메뉴로 돌아 갑니다. \n");
getch();

return;
}

void output(int p1[30][5], char p2[30][25]){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 2번 출력력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
int i;

printf("[등수] [ 이름 ] [ 국 영 수 ] [ 총점 ] [ 평균 ]\n");

for(i=0 ; i<30; i++){

printf("%4d %7s %4d %4d %4d %4d %8.2lf \n",p1[i][4],p2[i],p1[i][0],p1[i][1],p1[i][2],p1[i][3],double(p1[i][3])/3);

/*10명이 출력대고 엔터 치라고 하고 출력이 끝나으면 주메뉴로 돌아가게한다.*/
if( (i%10) == 9 ) {

if( i == 29) {
printf("#출력이 완료 되었습니다. 아무키나 누르면 주메뉴로 돌아 갑니다.");
getch();
}
else{
printf("Press Enter key to continue...");
getch();
printf("\n");
}
}
}

return;
}

void search(int p1[30][5], char p2[30][25]){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 3번 검색하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
int i,temp1 = 0;
char temp[80]={0,}; //임시 저장공간

while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복

printf("#학생이름를 입력하세요 : "); //이름 입력 받기
scanf("%s",temp);

for(i=0; i<30; i++){

if(strcmp(temp,p2[i]) == 0){ //존재 하면 그학생의 성적 출력

printf("\n %s의 성적입니다. \n",p2[i]);
printf(" 등수 : %5d등 \n", p1[i][4]);
printf(" 총점 : %5d점 \n", p1[i][3]);
printf(" 평균 : %5.2lf점 \n",double(p1[i][3])/3);
printf(" 국어 : %5d점 \n", p1[i][0]);
printf(" 영어 : %5d점 \n", p1[i][1]);
printf(" 수학 : %5d점 \n\n", p1[i][2]);
temp1++; //이름이 있으면 증가.
}

}

if(temp1 == 0){
printf("이름이 존재하지않습니다. 확인 후 다시 입력하세요. \n"); } //출력대면 증가대니까없으면 0이 남는다

temp1 = 0; // loop안에서 증가상태로 남아있으면 로직에러

}


return;

}
void del(int p1[30][5], char p2[30][25]){

/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 4번 삭제하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
int i,j,k,choi,jumsu,temp1 = 0;
char temp[80]={0,}; //임시 저장공간

while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복

printf("#수정할 학생이름를 입력하세요 : "); //이름 입력 받기
scanf("%s",temp);

for(i=0; i<30; i++){

if(strcmp(temp,p2[i]) == 0){ //존재 하면 그학생의 성적 정정

while(1){

printf("#정정할 과목을 선택하세요.\n");
printf(" 국어(1),영어(2),수학(3) : ");
scanf("%d",&choi);

if(choi == 1 ){ //1번 국어 점수를 선택했을때

while(1){
printf(" 정정할 국어 점수를 입력하세요 : ");
scanf("%d",&jumsu);

if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][0] = jumsu;

break; //맞게 넣었으면 loop탈출
}

else{
printf("잘못 입력하셨습니다. 다시 입력하세요. \n"); //새로운 점수 받기..
}

}

break; //과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 1번 선택시 if 문 종료

else if(choi == 2 ){ //2번 영어 점수를 선택했을때

while(1){
printf(" 정정할 영어 점수를 입력하세요 : ");
scanf("%d",&jumsu);

if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][1] = jumsu;

break;//맞게 넣었으면 loop탈출
}

else{
printf("잘못 입력하셨습니다. 다시 입력하세요. \n");//새로운 점수 받기..
}

}
break;//과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 2번 선택시 if 문 종료

else if(choi == 3 ){

while(1){
printf(" 정정할 수학 점수를 입력하세요 : ");
scanf("%d",&jumsu);

if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][2] = jumsu;

break;//맞게 넣었으면 loop탈출
}

else{printf("잘못 입력하셨습니다. 다시 입력하세요. \n");}//새로운 점수 받기.
}

break;//과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 3번 선태식 if 문 종료

else { printf("잘못 입력하셨습니다. 다시 입력하세요. \n");}

}//과목선택의 예외처리 While종료


temp1++; //이름이 있으면 증가.
}//존재하는지 물어보는 if문닫기

} //for 닫기

if(temp1 == 0){
printf("이름이 존재하지않습니다. 확인 후 다시 입력하세요. \n"); } //출력대면 증가대니까없으면 0이 남는다

temp1 = 0; // loop안에서 증가상태로 남아있으면 로직에러

}//while loop닫기

//정정한 결과로 다시 계산
for(i=0 ; i<30;i++){ //총점 초기화.. 다시 누적현상발생하기때문에
p1[i][3] = 0;
}

for(j=0;j<30;j++){

for(k=0;k<3;k++){

p1[j][3] += p1[j][k];
}
} //총점 구하기

sort(p1,p2); //등수에 따라 정렬함수 호출

return;
}

void sort(int p1[30][5], char p2[30][25]){

int i, j,k, temp ; //loop제어변수 임시저장변수 선언
int rank = 1, rank1 = 1; //등수 제어변수
char chr[25]; //임시 문자열 복사 변수

for(i=0 ; i<29; i++){ // score[0][4] 와 score[1][4]~score[30][4]까지비교
// score[28][4]과 score[29][4]까지 비교하면 끝
for(j=29 ; j>=i+1 ; j--){

if(p1[i][3] for(k=0 ; k<4; k++){ //총점이 정렬대는것에 따라
temp=p1[i][k]; // 각 과목도 정렬대고
p1[i][k]=p1[j][k];
p1[j][k]=temp;
}
strcpy(chr,p2[i]);
strcpy(p2[i],p2[j]);
strcpy(p2[j],chr); //이름도 총점에 정렬에 따라 이동
}
}
}

p1[0][4] = 1; //0순위는 무조건 1등~

for(i=0 ; i<30; i++){

if(p1[i][3]==p1[i+1][3]){
rank1++;
p1[i+1][4] = p1[i][4]; //같으면 두사람의 순위는 같게 댄다.
}

else{
p1[i][4] = rank; //같지 않았다면 순차적 랭킹을 더해준다.
p1[i+1][4] = rank+1;

if(rank1 >= 1){ rank+= rank1; rank1 = 1;} //같은사람 카운터가 1사람이상이면 그만큼을 랭크에 더한다.
else { rank++; } //아니면 그냥 순차 차운터..
}
}
}

swap을 이용하여 숫자위치 바꾸기 프로그램~

#include


void main()
{
int i,temp,num[]={1,8,4,2,7,9,10};

int size = sizeof(num)/sizeof(num[0]); //배열 크기 입력

printf("처음 배열에 저장된 값 : "); //처음 주어진 배열 출력
for(i=0; i printf(" %3d ",num[i]);
}

printf("\n");

for(i=0; i
temp = num[i];
num[i] = num[size-1-i];
num[size-1-i] = temp;
}

printf("바뀐 배열에 저장된 값 : "); //바꾼후 결과 출력
for(i=0; i printf(" %3d ",num[i]);
}

printf("\n");

}

10개의 정수를 입력받아 홀수,짝수 나누어 출력하기~

#include

void main()
{
int num[10],i;


for(i = 0 ; i<10 ; i++){ //정수 10개 입력받기

printf("num[%d] = ",i);
scanf("%d",&num[i]);
}

printf("홀수 : ");
for(i =0 ; i < 10 ; i++){

if(num[i]%2 != 0){ //홀수인지 검사

printf(" %3d ", num[i]);
}

}

printf("\n");

printf("짝수 : ");
for(i = 0; i < 10 ; i++){ //짝수인지 검사

if(num[i]%2 == 0){

printf(" %3d ", num[i]);
}
}

printf("\n");

}

임의의 숫자 5개를 입력받아 최대값 구하기 출력 하는 프로그램~

#include

void main()
{
double num[5];
double a; //비교한값 넣을 변수
int j;

printf("다섯개의 숫자를 입력하세요. : ");
scanf("%lf %lf %lf %lf %lf",&num[0],&num[1],&num[2],&num[3],&num[4]); //5개의 숫를 입력 받음

a= num[0]; // 첫입력변수를 최대값으로 넣음

for( j = 1; j< 5 ;j++){ // 최대값을 비교

if (num[j]>a) { a = num[j]; }

}

printf("가장 큰 값은 : %.2lf입니다. \n", a );

}

문자열에서 숫자만 골라 합을 출력하는 프로그램~

#include
#include

void main()
{

char chr[100];
int i,size,sum=0;

printf("# 문자열을 입력하시오. : ");
scanf("%s",chr);
fflush(stdin);

size = strlen(chr);

for(i=0; i if(chr[i]-'0' >= 0 && chr[i]-'0' <= 9) //숫자로 변환가능한 문자상수에서 '0'을빼면 숫자상수가 된다.
{
sum +=(chr[i]-'0'); //숫자상수를 저장하여야하기때문에 chr[i]-'0'을 누적한다.
}

}

printf("문자열안의 숫자의 총합은 %d입니다. \n",sum);
}

회문 검사 프로그램~

#include
#include

int palindrome(char *);

void main()
{
char chr[100];
int res;

printf("# 문자열을 입력하시오. : ");
scanf("%s",chr);
fflush(stdin);

res = palindrome(chr); // 입력 받은 문자열이 화문인지 검사함수 호출

if( res == 1){
printf("\"%s\"문자열은 회문입니다.\n",chr);
}

else if (res == 0){
printf("\"%s\"문자열은 회문이 아닙니다.\n",chr);
}
}


int palindrome(char *p)
{
int i,size,chp=0; //글자열의 길이를 반으로 나누었을때 수와 앞뒤글자가 같은 수가 같아야 회문

size = strlen(p);

for(i = 0 ; i < size ; i++){

if(p[i] >= 'a' && p[i] <= 'z'){ p[i] -= 'a' - 'A';} //대문자로 바꿔준다.
}

for(i = 0 ; i < size/2 ; i++){ //문자열 반만 검사

if(p[i] == p[size-1-i]){ //문자열처음과 끝 검사
chp++;
}

}

if((size/2) == chp ) { return 1;}

else { return 0; }
}

10개의 정수를 입력받아 홀수는 오른쪽부터 짝수는 왼쪽부터 채우는 프로그램~

#include

void main()
{
int num[10],inum;
int i=0,j=9,k=0;

while(k !=10){
printf("정수를 입력하세요. : ");
scanf("%d",&inum);

if(inum%2==0) //짝수면 앞에서 부터 저장
{
num[j] = inum;
j--;
}
else //홀수면 뒤에서 부터 저장
{
num[i] = inum;
i++;

}

k++;
}

/*배열에 저장대었을때 구분저장이 되어있기때문에 구분댄 상태로 출력된다*/

printf("[");
for(i=0 ; i<10 ; i++){

printf("%3d ",num[i]);
}

printf("]\n");


}

박스가 움직이는 프로그램~

#include
#include
#include

void gotoxy(int x, int y);
void draw(int,int,int,int);
void red();

void main(void)
{
int sx=38,ex=41,sy=9,ey=11; //중앙에 박스 그리기
char ch = 1; //입력 받을 키값 esc 27이 들어오면 종료가 대니까 27이아닌값으로 초기화

draw(sx,ex,sy,ey);

while(ch!=27){ // esc의 아스키값 27이면 종료

ch = getch();
fflush(stdin);

/*각 방향키 위(8), 아래(2), 왼쪽(4), 오른쪽(6)키가 눌렸을시 행동 실행시 창으 최대 크기는 80 by 24로 본다.*/
/*각 벽에 상자가 붙을시 더옮기지 말라고 경고음을 주고 그래도 눌른다면 다시 벽에 붙은 사각형을 그려준다.*/
switch(ch){

case '8' :
system("cls");
draw(sx,ex,sy-1,ey-1); //위로 박스를 올리면 시작과 끝의 y점의 수치가 감소.
Sleep(200);//박스가 그려지는 시간 지연
sy-=1; ey-=1;//그린후 좌표 기억

if(sy == 1) {
printf("\a");
system("cls");
draw(sx,ex,sy,ey);
} //경계선에 다으면 더입력하지 말라고 경고음을 낸다
else if(sy < 1) {
printf("\a");
system("cls"); //경고를 무시하고 눌를시 경계에 닿은 원을 그리고 좌표를 기억한다.
draw(sx,ex,sy+1,ey+1);
sy+=1; ey+=1;
}
break;

case '2' :
system("cls");
draw(sx,ex,sy+1,ey+1); //아래로 박스를 내리면 시작과 끝의 y점의 수치가 증가.
Sleep(200);//박스가 그려지는 시간 지연
sy+=1; ey+=1;

if(ey == 24) {
printf("\a");
system("cls");
draw(sx,ex,sy,ey);
} //끝라인경계선에 다으면 더입력하지 말라고 경고음을 낸다
else if(ey > 24) {
printf("\a");
system("cls"); //경고를 무시하고 눌를시 경계에 닿은 원을 그리고 좌표를 기억한다.
draw(sx,ex,sy-1,ey-1);
sy-=1; ey-=1;
}
break;

case '4' :
system("cls");
draw(sx-1,ex-1,sy,ey); //왼쪽으로 박스를 옮기면 시작과 끝의 x점의 수치가 감소.
Sleep(200); //박스가 그려지는 시간 지연
sx-=1; ex-=1;

if(sx == 1) {
printf("\a");
system("cls");
draw(sx,ex,sy,ey);
} //경계선에 다으면 더입력하지 말라고 경고음을 낸다
else if(sx < 1) {
printf("\a");
system("cls"); //경고를 무시하고 눌를시 경계에 닿은 원을 그리고 좌표를 기억한다.
draw(sx+1,ex+1,sy,ey);
sx+=1; ex+=1;
}
break;

case '6' :
system("cls");
draw(sx+1,ex+1,sy,ey); //오른쪽으로 박스를 옮기면 시작과 끝의 x점의 수치가 증가.
Sleep(200); //박스가 그려지는 시간 지연
sx+=1; ex+=1;

if(ex == 80) {
printf("\a");
system("cls");
draw(sx,ex,sy,ey);
} //경계선에 다으면 더입력하지 말라고 경고음을 낸다
else if(ex > 80) {
printf("\a");
system("cls"); //경고를 무시하고 눌를시 경계에 닿은 원을 그리고 좌표를 기억한다.
draw(sx-1,ex-1,sy,ey);
sx-=1; ex-=1;
}
break;
} //swtich case 블럭 끝

} //while 블럭 끝

}


void draw(int sx,int ex,int sy,int ey)
{
int i,j,k;

gotoxy(sx, sy);
for(i=1 ; i <= ex-sx+1; i++){ //사각형 윗줄 시작부터 끝까지
printf("*");
} //윗줄 출력

for(k=0 ; k <= ey-sy; k++){
gotoxy(sx,k+sy);
printf("*");
gotoxy(ex,k+sy);
printf("*");
} //왼쪽오른쪽 줄 출력
gotoxy(sx, ey);
for(j=1 ; j <= ex-sx+1; j++){
printf("*");
} //아랫줄 출력

printf("\n");

}

void gotoxy(int x, int y)
{
COORD Pos = {x - 1, y - 1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

박스가 커졌다 작아지고 이름이 출력대는 프로그램~

#include
#include
#include
#include

void gotoxy(int x, int y);
void draw(int,int,int,int);
void red();

void main(void)
{
int sx=30,ex=50,sy=8,ey=16; //중앙에 박스 그리기
int i;

for(i=0 ; i<=5 ; i++){

system("cls");
draw(sx-i,ex+i,sy-i,ey+i); //시작 좌표 x,y가 1감소하고 끝좌표 x, y가 1증가 댈때 박스크기가그만큼 커진다.

Sleep(200); //박스가 그려지는 시간 지연
}

for(i=0 ; i<=5 ; i++){

system("cls");
draw((sx-5)+i,(ex+5)-i,(sy-5)+i,(ey+5)-i); //크기가 5만큼 커져있던 박스를 작게 보이게하기위해
//시작 좌표 x,y가 1증가하고 끝좌표 x, y가 1감소 댈때 박스크기가그만큼 작아진다.
Sleep(200); //박스가 그려지는 시간 지연
}


gotoxy(38,12);
red();
printf("레인이");

gotoxy(1,24); //출력물을 보기좋게 하기 위해 커서위치를 맨아래로 내림

}


void draw(int sx,int ex,int sy,int ey)
{
int i,j,k;

gotoxy(sx, sy);
for(i=1 ; i <= ex-sx+1; i++){ //사각형 윗줄 시작부터 끝까지
printf("*");
} //윗줄 출력

for(k=0 ; k <= ey-sy; k++){
gotoxy(sx,k+sy);
printf("*");
gotoxy(ex,k+sy);
printf("*");
} //왼쪽오른쪽 줄 출력
gotoxy(sx, ey);
for(j=1 ; j <= ex-sx+1; j++){
printf("*");
} //아랫줄 출력

printf("\n");

}

void gotoxy(int x, int y)
{
COORD Pos = {x - 1, y - 1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

void red()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
}

좌표입력받아 박스 그리는 프로그램~

#include
#include

void gotoxy(int x, int y);
void draw(int,int,int,int);

void main(void)
{
int sx,ex,sy,ey; //좌표를 입력 받을 변수선언

/*좌표 입력 받기*/
while(1){

printf("sx좌표 입력(1~70) : ");
scanf("%d",&sx);

if( 1 <= sx && sx <= 70 ){ break;}
} //x시작좌표가 1~70사이를 넣을때 까지 반복

while(1){

printf("ex좌표 입력(%d~80) : ",sx);
scanf("%d",&ex);

if( sx <= ex && ex <= 80 ){ break;} //x끝좌표가 시작좌표보다 크고 80사이를 넣을때까지 반복
}

while(1){

printf("sy좌표 입력(1~20) : ");
scanf("%d",&sy);

if( 1 <= sy && sy <= 20 ){ break;} //y시작좌표가 1~20사이를 넣을때 까지 반복
}

while(1){

printf("ey좌표 입력(%d~20) : ",sy);
scanf("%d",&ey);

if( sy <= ey && ey <= 24 ){ break;} //y시작좌표가 1~20사이를 넣을때 까지 반복
}

system("cls");

draw(sx,ex,sy,ey);

}


void draw(int sx,int ex,int sy,int ey)
{
int i,j,k;

gotoxy(sx, sy);
for(i=1 ; i <= ex-sx+1; i++){ //사각형 윗줄 시작부터 끝까지
printf("*");
} //윗줄 출력

for(k=0 ; k <= ey-sy; k++){
gotoxy(sx,k+sy);
printf("*");
gotoxy(ex,k+sy);
printf("*");
} //왼쪽오른쪽 줄 출력
gotoxy(sx, ey);
for(j=1 ; j <= ex-sx+1; j++){
printf("*");
} //아랫줄 출력

printf("\n");

}

void gotoxy(int x, int y)
{
COORD Pos = {x - 1, y - 1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

현금 3500원으로 물건 구입 할 경우 나올수있는경우~

#include

void main()
{
int money = 3500, i,j,k;

printf("현재 당신이 소유하고 있는 금액 : %d원 \n",money);

for( i=1 ; i<= money/500; i++){

for( j=1; j<=money/700; j++){

for( k=1 ; k<=money/400; k++){

if( ((i*500)+(j*700)+(k*400)) == 3500){

printf("크림빵(%3d개), 새우깡(%3d봉지), 콜라(%3d병) \n",i,j,k);
}
}
}
}

printf("어떻게 구입하시겠습니까? \n");

}

가위 바위 보 게임~

#include // rand(), srand() 함수를 사용하기 위해서 인클루드 함
#include // time() 함수를 사용하기 위해서 인클루드 함
#include
#include

int random(int);

void main()
{
int num, ran;
int win = 0, draw = 0;
srand( time (0) ); //매번 실행 할때 마다 같은 순서의 난수값을 발생시키 않기 위해 현재 시간값을 준다.
ran = random(3);

while(1){

printf("# 바위는 1, 가위는 2, 보는 3 중에서 선택하세요 : ");
scanf("%d",&num);
fflush(stdin);

//컴퓨터 바위 낼 경우
if(ran == 1 && num == 1){
printf("당신은 바위 선택, 컴퓨터는 바위 선택 : 비겼습니다. \n\n");
draw++;
}

if(ran == 1 && num == 2){
printf("당신은 가위 선택, 컴퓨터는 바위 선택 : 당신이 졌습니다. \n\n");
printf("\n 게임결과 : %d승 %d무 \n",win,draw);
getchar();
break;
}

if(ran == 1 && num == 3){
printf("당신은 보 선택, 컴퓨터는 바위 선택 : 당신이 이겼습니다. \n\n");
win++;
}

//컴퓨터 가위 낼 경우
if(ran == 2 && num == 1){
printf("당신은 바위 선택, 컴퓨터는 가위 선택 : 당신이 이겼습니다. \n\n");
win++;
}

if(ran == 2 && num == 2){
printf("당신은 가위 선택, 컴퓨터는 가위 선택 : 비겼습니다. \n\n");
draw++;
}

if(ran == 2 && num == 3){
printf("당신은 보 선택, 컴퓨터는 가위 선택 : 당신이 졌습니다. \n\n");
printf("\n 게임결과 : %d승 %d무 \n",win,draw);
getchar();
break;
}

//컴퓨터가 보 낼 경우
if(ran == 3 && num == 1){
printf("당신은 바위 선택, 컴퓨터는 보 선택 : 당신이 졌습니다. \n\n");
printf("\n 게임결과 : %d승 %d무 \n",win,draw);
getchar();
break;
}

if(ran == 3 && num == 2){
printf("당신은 가위 선택, 컴퓨터는 보 선택 : 당신이 이겼습니다. \n\n");
win++;
}

if(ran == 3 && num == 3){
printf("당신은 보 선택, 컴퓨터는 바위 보 : 비겼습니다. \n\n");
draw++;
}

}

}



int random(int n)
{
int res;
res = rand() % n; //0에서 n-1까지 난수 발생
return res+1; //그값에 1을 더해주어 반환하면 1에서 n까지 난수 발생
}

난수 알아 맞추는 프로그램~

#include // rand(), srand() 함수를 사용하기 위해서 인클루드 함
#include // time() 함수를 사용하기 위해서 인클루드 함
#include

int random(int);

void main()
{
int num,num1 = 0, num2 = 0, num3 = 0;
int ran,ct=1;
srand( time (0) ); //매번 실행 할때 마다 같은 순서의 난수값을 발생시키 않기 위해 현재 시간값을 준다.
ran = random(100);

while(1){

printf("#숫자를 입력하시오 : ");
scanf("%d", &num);

if (ran == num){

printf(" 우와~ 맞았당~~~ 추카추카~~~~ %d 번째 만에 맞추셨습니다. \n",ct);
break;
}

else if ( num1 < ran && ran < num ) {

printf("%d보다는 크고 %d보다는 작습니다. \n",num1, num);
num3 = num1;
num2 = num;
}

else {

if ( ct == 1 && num < ran){
printf("%d 보다는 큰 수입니다. \n",num);

}

else{

if( ct != 1 && num < ran){

if( num1 < num){

if(num2 == 0){
printf("%d 보다는 큰 수입니다. \n",num);
}

else {
printf("%d보다는 크고 %d보다는 작습니다. \n",num, num2);

}
}

else {
printf("%d보다는 크고 %d보다는 작습니다. \n",num, num1);
num2 = num1;
}
}

else{

if(num1 < num) {

printf("%d보다는 크고 %d보다는 작습니다. \n",num, num1);
num3 = num1;
}

else {
printf("%d보다는 크고 %d보다는 작습니다. \n",num3, num);

}
}
}
}

num1 = num;
ct++;
}
}

int random(int n)
{
int res;
res = rand() % n; //0에서 n-1까지 난수 발생
return res+1; //그값에 1을 더해주어 반환하면 1에서 n까지 난수 발생
}