目前主要出现在switch语句case4
我输入4 再输入n的时候 虽然会结束switch 但是还是会重新进入一遍case4 导致打印出现两次
调试的时候发现A = 10\n
而且输入y让程序继续通过switch运行的话 却没有什么反应 一直重复case4
麻烦大佬帮帮我这个萌新 已经想了一天了 还是找不到解决方法
#include<stdio.h>
int main(){
start:
int A[100],B[100];
int number1,number2,i,j;
int a = 0;
//A B集合元素的个数计算
int countA = 0;
int countB = 0;
printf("请输入你想输入A集合的元素个数(不超过100个):\n");
scanf("%d", &number1);
printf("请输入集合A的元素:\n");
for(i = 0;i < number1;i++){
scanf("%d", &A[i]);
countA++;
}
printf("请输入你想输入B集合的元素个数(不超过100个):\n");
scanf("%d", &number2);
printf("请输入集合B的元素:\n");
for(i = 0;i < number2;i++){
scanf("%d", &B[i]);
countB++;
}
//无序性判断
if(countA == countB){
int count = 0;
for(i = 0;i < number1;i++){
for(j = 0;j < number2;j++){
if(A[i] == B[j]){
count++;
}
}
}
if(count == number1){
printf("两个数组一样请重新输入\n");
goto start;
}
}
//互异性 (为了防止i,j同时取到最后一个元素,让j = i + 1)
for(i = 0;i < number1;i++){
for(j = i + 1;j < number1;j++){
if(A[i] == A[j]){
printf("数组A中含有一样的数请重新输入\n");
goto start;
}
}
}
for(i = 0;i < number2;i++){
for(j = i + 1;j < number2;j++){
if(B[i] == B[j]){
printf("数组B中含有一样的数请重新输入\n");
goto start;
}
}
}
printf("****************************************\n");
printf("请分别输入集合A和集合B的元素:\n");
printf("请选择(1-5)要进行的集合运算:\n");
printf("1-----集合的交运算(A ∩ B)\n");
printf("2-----集合的并运算(A ∪ B)\n");
printf("3-----集合的差运算(A-B)\n");
printf("4-----继续/退出(y/n)\n");
printf("****************************************\n");
restart:
while(a != 1){
int number;
scanf("%d", &number);
switch(number){
case 1:
printf("结果为:");
for(i = 0;i < number1;i++){
for(j = 0;j < number2;j++){
if(A[i] == B[j]){
printf("%d\t", A[i]);
}
}
}
printf("\n");
printf("请继续选择\n");
break;
case 2:
printf("2\n");
break;
case 3:
printf("3\n");
break;
case 4:
char A;
printf("继续请输入y,退出请输入n\n");
scanf("%c", &A);
if(A == 'n'){
a = 1;
}else if(A == 'y'){
goto restart;
}
break;
default:
printf("输入了错误的输入请重新输入\n");
}
}
return 0;
}