c - 我试图将 return 放在代码末尾,但他们总是在 return 之前用 while 搞乱我

标签 c compiler-errors do-while

就像我想将“return 0”放在正确的位置一样,代码中的所有内容都工作正常。

遵守代码,他们一直说“在返回之前”,我试图把代码放在外面和里面

#include <stdio.h>
#include <stdlib.h>
#define MAXN 100

int menu(){
    printf("Menu:\n");
    printf("1- Add a value\n");
    printf("2- Search a value\n");
    printf("3- Print out the array\n");
    printf("4- Print out values in a range\n");
    printf("5- Print out the array in ascending order\n");
    printf("6- Quit?\n");
    printf("Enter your operation: ");
    int choice;
    scanf("%d", &choice);
    return choice;
}

int isFul (int*a, int n){   
return n==MAXN;
}
int isEmpty (int*a, int n){   
return n==0;
}
void add(int value, int*a, int*pn){
    a[*pn] = value;
    (*pn)++;
}
int search(int x, int *a, int n){
    int i;
    for (i=0; i<n; i++) if (a[i]==x) return i;
    return -1;
}
void printvalueinrange (int*a, int n){
    int i, min, max;
    printf("\nEnter min value: ");scanf("%d", &min);
    printf("\nEnter max value: ");scanf("%d", &max);
    for(i=0; i<sizeof(a); i++)
    if(a[i]>=min&&a[i]<=max) printf("%d", a[i]);
}
void printarray(int*a, int n){
    int i;
    for (i=0;i<n;i++) printf("%d", a[i]);
}
void printAsc(int*a, int n){ 
    int** adds =(int**)calloc(n, sizeof(int*));
    int i,j;
    for(i=0; i<n; i++) adds[i]= &a[i];
    int* t;
    for (i=0;i<n-1; i++)
       for(j=n-1; j>i; j--)
         if (*adds[j]< *adds[j-i]){
            t=adds[j];
            adds[j]=adds[j-1];
            adds[j-1]=t;
         }
    for (i=0;i<n; i++) printf("%d ", *adds[i]);
    free(adds);  
}
int main(){ 
    int a[MAXN];
    int n=0;
    int value;
    int choice;
    do
    {   choice= menu();
        switch(choice){
            case 1:{
                if (isFull(a,n)) printf("\n Sorry! The array is full.\n");
                else
                {  printf ("Input an added value:");
                   scanf("%d", &value);
                   add(value, a, &n);
                   printf("Added!\n");
                   }
                   break;
            }
            case 2:{
                if (isEmpty(a,n)) printf("\n Sorry! The array is empty.\n");
               else 
               {   printf ("Input the searched value:");
                   scanf("%d", &value);
                   int pos = search(value, a, n);
                   if (pos<0) printf("Not found!\n");
                   else printf("Postion is found: %d\n", pos);
               }   break;
            }
            case 3:{
                if (isEmpty(a,n)) printf("\n Sorry! The array is empty.\n");
                else
                   {
                     printarray(a,n);
                   } break;
                   }
            case 4:{
                if (isEmpty(a,n)) printf("\n Sorry! The array is empty.\n");
                else
                   {
                     printvalueinrange(a,n);  
                   } break;
               }
            case 5:{
                if (isEmpty(a,n)) printf("\n Sorry! The array is empty.\n");
                else
                   {
                    printAsc(a,n);          
                   } break;
                   } 
              default: printf ("Goodbye!");
              break;
        }
             while (choice>0 && choice<7);
             getchar(); 
    }
                return 0;
    }

我只是添加一些词来满足要求:“D 如果您发现我的代码中存在任何类型的错误或错误,请指出我以改进它们 xd

最佳答案

在主要部分

}
             while (choice>0 && choice<7);
             getchar(); 
    }
                return 0;
    }

while 结构占据了错误的位置。

应该有

    }
        } while (choice>0 && choice<7);
        getchar(); 
            return 0;
}

也在本声明中

if (isFull(a,n)) printf("\n Sorry! The array is full.\n");
    ^^^^^^

有一个错字。应该有

if (isFul(a,n)) printf("\n Sorry! The array is full.\n");

关于c - 我试图将 return 放在代码末尾,但他们总是在 return 之前用 while 搞乱我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58240203/

相关文章:

c - 我尝试在代码块上执行以下代码,我得到的不是 92.5 的标记,而是 0.000000

c - 奇怪的条件

android - Android java.lang.IllegalArgumentException : Unable to read class file

c++ - do-while 循环的哪个例子?

c - 强制输入大于或等于 0 且小于 24

c - 在C中获取整数的一部分

c - 4195808这个号码是怎么回事?

xcode - Xcode中的重复符号错误

c++ - 重新定义自定义删除

java - 在 do while 循环中检查条件的有效方法?