오늘도 반복문을 살펴본다.
do while 문은
do{ }먼저 실행 그다음 while(조건); 실행
키보드로부터 값을 받아온 후에 조건을 실행할때
사용을 한다.
for문
for(i=0; i<10; i++){}
으로 구성되며
for(초기식, 조건식, 증감식)
과 같은 구조이다.
int i; 로 선언을 해주고 사용하거나
초기식에서 int i=0; 과 같이 그자리에서 선언하고 사용하는 방식이 있다(안되는 경우도 존재함 컴퍼일러 이거나 세팅 문제이다).
선언과 같은것은 범위가 필요함(scope) 즉 유효범위 라고 함.
즉 변수의 그릇과 관련된 에러 같은것은 scope와 같은것임. 또한 이러한변수
선언의 범위는 같은 함수 안에서만 유효함.
다음은 예제이다
int main()
{
int d,i;
int s=0;
printf("어디까지 더할건가: ");
scanf("%d",&d);
for(i=0;i<=d;i++)
{
s+=i;
}
printf("결과 =%d",s);
printf("\n");
return 0;
}
어디까지 더할건가: 10
결과 =55
이렇게 등장함
//팩
int main()
{
int d,i;
int f=1;
printf("몇팩?: ");
scanf("%d",&d);
for(i=1;i<=d;i++)
{
f*=i;
}
printf("결과 %d! = %d",d,f);
printf("\n");
return 0;
}
몇팩?: 10
결과 10! = 3628800
이렇게 등장함
//온도변환
int main()
{
int d;
int i;
printf("몇까지 출력?");
scanf("%d",&d);
for(i=0;i<=d;i+=10 )
{
printf("%d F= %f C \n",i,(i-32.0)*5.0/9.0); //나누기가 들어있으면 뒤에 수를 실수형태로 만들어준다.
}
printf("\n");
return 0;
}
몇까지 출력?100
0 F= -17.777778 C
10 F= -12.222222 C
20 F= -6.666667 C
30 F= -1.111111 C
40 F= 4.444444 C
50 F= 10.000000 C
60 F= 15.555556 C
70 F= 21.111111 C
80 F= 26.666667 C
90 F= 32.222222 C
100 F= 37.777778 C
이렇게 나옴
// gui흉내1
HWND w;
HDC d;
int main()
{
int x,y,i;
w=GetForegroundWindow();
d=GetWindowDC(w);
x=50;
y=50;
for(i=0;i<5;i++ )
{
Rectangle(d,x,y,x+30,y+30);
x+=100;
}
return 0;
}
// gui흉내2
HWND w;
HDC d;
int main()
{
int x,y;
w=GetForegroundWindow();
d=GetWindowDC(w);
MoveToEx(d,100,300,0);
LineTo(d,300,300);
MoveToEx(d,100,300,0);
LineTo(d,100,0);
for(x=0;x<300;x++ )
{
y=0.01*x*x+x;
SetPixel(d,100+x,300-y,RGB(255,0,0));
}
return 0;
}
for문에서 무한루프
for( ; ; ){} 이런식으로 사용한다.
time complexity(시간 복잡도)
프로그래밍을 할때 얼마나 많은 시간이 걸리는가
for문의 개수로 표시되며 O(n)으로 표시하며 n의 거듭제곱수 에 따라
for문의 개수가 표시된다.
커질수록 느리다고 생각하면 된다.
for문의 중첩은
출력되는것이 두줄이상으로 여러개있으면 된다고 파악하고 실행한다.
//구구단
int main()
{
int i,j;
for(i=2;i<10;i++)
{
for(j=1;j<10;j++)
{
printf("%dx%d=%2d ",i,j,i*j);
}
printf("\n");
}
printf("\n");
return 0;
}
결과로
2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1= 3 3x2= 6 3x3= 9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1= 4 4x2= 8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
가 등장
//경우의 수
int main()
{
int i,j;
printf("두 주사위의 합이 7이 되는 경우의 수만 출력하기 \n");
for(i=1;i<7;i++)
{
for(j=0;j<1;j++)
{
printf("%d %d ",i,7-i);
}
printf("\n");
}
printf("\n");
return 0;
}
결과로
두 주사위의 합이 7이 되는 경우의 수만 출력하기
1 6
2 5
3 4
4 3
5 2
6 1
가 등장
break 문 continue
전자는 그 반복문 나가는것 후자는 제일가까운 반복문으로 넘어가게 하는것
어찌되든 제일가까운 반복문을 찾으면 된다.
(잠깐 팁
슈드코드(pseudo) 논리를 설명하는 코드로 실제 코드가 아닌 가짜 코드이다. )
//숫자 맞추기 게임
int main()
{
int c,r,g;
c=0;
srand((unsigned)time(NULL)); //프로그램을 실행할때마다 랜덤한 변수를 만들어주는 역할
r=(rand()%100)+1; //1부터 100까지 랜덤한 값을 r에 저장
for(;;)
{
printf("예상한 수를 입력:");
scanf("%d",&g);
if (g>r)
{
c+=1;
printf("정답보다 크다 \n");
}
else if (g<r)
{
c+=1;
printf("정답보다 작다 \n");
}
else
{
c+=1;
printf("정답 \n");
break;
}
}
printf("%d번 만에 맞춤",c);
printf("\n");
return 0;
}
예상한 수를 입력:50
정답보다 크다
예상한 수를 입력:25
정답보다 크다
예상한 수를 입력:20
정답보다 크다
예상한 수를 입력:10
정답보다 작다
예상한 수를 입력:08
정답보다 작다
예상한 수를 입력:19
정답보다 크다
예상한 수를 입력:18
정답보다 크다
예상한 수를 입력:15
정답보다 작다
예상한 수를 입력:16
정답보다 작다
예상한 수를 입력:17
정답
10번 만에 맞춤
//직각 삼각형 세기
int main()
{
int a,b,c,t;
t=0;
for(a=1;a<=100;a++)
{
for(b=1;b<=100;b++)
{
for(c=1;c<=100;c++)
{
if (a*a+b*b==c*c)
{
t+=1;
printf("%d %d %d \n",a,b,c);
}
}
}
}
printf("%d 개의 직각삼각형이 존재함",t/2);
return 0;
}
3 4 5
4 3 5
5 12 13
6 8 10
7 24 25
8 6 10
8 15 17
9 12 15
9 40 41
10 24 26
11 60 61
12 5 13
12 9 15
12 16 20
12 35 37
13 84 85
14 48 50
15 8 17
15 20 25
15 36 39
16 12 20
16 30 34
16 63 65
18 24 30
18 80 82
20 15 25
20 21 29
20 48 52
21 20 29
21 28 35
21 72 75
24 7 25
24 10 26
24 18 30
24 32 40
24 45 51
24 70 74
25 60 65
27 36 45
28 21 35
28 45 53
28 96 100
30 16 34
30 40 50
30 72 78
32 24 40
32 60 68
33 44 55
33 56 65
35 12 37
35 84 91
36 15 39
36 27 45
36 48 60
36 77 85
39 52 65
39 80 89
40 9 41
40 30 50
40 42 58
40 75 85
42 40 58
42 56 70
44 33 55
45 24 51
45 28 53
45 60 75
48 14 50
48 20 52
48 36 60
48 55 73
48 64 80
51 68 85
52 39 65
54 72 90
55 48 73
56 33 65
56 42 70
57 76 95
60 11 61
60 25 65
60 32 68
60 45 75
60 63 87
60 80 100
63 16 65
63 60 87
64 48 80
65 72 97
68 51 85
70 24 74
72 21 75
72 30 78
72 54 90
72 65 97
75 40 85
76 57 95
77 36 85
80 18 82
80 39 89
80 60 100
84 13 85
84 35 91
96 28 100
52 개의 직각삼각형이 존재함
'관 > 솔직한 c 언어 공부' 카테고리의 다른 글
c언어 기초 공부 08. (0) | 2019.11.09 |
---|---|
c언어 기초 공부 07. (0) | 2019.11.07 |
c언어 기초 공부 05. (0) | 2019.11.05 |
c언어 기초 공부 04. (0) | 2019.11.04 |
c언어 기초 공부 03. (0) | 2019.11.04 |
댓글