c - 使用 C 中的函数进行输入不起作用
问题描述
我有这个愚蠢的程序来解决我的愚蠢问题。我是一个非常初学者。让我告诉你我想做什么以及这里发生了什么:
我想做的事:我基本上是在尝试为输入创建一个函数,这里将其命名为inp()。此函数将使用以下两行请求输入:
printf("Enter the Number: ");
scanf("%d", &dip);
当我的程序从用户那里获取数字时,它将把它存储在一个变量中,比如说dip并将这个数字用于我们另外两个名为squarefn和cubefn的函数中。我不知道这里出了什么问题。但是,我无法正确使用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);
}
解决方案
您的程序中有很多冗余代码,许多语句除了占用 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
语句只是标签。这意味着编译器会将其解释为直接跳转到标签。所以我添加{
}
了开关,它现在应该可以工作了。
推荐阅读
- node.js - 安装 npm 6.4.1 版时如何修复错误
- java - 如何为 2 种不同类型的基于值的类编写等于?
- python - 熊猫:当列值更改时在另一列中注释
- python - 如何使用 Parallel-SSH 库传输环境变量
- javascript - 角js中具有不同大小和结构的3个值的半圆进度条
- python - 循环嵌套字典并在不满足条件时删除(python)
- r - Logit回归:glmer vs bife
- angular - 无法遍历我的 html 中的数组
- android - Android firebase 写入数据加载另一个片段或使用这些片段重新加载活动
- ios - 用绘图在 UIScrollView 内缩放 UIView