首页 > 解决方案 > 使用 C 中的函数进行输入不起作用

问题描述

我有这个愚蠢的程序来解决我的愚蠢问题。我是一个非常初学者。让我告诉你我想做什么以及这里发生了什么:

我想做的事:我基本上是在尝试为输入创建一个函数,这里将其命名为inp()。此函数将使用以下两行请求输入:

printf("Enter the Number: ");
scanf("%d", &dip);

当我的程序从用户那里获取数字时,它将把它存储在一个变量中,比如说dip并将这个数字用于我们另外两个名为squarefncubefn的函数中。我不知道这里出了什么问题。但是,我无法正确使用inp()从用户那里获取号码。

为什么我要使用 inp() 函数?:基本上,我只想将所有内容保存在每个函数中,所以每当我需要时,我都会调用我的函数。我创建了inp()以便我不需要询问两次或输入两次输入。

**输出是什么?:**它显示一些随机值或垃圾值。

需要更多信息?随意问!

#include<stdio.h>
int squarefn(int x);
int cubefn(int cube);
int coic();
int printkor(int printkortesi);
int inp();

int main()
{
    coic();
}

int squarefn(int input)
{
    input = input * input;
    return input;
}

int cubefn(int input)
{
    input = input * input * input;
    return input;
}

int coic()
{
    int coi;
    int x;
    printf("Which one you want?\n");
    printf("1. Square\n");
    printf("2. Cube\n");
    printf("Enter here: ");
    scanf("%d", &coi);
    
    int cubed = cubefn(x);

    switch (coi)
    {
    case 1:
        // printf("Enter the Number: ");
        // scanf("%d", &x);
        inp();
        int dear = inp(x);
        squarefn(dear);
        int squared = squarefn(x);
        printkor(squared);
        break;
    case 2:
        printf("Enter the Number: ");
        scanf("%d", &x);
        cubefn(x);
        int cubed = cubefn(x);
        printkor(cubed);
        break;
    default:
        printf("Error.");
        break;
    }
}

int inp()
{
    int dip;
    printf("Enter the Number: ");
    scanf("%d", &dip);
    return dip;
}

int printkor(int printkortesi)
{
    printf("Printed: %d", printkortesi);
}

标签: cvisual-studiofunction

解决方案


您的程序中有很多冗余代码,许多语句除了占用 CPU 时间之外什么都不做。阅读C 中的函数调用。阅读后,您的大部分疑问都会得到解决

return_type function_name( parameter list ) {
   body of the function
}

您的返回类型为int, 以接收函数的值foo

int foo(int x)
{return x*x;}
int main()
{
int y =foo(5);  //integer y takes value returned by function foo, that is 5
printf("%d\n",y); // This will print value 25
return 0;
}

您的代码更改如下,现在应该可以工作:

#include<stdio.h>
int squarefn(int x);
int cubefn(int cube);
int coic();
int printkor(int printkortesi);
int inp();

int main()
{
    coic();
}

int squarefn(int input)
{
    input = input * input;
    return input;
}

int cubefn(int input)
{
    input = input * input * input;
    return input;
}

int coic()
{
    int coi;
    int x;
    printf("Which one you want?\n");
    printf("1. Square\n");
    printf("2. Cube\n");
    printf("Enter here: ");
    scanf("%d", &coi);
    
    int cubed = cubefn(x);

    int dear = inp();
    switch (coi)
    {
    case 1:
        {int squared = squarefn(dear);
        printkor(squared);
        break;}
    case 2:
        {int cubed = cubefn(dear);
        printkor(cubed);
        break;}
    default:
        printf("Error.");
        break;
    }
}

int inp()
{
    int dip;
    printf("Enter the Number: ");
    scanf("%d", &dip);
    return dip;
}

int printkor(int printkortesi)
{
    printf("Printed: %d\n", printkortesi);
}

编辑:修复它,我只是注意到 switch 语句中有变量声明。Case语句只是标签。这意味着编译器会将其解释为直接跳转到标签。所以我添加{ }了开关,它现在应该可以工作了。


推荐阅读