[TIL]211013


continue&breakの利用


質問です。


九九段を出力するが、偶数段(2段、4段、6段、8段)のみを出力する.また、2段出力2×2、4段出力4×4、6段出力6×6、8段出力8×8のプログラムを実現する.このような混乱した問題を提起したのは、continuebreakの使い方を把握するためだ.だから私たちはできるだけcontinuebreakゲートを使ってこの問題を解決することを望んでいます.

🤔


どうやってbreakを挟んで使うのか分かりません.私の想像力の限界...breakゲートを使うと、解答コードを見てから熟知し、他のものを使って問題を解くことにします.
2段、4段等を変数danとし、後に掛けた数字を変数iとして指定し、idan未満に設定する.
だから出てきたコードは以下の通りです.

コード#コード#

#include <stdio.h>

int main(void)
{
     int i;
     int dan = 2;                                                 // 2단부터 시작.

     printf("짝수단 구구단을 출력합니다.\n");
	
     while (dan <= 8)                                             // 8단까지 시행
     {
	  if (dan % 2 != 0)                                    // 홀수면 i++ 을 통해 짝수가 되게 함.
		continue;

	  for (i = 1; i <= dan; i++)                               // i는 dan보다 크면 안됨.
		printf("%d x %d = %d\n", dan, i, dan * i);   
		
	   dan++;
      }
	return 0;
}
上記のコードではwhileの代わりにforを使用します.
for (; dan <= 8; dan++)                                       
{
        if (dan % 2 != 0)                            
		continue;

	for (i = 1; i <= dan; i++)                    
		printf("%d x %d = %d\n", dan, i, dan * i);   
}
これを使用すると、同じ結果値が出力されます.

実行結果



解答コード

#include <stdio.h>

int main(void)
{
	int i;
	int dan;

	printf("짝수단 구구단을 출력합니다.\n");

	for (dan = 1; dan < 10; dan++)        // 구구단 진행
	{
		if (dan % 2 != 0)                 // 홀수면 for문으로 돌아가서 dan++시행해서 짝수로 만듦.
			continue;

		for (i = 1; i < 10; i++)
		{
			if (dan < i)                  // dan이 i보다 작다면 for문 종료.
				break;

			printf("%d x %d = %d\n", dan, i, dan * i);
			
		}

	}

	return 0;
}
コードをよく見ると、iを使用するfor文では、条件文ifが使用され、daniより小さい場合は、for文の使用を停止する条件(breakを使用)が使用されます.チェック!

breakの使用
:繰り返し文を停止します(whilefor)!forゲート内で使用するが、breakゲートを使用する場合は、ifの条件~~を設定してこの条件で使用し、離脱する.

質問です。


以下の式を満たすすべてのAとZを求めるプログラムを作成しましょう.
  AZ
+ZA
ㅡㅡㅡ
99
ちなみに、できるだけ多くの組み合わせを試してみるためには、複文を重ねなければなりません.

コード#コード#

#include <stdio.h>

int main(void)
{
	int A, Z;

	printf("AZ+ZA = 99를 충족하는 값은\n");

	for (A = 0; A < 10; A++)           
	{
		for (Z = 0; Z < 10; Z++)
		{
			if ((A * 10 + Z) + (Z * 10 + A) != 99)       // AZ+ZA = 99가 아닌 경우,  
				continue;                            // for 반복.
			else			                     // AZ+ZA = 99인 경우,	
				printf("A는 %d, Z는 %d.\n", A, Z);    // 해당되는 A값과 Z값을 출력.
		}
	}

	return 0;
}

実行結果




回答コードグローバル変数にint result;for (Z = 0; Z < 10; Z++)を追加する内容は次のとおりです.
for (Z = 0; Z < 10; Z++)
{
    if(A==Z)            // A값과 Z값이 같은 경우 반복문으로 다시 돌아감.
        continue;
    result = (A*10+Z)+(Z*10+A);
    if(result==99)     // reult가 99인 경우,
       printf("%d%d+%d%d=%d \n", A, Z, Z, A, result);  // 해당 값을 출력.
}