分岐とループ (3)

みなさん、こんにちは。今日は C 言語の分岐とループについての話は終わりました。今日は goto 文について話します。後ほど、みんながよりよく学べるように、みんながやるべきいくつかのトピックを更新します。

goto ステートメント
C 言語には、自由に悪用できる goto ステートメントと、ジャンプをマークするラベルが用意されています。
理論的には goto ステートメントは必要なく、実際には goto ステートメントがなくてもコードは簡単に記述できます。
ただし、goto ステートメントは依然として役立つ場合があり、最も一般的な使用法は、深くネストされた構造でプログラムの処理を終了することです。
例: 2 つ以上のループ層から一度にジャンプします。
この多層ループの場合にブレークを使用すると、目的を達成できません。最も内側のループから前のループに抜けることしかできません。

for(...)
    for(...)
   {
    
    
        for(...)
       {
    
    
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)//处理错误情况
        

上記のコードでは、エラーが発生してループから抜け出さなければならないように見えますが、ループから抜け出すためにbreakを使用する場合は、少なくとも3回のbreakが必要です。gotoの場合は、直接ジャンプします。エラーになり、次のステップに進みます。

以下は、ループを使用して goto ステートメントを置き換える例です。

次はシャットダウン プログラムです。
プログラムが実行されている限り、コンピューターは 1 分以内にシャットダウンします。入力: 私は豚です。シャットダウンをキャンセルします。コードを書く前に、まず理解しなければならないことが 1 つあります

これはコンピュータのコマンド プロンプトです。shutdown -s -t 60 と入力すると、コンピュータが 60 秒以内に自動的にシャットダウンすることを意味します。shutdown
-a と入力すると、シャットダウンをキャンセルします。
ここに画像の説明を挿入

上記を理解した後、コードを書き始めました

int main()
{
    
    
   system()//这个库函数是用来执行系统命令的
   return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    
    
	char input[20] = {
    
    0};
	system("shutdown - s - t 60");//表示电脑还有60秒就关机
again:
	printf("请注意:你的电脑还有60秒就会关机,输入“我是猪”就取消关机\n");
	scanf("%s", input);
	//判断
	
	if (strcmp(input, "我是猪") == 0)
	{
    
    
		system("shutdown -a");
	}
	else
	{
    
    
		printf("请重新输入\n");
		goto again;
	}
	return 0;
}

上記は完全なコードですが、他のコードで置き換えることができると書かれていますが、ここでは代わりに他のコードを使用します。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    
    
	char input[20] = {
    
     0 };
	system("shutdown - s - t 60");//表示电脑还有60秒就关机

	printf("请注意:你的电脑还有60秒就会关机,输入“我是猪”就取消关机\n");
	scanf("%s", input);
	//判断

	while (1)
	{
    
    
		if (strcmp(input, "我是猪") == 0)
		{
    
    
			system("shutdown -a");
			break;
		}
	}
	return 0;
}

これは while ループで置き換えられるものです

簡単なコードを使用して goto ステートメントの理解を示し、分岐とループも学習できるようにします。このトピックは後で全員に向けて更新します。皆さん、ありがとうございました。今日の共有はこれで終わりです。

おすすめ

転載: blog.csdn.net/2301_76895050/article/details/131403771