새싹교실/2014/속도위반/0411 (rev. 1.33)
- 참여자
- 저번 시간 과제에 대한 설명
- 왜 void형을 쓰는가
- 변수의 자료형에 따른 출력값
- ...기타 등등
- 구구단, 별찍기 실습
- Visual Studio 디버깅 방법
- 다음 수업 : 4월 18일 금요일 오후 6시
#include <stdio.h>
#include <Windows.h>
#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<stdio.h>
#pragma warning(disable:4996)
#include<Windows.h>
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<stdio.h>
#include<windows.h>
#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<stdio.h>
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<stdio.h>
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<stdio.h>
#include<windows.h>
#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 <stdio.h>
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<stdio.h>
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<stdio.h>
#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<stdio.h>
#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 <stdio.h>
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<line+1;i++)
{
printf("*");
}
printf("\n");
}
return 0;
}
#include<stdio.h>
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");
}
}