[[TableOfContents]] = 진행사항 = * 참여자 || 튜터 || [최다인] || 참석 || || 튜티 || [유재범] || 참석 || || || [오영은] || 참석 || || || [장우진] || 참석 || || || [문태현] || 참석 || * 저번 시간 과제에 대한 설명 * 왜 void형을 쓰는가 * 변수의 자료형에 따른 출력값 * ...기타 등등 * 구구단, 별찍기 실습 * Visual Studio 디버깅 방법 * 다음 수업 : 4월 18일 금요일 오후 6시 == 구구단 코드 == === 최다인 === {{{ #include #include #pragma warning(disable:4996) void printgoogoo(int); int main(){ int num; while(1){ system("cls"); printf("출력할 구구단을 입력해주세요 (0은 전체 출력) : "); scanf("%d",&num); if((num > 9 || num < 2) && num != 0){ printf("구구단의 값은 2 ~ 9 사이입니다.\n"); system("pause"); continue; } printgoogoo(num); system("pause"); } return 0; } void printgoogoo(int num){ int i; if(num == 0){ for(i = 2; i < 10; i++) printgoogoo(i); return; } printf("\n구구단 %d단\n" , num); for(i = 1; i < 10; i++) printf("%d X %d = %d\n", num, i, num*i); } }}} === 유재범 === {{{ #include #pragma warning(disable:4996) #include void kukudan(int); void kukudanall(); int input=0; int main(void) { while(1) { int input=0; printf("구구단을 외자. 구구단을 외자. 숫자를 입력하시오 : "); scanf("%d", &input); if(input<2 || input>=10) { printf("구구단이 뭔지 다시 알고 오세요.\n "); return 0; } else if(input==0) { kukudanall(); } else kukudan(input); } return 0; } void kukudan(int input) { int count=1; do { printf("%d * %d = %d\n", input, count, input*count); count++; }while(count!=10); } void kukudanall() { input=1; while(input!=10) { kukudan(input); input++; } } }}} * 몇 가지 말하자면, * windows.h는 왜 참조했어? * 내가 쓰라고함 system때문에 ㅋ - [최다인] * do_while을 굳이 쓸 필요가 있었을까? * 전역변수와 지역변수가 이름이 같다는 건 썩 좋은 일이 아닌데? 물론 스코프 상으로 가까운 쪽을 자동선택하긴 하지만. * 보면 볼 수록 전역변수로 저걸 선언해 줄 이유가 전혀 없는 것 같다. * 정상적인 종료가 아닐 경우에는 0 이외의 다른 값을 return 해 주는 거란다. * C언어에서는 변수 선언은 항상 가장 위쪽에서 해야 한다. * 사실 void 함수는 피하는 게 좋아. 이건 설계적인 문제라서 지금 당장은 큰 문제가 아니니 참고. -[원준연] * 이건 제대로 말해줘야지 ㅋㅋ 무작정 피하는게 좋다고하면 쓸모없는데 int형함수를 쓰게될거같은데? - [최다인] * 전역변수랑 지역변수 이름 같은건 내가 지적을 해줬는데도 그대로라니 으으 - [최다인] * 정신 차려보니까 저렇게 되어 있었네여 ㅋㅋㅋ 그보다 다인누나보다 준연형 커멘트가 더 많아서 무서웤ㅋㅋㅋㅋㅋㅋㅋㅋ === 오영은 === {{{ #include #include #pragma warning(disable:4996) int main(void) { int gugu, i; printf("구구단 입력 프로그램입니다. 1~9중 한 숫자를 입력하시오.\n(0을 누르면 모든 구구단을 보실 수 있습니다.)"); scanf("%d", &gugu); if(gugu>0 && gugu<10) { printf("%d단을 입력하셨습니다.\n", gugu); for(i=1; i<10; i++) { printf("%d x %d = %d\n", gugu, i, gugu*i); } } else if(gugu>10 && gugu<1) { printf("잘못된 숫자를 입력하셨습니다.\n"); } else if(gugu==0) { for(gugu=1; gugu<10; gugu++) { printf("%d단입니다.\n", gugu); for(i=1; i<10; i++) { printf("%d x %d = %d\n", gugu, i, gugu*i); } } } return 0; } }}} === 장우진 === {{{#include void gugudan(int x); int main() { int num=0; while(1){ printf("원하시는 숫자를 입력해 주세요 : "); scanf("%d",&num); if(num==-1) break; else gugudan(num); } return 0; } void gugudan(int x){ int count=0, sum=0; if (x==0){ while(x<9) { x++; count=0; while(count<9){ count++; sum=x*count; printf("%d x %d = %d\n",x,count,sum); } } } else{ while(count<9) { count++; sum=x*count; printf("%d x %d = %d\n",x,count,sum); } } } }}} === 문태현 === {{{#include int gogo(int x, int y); int main() { int a, b=1; printf("원하는 구구단을 입력하시오\n"); scanf("%d",&a); if(a<2){ if(a==0){ a=a+2; while(a<10) {gogo (a, b); a++; } } else{ printf("다시입력하시오"); } } else if (a>9) printf("다시입력하시오"); else if (a>=2 && a<=9) gogo(a, b); } int gogo(int x, int y) { while(y<10){ printf("%d x %d=%d\n", x, y, x*y); y++; } } }}} == 별찍기 코드 == === 유재범 === {{{ 함수만 따로 추출(삼각형, 피라미드, 다이아) void triangle(int num2) { for(count=0; count!=num2; count++) { for(line=0; line!=count+1; line++) { printf("*"); } printf("\n"); } } void pyramid(int num2) { for(count=0; count!=num2; count++) { for(line2=0; line2!=num2-count; line2++) { printf(" "); } for(line=0; line!=2*count+1; line++) { printf("*"); } printf("\n"); } } void dia(int num2) { for(count=0; count!=num2; count++) { for(line2=0; line2!=num2-count+1; line2++) { printf(" "); } for(line=0; line!=2*count+1; line++) { printf("*"); } printf("\n"); } for(count=num2-1; count!=0; count--) { for(line2=0; line2!=num2-count+2; line2++) { printf(" "); } for(line=2*count-1; line!=0; line--) { printf("*"); } printf("\n"); } } }}} === 오영은 === {{{ #include #include #pragma warning(disable:4996) void printstar() { putchar('*'); } int main() { int i, j, k; printf("원하는 숫자를 입력하세요. : "); scanf("%d", &i); for(k=1;k<=i;++k) { for(j=1;j<=k;++j) { printstar(); } printf("\n"); } } }}} * printstar 함수를 선언해서 쓰는 메리트가 전혀 없는거 같네. * windows.h는 왜 참조했어? * system 쓰려면 내가 넣으라고 했는데, 버릇처럼 일단 넣고 시작하는듯 ㅋㅋ 아니면 디버깅하면서 system 넣었다가 헤더 빼는걸 깜빡했던가. 뭐 상관없지 - [최다인] === 장우진 === {{{ #include int main() { int i=0, size=0, line=0; printf("크기를 입력해 주세요 :"); scanf("%d",&size); for(line=0;size>line;line++) { for(i=0;i< line+1;i++) { printf("*"); } printf("\n"); } return 0; } }}} === 문태현 === {{{ #include void printstar(); int main() { int siz ,line, starcount; printf("사이즈를 입력하시오"); scanf("%d",&siz); for(line=1; line<=siz; line++) { for(starcount=1; starcount<=line;starcount++) { printstar(); } printf("\n"); } } void printstar() {printf("*"); } }}} = 과제 = * 피라미드형 별찍기 * 예시 {{{ SIZE : 6 * *** ***** ******* ********* *********** }}} * 특별 과제 : 일반 별찍기를 재귀함수로 짜 볼 것. * 위키에 올리지 말고 개인톡으로 보내세요. == 유재범 == {{{ #include #pragma warning(disable:4996) void dia(int); void pyramid(int); void triangle(int); int count=0, line=0, line2=0; int main(void) { while(1) { int num1=0, num2=0;//num1=별 찍는 모양, num2=찍는 별 갯수 printf("컴공의~ 공유과제~ 별찍~기! 별! 찍기! 별! 찍기! 별! 별! 찍기!찍기\n1.삼각형\n2.피라미드\n3.다이아몬드\n"); scanf("%d", &num1); if(num1==1 || num1==2 || num1==3) { printf("얼마나 찍을라우 젊은이? : "); scanf("%d", &num2); if(num1==1) triangle(num2); else if(num1==2) pyramid(num2); else if(num1==3) dia(num2); } else { printf("하지마! 하지마! 별 찍기 싫으면 그냥 Alt+F4를 누르라고! \n왜 다른 숫자를 눌러! 그냥 때려 쳐! 안해! 나 안해!! 안한다고!!\n\n\n"); } } return 0; } void triangle(int num2) { for(count=0; count!=num2; count++) { for(line=0; line!=count+1; line++) { printf("*"); } printf("\n"); } } void pyramid(int num2) { for(count=0; count!=num2; count++) { for(line2=0; line2!=num2-count; line2++) { printf(" "); } for(line=0; line!=2*count+1; line++) { printf("*"); } printf("\n"); } } void dia(int num2) { for(count=0; count!=num2; count++) { for(line2=0; line2!=num2-count+1; line2++) { printf(" "); } for(line=0; line!=2*count+1; line++) { printf("*"); } printf("\n"); } for(count=num2-1; count!=0; count--) { for(line2=0; line2!=num2-count+2; line2++) { printf(" "); } for(line=2*count-1; line!=0; line--) { printf("*"); } printf("\n"); } } }}} * 하는 김에 다이아 완성. 무한 반복에 1, 2, 3 이외의 수가 나오면 씹어먹고 처음부터 다시 하도록 설정. 움직이는 모션은 못넣겠네요 빈 칸을 넣어야 하나 뭘 해야 하나.. * 움직이는건 지금상태론 만들기 힘들걸 ㅋ - [최다인] == 오영은 == {{{ #include #pragma warning(disable:4996) int main() { int i, j, k; printf("원하는 숫자를 입력하세요. : "); scanf("%d", &i); i=i*2; for(k=1;k<=i;k=k+2) { for(j=i;j>k;j=j-2) { printf(" "); } for(j=1;j<=k;++j) { printf("*"); } printf("\n"); } } }}} == 장우진 == {{{ #include int main() { int i=0, size=0, line=0; printf("크기를 입력해 주세요 :"); scanf("%d",&size); size=size*2; for(line=0;size>line;line=line+2) { for(i=size;i>line+1;i=i-2) { printf(" "); } for(i=0;i int main() { int size, h, i, j; scanf_s("%d", &size); for (h = 1; h < size + 1; h++) { for (i = size - h; i > 0; i--) { printf(" "); } for (j = 1; j < h * 2; j++) { printf("*"); } printf("\n"); } } }}} = 후기 = ----- [:새싹교실/2014/속도위반 속도위반]