设计函数出现错误求解答

题目要求:设计一个函数,输出一份有4个选项的菜单,提示用户选择;再设计一个带两个整型参数的函数,两个形参分别表示上限和下限,在调用该函数时,用户键盘输入的整数在上下限之间(1~4),则利用前一个函数输出用户选择的菜单,若超过上下限,则提示用户输入错误、重新输入,直至输出菜单中一个选项

不知道我输的程序哪里出现了错误,求朋友们指点一二


#include
int SHUCHU()
{
    printf("Please choose one of the following:\n");
    printf("1) copy files   2) move files\n");
    printf("3) remove files 4) quit\n");
    printf("Enter the number of your choice:");
    return 0;
 } 
 
 int PANDUAN(int x,int y)
 {
     x=4,y=1;
     int a;
     scanf("%d",&a);
     if((a>x)||(aprintf("用户输入错误、重新输入");
     }
     return 1;
 }
 

望采纳!点击该回答右侧的“采纳”按钮即可采纳!!!
大概来说就是三个问题

  1. 在函数 PANDUAN 中,x 和 y 的值没有意义,因为在函数内部立即将其重新赋值为 4 和 1。应将形参的值传入函数内部。
  1. 在函数 PANDUAN 中,每次用户输入的数字都超出了范围,因为输入的数字应该和 x 和 y 进行比较,而不是和 4 和 1 进行比较。
  1. 在函数 PANDUAN 中,每次用户输入错误时,都会提示用户输入错误、重新输入,但是并没有提供重新输入的机会。应该在提示用户输入错误后,再次调用 scanf 函数,让用户重新输入。

下面是根据你的代码修改的结果


#include<stdio.h>

void SHUCHU()
{
printf("Please choose one of the following:\n");
printf("1) copy files 2) move files\n");
printf("3) remove files 4) quit\n");
printf("Enter the number of your choice:");
}

int PANDUAN(int x, int y)
{
int a;
scanf("%d", &a);
while (a > x || a < y)
{
printf("输入错误,请重新输入:");
scanf("%d", &a);
}
return a;
}

int main()
{
SHUCHU();
int choice = PANDUAN(4, 1);
printf("你的选择是: %d\n", choice);
return 0;
}

没啥问题啊,就是x,y应该是传参进来的,一般不在函数里面赋值。

int  x=4,y=1;