小白一只,自学c语言有一段时间了,目前刚学到数组,就想写个小程序练练手,大神别笑我

是一个计算器程序,还未完成,(脸红脸红)
本想着多些功能,但后面几个没有写就遇到问题了,就来求助一下!不影响第一个功能的使用!用了switch做菜单,四则计算器格式用了%g更加人性化,用了goto函数实现循环计算,但问题,就出在了goto函数上,总共用了两个goto函数,一个是实现循环计算,没有出现问题,

第二个是使用说明那里,设置了一个goto函数返回主菜单,就出现了如图的问题,出现了好几次错误,,我也知道goto函数最好不用,但没有找到其他能够替换的函数,求大神告知,如何解决?百思不得其解啊@淡淡的回忆
程序如下

#include <stdio.h>
#include <math.h>
int main() {
printf
("欢迎使用本计算器程序,输入相应的序号,回车键为执行操作!(不分大小写)\n\n");
first:printf("*******************************\n");
printf
("A. 四则运算!(加减乘除)\nB. 特殊运算(平方根,三角函数,对数)\nC. 使用说明\n");
printf("*******************************\n");
char XH, z; // 定义一个序号变量
scanf("%c", &XH);
switch (XH) {
case 'A':
case 'a': // 不分大小写
/* 四则计算器程序语句 */
loop:printf("请输入四则计算式:\n");
float a, b;
double c;
char f;
scanf("%g%c%g", &a, &f, &b);
switch (f) {
case '+':
c = a + b;
break;
case '-':
c = a - b;
break;
case '*':
c = a * b;
break;
case '/':
c = a / b;
break;
default:
printf("输入错误,请重新输入!\n");
}
printf("%g\n", c);
goto loop;
// 可以多次计算
break;
case 'B':
case 'b':
printf("***********************\n");
printf("A. 三角函数\nB. 求平方根\nC. 对数函数\n");
printf("***********************\n");
char p;
scanf("%c\n", &p);
if (p)
printf("该功能尚未完善!\n输入任意键+回车键返回主菜单!\n");
scanf("%c\n", &z);
if (z >0||z==0) {
goto first;
}
break;
case 'C':
case 'c':
printf
("联系作者QQ:814749293\n_____________________________\n\t使用说明\n_____________________________\n本程序是一个汇总的计算器程序,纯C编写,如有错误,请联系作者指出,十分感谢!\n输入任意键+回车键返回主菜单!\n\n");
scanf("%c\n", &z);
if (z == '\n') {
goto first;
}
break;
default:
printf("\a输入错误\n");
goto first; // 回到主菜单
}
return 0;
}