C语言goto语句如何使用?

是这样的,我编写一个程序有选择界面,用switch() case 语句实现,当用户使用完case中的语句后,希望不要直接退出程序而是回到一开始选择功能那个地方。
我想这样就要就要使用跳转语句,网上说要用标签但是试了以后语法报错

现在的疑问是,使用goto语句需要加特殊的抬头吗?(就像是#include “stido.h”之类的)
具体我该如何实现?
下面是一段精简的代码,用户进入界面后按1/0进入不同的功能,当执行好ex()任务后,如何用goto语句让程序回到选择case的界面?

不然的话完成ex()后程序就退出了

goto语句使用:

1、C#语言中

using System;

using static System.Console;

class Program

{

public static Int32 Main(String[]args){

int n=0;

WriteLine("input a string:\n");

loop:if(Read()!='\r'){

n++;

goto loop;

}

WriteLine("{0}",n);

return 0;

}

}

2、C语言中

统计从键盘输入一行字符的个数。

#include<stdio.h>

int n=0;

int main(void){

printf("input a string:");

loop:if(getchar()!='\n'){

n++;

goto loop;

}

printf("output:%d\n",n);

}

例如输入:abcdefghijklmnopqrstuvwxyz

然后回车Enter

输出:26

本例用if语句和goto语句构成循环结构。当输入字符不为'\n'时即执行n++进行计数。

然后转移至if语句循环执行,直至输入字符为'\n'才停止循环。

3、汇编语言中

goto语句与汇编语言里面的jmp指令相同,(无条件转移)

1+2+3........+8+9+10

NASM描述:

mov ax,1

mov bx,0

start:add bx,ax

inc ax

cmp ax,11;比较指令

jzend;零转移

jmp start

end:

;

;start:end:是标号

Pascal

格式goto<标号>;

其中标号需要申请,在程序开头写label<标号1>,<标号2>,……;

其中,标号必须为四位以内的正整数。

在该段落内还需要有<标号>:语句表示将要转向的方向。

4、delphi中

//Goto语句用在跳转行号,可以跳转到当前结构层内任意位置.

//必须在声明处用label关键字声明行号.

//由于Goto语句会破坏程序的结构,不推荐使用.

var

a,b:Integer;

label

X,Y;

begin

if a>b then

goto X

else

goto Y;

X:

WriteLn('a>b');

Y:

WriteLn('b>a');

end;

扩展资料:

goto语句无条件转移语句,其一般格式如下:goto语句标号;其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto语句配合使用。

如:label:i++;

loop:while(x<7);

goto:loop

C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

参考资料来源:

百度百科——goto语句

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-15

goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 

其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。

#include"stdio.h"
int main(void)
{
    int n=0;
    printf("input a string :\n");
    loop: if(getchar()!='\n')
        {
            n++;
            goto loop;
        }
    printf("%d",n);
}

goto语句在上例中的作用就是当接收用户输入的字符不是回车符的时候就跳转到if语句进行判断用户输入的字符,也就是说如果用户输入回车,那么就输入结束,转而执行printf("%d",n);

第2个回答  推荐于2017-10-15

要回到哪里,就在哪里加个标号,例如:

label1: /* <----- 这里加个标号, goto 语句就可以转到这里了 */
switch(i){
case 1:ex(0);goto label1; /* 有 goto 就不需要 break 了 */

另,使用goto语句需要加特殊的抬头。

本回答被提问者采纳
第3个回答  2020-03-10
goto只能函数内部跳,当然不能跳到另一个函数或者跳到另一个C文件
goto会破坏程序的结构性,所以能不用尽量别用。
第4个回答  2019-07-22
goto的用法前面已经有人回答了,我就不重复了。
原则上是最好不要用,因为程序要讲究结构性、可读性,goto语句会破坏这点。
但万事不是绝对的,什么时候应该用goto语句呢?
只有在程序做的很大,有动一下痛全身的感觉时,但只要加个goto语句却能省下很多时间和麻烦,这时用goto语句比较好。
相似回答