skip to main |
skip to sidebar
레이블이
C Programming basic인 게시물을 표시합니다.
모든 게시물 표시
레이블이
C Programming basic인 게시물을 표시합니다.
모든 게시물 표시
#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++; } //아니면 그냥 순차 차운터..
}
}
}
#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");
}
#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");
}
#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; }
}
#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);
}
#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까지 난수 발생
}