user-0 提问: 怎么把goto语句换成其他的语句？

回复:
user: user-1
content: 同学，goto语句+label语句，其实就是一个循环，你的代码不算复杂，还是比较好修改的，请参考： #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> void login(char *username, char *password); void change_password(char *old_password);  int main() {     char username[1000] = "asdf";     char password[1000] = "123456";//username和password数组开这么大是为了避免操作指针的时候发生越界的问题     int mod = 0;//设定一个变量mod,用来让用户选择系统工作的模式      while (1) { // 增加一个while循环 // remake: // 原式：去掉label         printf("\n");         printf("\t*******************************\n");         printf("\t***** 请输入你要选择的模式 ******\n");         printf("\t*********1.登录系统*************\n");         printf("\t*********2.修改密码*************\n");         printf("\t*********3.退出系统*************\n");         printf("\t*******************************\n");         printf("\n");          scanf("%d", &mod); //读入用户的选择         switch (mod) { //使用switch来控制分支             case 1:                 login(username, password); //向登录函数传入所给定的用户名和用户密码                 // goto remake; // 原式：去掉label                 break;             case 2:                 change_password(password);                 // goto remake; // 原式：去掉label                 break;             case 3:                 printf("\t再见，欢迎下次使用！");                 return 0;             default:                 printf("\t输入错误，重新输入\n");                 // goto remake; // 原式：去掉label                 break;         }     } }  void login(char *username, char            *password) { //模块化程序设计的思路，这个是登录模块，单独来做个函数，传入的参数为主函数中给定的正确的用户名和密码      char name[1000];     char word[1000];     int n;     printf("\n");     printf("\t*******************************\n");     printf("\t********* 用户登录系统 *********\n");     printf("\t*******************************\n");     printf("\n\n");     printf("\t请输入用户名.\n");     printf("\t用户名:");     scanf("%s", name);     printf("\n");     if ( strcmp(username, name) == 0) {         printf("\t输入用户名.\n");         printf("\t输入密码:");         scanf("%s", word);         for (n = 0; n < 5; n++) {             if ( strcmp( password, word) == 0 ) {                 printf("\n");                 printf("\t*******************************\n");                 printf("\t********* 欢迎用户！ *********\n");                 printf("\t*********3.返回上一级界面*************\n");                 printf("\t*******************************\n"); // re: // 原式：去掉label                 while (1) { // 增加一个while循环                     int flag = 1;                     scanf("%d", &flag);                     if (flag == 3) {                         return ;                     } else {                         printf("\t******* 无效命令！请重新输入 ******\n");                         // goto re ; // 原式：去掉label                     }                     printf("\n");                 }                 break;             } else {                 printf("\t\t请重试!\n");                 printf("\t密码:");                 scanf("%s", word);                 if ( strcmp( password, word) == 0 ) {                     printf("\n");                     printf("\t*******************************\n");                     printf("\t********* 欢迎用户！ *********\n");                     printf("\t*********3.返回上一级界面*************\n");                     printf("\t*******************************\n"); // re1: // 原式：去掉label                     while (1) { // 增加一个while循环                         int flag = 1;                         scanf("%d", &flag);                         if (flag == 3) {                             return ;                         } else {                             printf("无效命令");                             // goto re1; // 原式：去掉label                         }                         printf("\n");                     }                     break;                 }             }         }     }      else if ( strcmp(username, name) != 0) {         printf("\t用户名错误! 请重新输入!\n");     } }  void change_password(char *old_password) {     char temp_mima[1000], temp_mima1[1000], temp_mima2[1000]; //三个字符串密码，原始密码，新密码1，新密码2     // printf("请输入原来的密码："); // 原式：移动到while循环内 // loop: // 原式：去掉label     // scanf("%s", temp_mima); // 原式：移动到while循环内     while (1) {         printf("请输入原来的密码："); // 原式：移动到while循环内         scanf("%s", temp_mima); // 原式：移动到while循环内         if (strcmp(temp_mima, old_password) == 0) {             printf("\n\n");             printf("\t*******************************\n");             printf("\t********* 密码正确！ *********\n");             printf("\t*******************************\n");             printf("\t请输入新密码：\n");             scanf("%s", temp_mima1);             printf("\t请再次输入密码：\n");             scanf("%s", temp_mima2);             if (strcmp(temp_mima1, temp_mima2) == 0) {                 printf("\t*******************************\n");                 printf("\t*****修改密码正确！请牢记密码!******\n");                 printf("\t*******************************\n");                 printf("");                 strcpy(old_password, temp_mima1); //用新的密码代替旧的密码，                 return; //返回主函数 // 原式：可以改为break;更好             } else {                 printf("\t*******************************\n");                 printf("\t***两次输入的密码不一致！修改失败！***\n");                 printf("\t*******************************\n");                 // printf("\t请输入原来的密码：:"); // 原式：重复多余了 //                goto loop; //实现用户输出错误密码了，重新输入密码 ， // 原式：去掉label                 // getch(); // 原式：多余                 return; // 原式：可以改为break;更好             }         } else {             printf("\t*******************************\n");             printf("\t*********输入的密码错误！**********\n");             printf("\t*******************************\n");             // printf("\t请输入原来的密码：:"); // 原式：重复多余了  //            goto loop; // 原式：去掉label             // getch(); // 原式：多余             // break; // 原式：因为需要重复修改，所以，不能使用它中止while循环         }     }  }

user: user-0
content: 感谢大佬的帮助，太感谢了