以下是引用cy_guo在2015-11-5 15:38:39的发言:
我已经说了问的是goto的用法啊,我把else 和exit注释掉了,问题还是一样。
我已经说了问的是goto的用法啊,我把else 和exit注释掉了,问题还是一样。
我也再說一次,我不知道你發生了什麽問題。你不說,我不會去猜,直到你願意說爲止,明白?
授人以渔,不授人以鱼。
//练习1 #include <stdio.h> #include <conio.h> #include <stdlib.h> int system(const char *string); //清屏的函数声明,包含在stdlib.h int main () { double a = 0, b = 0; long int long_a, long_b; char c ; //calc标签 _calc: printf("请输入一个加减乘除或取模的运算,在各元素之间加一个空格,例如:n100 + 100n"); scanf("%lf %c %lf",&a, &c, &b); long_a = int(a); //转换成long int型 long_b = int(b); switch(c) { case '+': system("cls"); //调用函数清屏 printf("%lf %c %lf = %lf",a, c, b,a + b ); break; case '-': system("cls"); printf("%lf %c %lf = %lf",a, c, b,a - b ); break; case '*': system("cls"); printf("%lf %c %lf = %lf",a, c, b,a * b ); break; case '/': if(b == 0) { printf("除数不能为0"); break; } else if(a - long_a == 0 ) //这里用double型a减去强制转换成整数的a判断其是否为整数,如果为整数则输出的结果用整数商+余数的形式 { system("cls"); printf("n%d %c %d = %d 余 %d",long_a, c, long_b, long_a / long_b,long_a % long_b); break; } else { system("cls"); printf("%lf %c %lf = %lf",a, c, b,a / b ); break; } case '%': if(a - long_a == 0)// 因为只能是整数才能求余,故这里判断被除数是否为整数 { if(b - long_b == 0 && b != 0)//判断除数是否为整数和是否为0 { system("cls"); printf("%d %c %d = %d",long_a, c, long_b,long_a % long_b ); break; } else printf("求余时除数不能为浮点数也不可为0"); break; } else printf("被除数不能为浮点数"); break; default: break; } printf("n返回请按1,退出请按其他任意键n"); scanf("%d",&long_a); //问题出在这里 不知道为什么这里不能用字符型录入 if (long_a == 1) { system("cls"); goto _calc; //在这里跳转到标签 } getch(); return 0 ; }