海滩长颈鹿342 2022-05-16 20:31 采纳率: 100%
浏览 24
已结题

不知道哪里出了问题?

#include <malloc.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void menu();
void menu1();
void menu2();
void menu3();
void menu4();

int main() {
int q;

P:
menu();

  printf("请选择您所需要的功能:\n");
  scanf("%d", &q);
   
switch (q) {
case 0:
  menu();
     goto P;
case 1:
   menu1();
     goto P;
 
case 2:
    menu2();
     goto P;
case 3:
    menu3();
     goto P;
case 4:
    menu4();
     goto P;
}
return 0;

}
void menu()
{

printf("请选择1-4\n");

}
void menu1()
{

int main()
{
int i,get,j=0;
double sum=0,num[21];
for(i=1;i<30;i++)
{
scanf("%d",&get);
if(get==999)break;
num[i]=get;
sum=sum+get;
j++;
}
printf("ave=%.2lf\n",sum/j);
for(i=1;i<=j;i++)
{
if(num[i]<sum/j)
{
printf("%6.1lf",num[i]);
}
}
return 0;
}

printf("选择menu1\n");

}
void menu2()
{

#define M 30
int main()
{
int a[M];
int i,x;
for (i=0;a[i-1]!=999;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&x);
for (i=0;a[i-1]!=999;i++)
{
if (a[i]==x)
{
printf("The index of %d is %d\n", x, i);
break;
}
}
if (a[i-1]==999)
{
printf("There is not %d\n", x);
}
return 0;
}

printf("选择menu2\n");

}
void menu3()
{

int main ()
{
int n[30],a,b,c,d,e,i;
a=b=c=d=e=0;
printf("Enter n[i]:");
for(i=0;n[i-1]!=999;i++)
scanf("%d",&n[i]);
for (i=0;n[i]!=999;i++)
{

if(n[i]>90)
{
    a=a+1;
}
else if((n[i]>=80)&&(n[i]<=90))
{
    b=b+1;
}
else if((n[i]>=70)&&(n[i]<80))
{
    c=c+1;
}
else if((n[i]>=60)&&(n[i]<70))
{
    d=d+1;
}
else if((n[i]<60)&&(n[i]>0))
{
    e=e+1;
}
else(n[i-1]!=999);
{
    printf("error");
}
}
printf("优%d\n: 良%d\n 中%d\n 及格%d\n 不及格%d\n",a,b,c,d,e);
return 0;

}

printf("选择menu3\n");

}
void menu4()
{

int main()
{
float score,max,min;
scanf("%f",&score);
max=score;
min=score;
while(score!=999)
{
if(score>max)
max=score;
if(score<min)
min=score;
scanf("%f",&score);
}

printf("最高成绩为:%f\n最低成绩为:%f\n",max,min);

return 0;
}

printf("选择menu4\n");

}
但运行结果是

img

希望可以解答一下

  • 写回答

1条回答 默认 最新

  • 程序喵正在路上 新星创作者: 后端开发技术领域 2022-05-16 20:44
    关注

    不能在自己写的函数里面写main函数,一个程序只能有一个main函数
    还有宏定义最好写在开头,我又改了一下

    #include <malloc.h>
    #include <math.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define M 30
    
    void menu();
    void menu1();
    void menu2();
    void menu3();
    void menu4();
    
    //主函数
    int main() {
        int q;
    p:
        menu();
    
        printf("请选择您所需要的功能:\n");
        scanf("%d", &q);
    
        switch (q) {
        case 0:
            menu();
            goto P;
        case 1:
            menu1();
            goto P;
    
        case 2:
            menu2();
            goto P;
        case 3:
            menu3();
            goto P;
        case 4:
            menu4();
            goto P;
        }
        return 0;
    }
    void menu()
    {
        printf("请选择1-4\n");
    }
    void menu1()
    { 
        int i, get, j = 0;
        double sum = 0, num[21];
        for (i = 1; i < 30; i++)
        {
            scanf("%d", &get);
            if (get == 999)break;
            num[i] = get;
            sum = sum + get;
            j++;
        }
        printf("ave=%.2lf\n", sum / j);
        for (i = 1; i <= j; i++)
        {
            if (num[i] < sum / j)
            {
                printf("%6.1lf", num[i]);
            }
        }
      
        printf("选择menu1\n");
    }
    void menu2()
    {
        int a[M];
        int i, x;
        for (i = 0; a[i - 1] != 999; i++)
        {
            scanf("%d", &a[i]);
        }
        scanf("%d", &x);
        for (i = 0; a[i - 1] != 999; i++)
        {
            if (a[i] == x)
            {
                printf("The index of %d is %d\n", x, i);
                break;
            }
        }
        if (a[i - 1] == 999)
        {
            printf("There is not %d\n", x);
        }
        
        printf("选择menu2\n");
    }
    void menu3()
    {
        int n[30], a, b, c, d, e, i;
        a = b = c = d = e = 0;
        printf("Enter n[i]:");
        for (i = 0; n[i - 1] != 999; i++)
            scanf("%d", &n[i]);
        for (i = 0; n[i] != 999; i++)
        {
    
            if (n[i] > 90)
            {
                a = a + 1;
            }
            else if ((n[i] >= 80) && (n[i] <= 90))
            {
                b = b + 1;
            }
            else if ((n[i] >= 70) && (n[i] < 80))
            {
                c = c + 1;
            }
            else if ((n[i] >= 60) && (n[i] < 70))
            {
                d = d + 1;
            }
            else if ((n[i] < 60) && (n[i] > 0))
            {
                e = e + 1;
            }
            else(n[i - 1] != 999);
            {
                printf("error");
            }
        }
        printf("优%d\n: 良%d\n 中%d\n 及格%d\n 不及格%d\n", a, b, c, d, e);
           
    
        printf("选择menu3\n");
    }
    void menu4()
    {
       
        float score, max, min;
        scanf("%f", &score);
        max = score;
        min = score;
        while (score != 999)
        {
            if (score > max)
                max = score;
            if (score < min)
                min = score;
            scanf("%f", &score);
        }
    
        printf("最高成绩为:%f\n最低成绩为:%f\n", max, min);
    
    
        printf("选择menu4\n");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月16日
  • 已采纳回答 5月16日
  • 修改了问题 5月16日
  • 创建了问题 5月16日