功能在开关盒环路中

时间:2016-02-16 11:45:43

标签: c function loops switch-statement case

是否可以在开关盒环路中放置一个功能?因为我试过这个只是为了探索更多这个循环。虽然我尝试了其他方法,但我仍然存在问题。任何人都可以帮助我吗?

#include <stdio.h>
int main(void)

{

    int choice;

    switch(choice);
    {
    case 1:
    {
           int GetData()
           {
           int num;
           printf("Enter the amount of change: ");
           scanf("%d%*c", &num);

           return (num);

           }
           int getChange (int change,int fifty,int twenty,int ten,int five)
           {
                 int num = change;

                 fifty = num/50;
                 num %= 50;
                 twenty = num/20;
                 num %= 20;
                 ten = num/10;
                 num %= 10;
                 five = num/5;
                 num %= 5;

                 return (fifty, twenty, ten, five);
           }
           int main()
           {
                 int change, fifty, twenty, ten, five;

                 change = GetData();

                 if ((change < 5) || (change > 95) || (change%5 > 0))
           {
                 printf("Amount must be between 5 and 95 and be a multiple
                 of 5.");
           }
           else
           {
                 getChange(change, fifty, twenty, ten, five);

                 printf("Change for %d cents: \n", change);

                 if (fifty > 1)
                     printf("%d Fifty cent piece's.\n", fifty);
                 if (fifty == 1)
                     printf("%d Fifty cent piece.\n", fifty);
                 if (twenty > 1)
                     printf("%d Twenty cent piece's.\n", twenty);
                 if (twenty == 1)
                     printf("%d Twenty cent piece.\n", twenty);
                 if (ten > 1)
                     printf("%d Ten cent piece's\n", ten);
                 if (ten == 1)
                     printf("%d Ten cent piece.\n", ten);
                 if (five > 1)
                     printf("%d Five cent piece's\n", five);
                 if (five == 1)
                     printf("%d Five cent piece.\n", five);
           }

          return(0);

         }  

2 个答案:

答案 0 :(得分:7)

没有。不仅无法在switch语句中定义函数,也无法在C中嵌套函数定义。您必须在文件范围内定义它们。

在您提供的代码中,没有理由为什么您需要或需要定义嵌套函数,因此您的基本问题可能实际上是不同的。

另外:

  • 您无法从以下函数返回多个值:

    return (fifty, twenty, ten, five);
    
  • 您尝试两次定义main()

  • 在您初始化switch之前,choice上{li>

    choice case,这显然不是您想要做的。

  • 您的switch声明中只有一个switch,这意味着您根本不需要process.run声明。

答案 1 :(得分:1)

不,你不能。函数通常不能在另一个函数内声明。您只能定义它们。语言就是这样设计的。

另见:

我认为你需要一本好的C书或教程。您可以从here中选择一本好书,或查看this教程。我建议学习一本书,但如果你想在网上学习,那就很好,所提到的教程很好。我自己习惯在学习C时参考它。