我试图将return放在代码的末尾,但是在返回之前,他们总是让我烦恼

问题描述 投票:0回答:1

就像我想将“ 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

就像我想在正确的位置放置“返回0”一样,代码中的所有内容都正常工作。编译代码,他们不断说“返回之前”,我试图把代码放在外面...

c compiler-errors do-while
1个回答
1
投票

在主体的此部分

© www.soinside.com 2019 - 2024. All rights reserved.