我一直在尝试创建计算器或半计算器,我想知道我的代码出了什么问题,为什么?
这是我的代码,我编译时遇到错误,在一台机器上我得到不同的错误,而在其他机器上,错误是不同的。
我希望你们能帮助我解决这个问题。 它是一个很小的程序,可以更好地理解C编程。
#include<stdio.h>
int main()
{
int operation,fc,v1,v2;
double fcd;
printf("input 2 values\n");
scanf("%d%d",&v1,&v2);
/* telling the user to choose any type of calculator */
printf("please choose what you want to do with your values\n");
printf("1- Sum\n");
printf("2- substracttion\n");
printf("3- multiplay\n");
printf("4- devision\n");
scanf("%d",&operation);//input a
switch(operation)
{
case 1:
int fc = sum(int v1, int v2);
printf("sum of two values = %d\n",fc);
break;
case 2:
int fc = substact(int v1, int v2);
printf("substract of two values = %d",fc);
break;
case 3:
int fc = multiplay(int v1, int v2);
printf("multiply of two values = %d\n",fc);
break;
case 4:
int fcd = devision(int v1, int v2);
printf("division of two values = %d\n",fc);
break;
default:
printf("wrong choice\n");
}
return 0;}
int sum(int a,int b)
{
int sum=0;
um=a+b;
return sum;
}
int substact(int a,int b)
{
int sub=0;
sub=a-b;
return sub;
}
int multiplay(int a,int b)
{
int mult=1;
mult=a*b;
return mult;
}
double devision(int a,int b)
{
double devi=1;
devi=a/b;
return devi;
}
答案 0 :(得分:3)
问题1
C(前C99)不允许在除块起点之外的任何地方声明变量。 (在执行任何声明之前)。同样在你的情况下,它可能会导致同一范围内具有相同名称的多个变量,这是不允许的。
int fc
和int fcd
突破上述条件,因此应移至功能顶部。 (它们已经存在,只需从案例中移除int
)
问题2
传递参数时,您不需要提供类型。
例如,sum(int v1, int v2);
很糟糕。 (从参数中删除int
)
警告的
始终在第一次使用之前声明(或定义)函数。在你的程序中,在main
中声明之前使用sum,substract等函数。
进一步阅读:
Variable inside switch
function call in C
Function in C
Why do functions need to be declared before they are used?
答案 1 :(得分:1)
代码中的以下语句可能会导致编译错误。
int fc = sum(int v1, int v2);
您已经声明了fc变量,那么为什么要再次声明它?在函数内多次声明变量可能会导致编译错误。 还有一件事是你不能以下面的方式调用函数 int fc = sum(int v1,int v2)。浏览与C编程相关的书籍,了解如何进行功能调用。
所以修改上面的C语句如下。
fc = sum(v1,v2);
我没有编译你的代码,但我认为上面的更改应该可以解决你的编译错误
答案 2 :(得分:0)
编译错误很可能是关于函数sum,substract等的声明。您编写的代码在main函数中使用后定义了函数。 如果您打算从main函数调用它们,请在主函数之前“声明”所有函数。
答案 3 :(得分:0)
我希望这个解决方案可以帮到你。在调用该函数之前,必须先声明。以下是示例源代码。
#include <stdio.h>
/* function declaration */
int max(int num1, int num2);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
int ret;
/* calling a function to get max value */
ret = max(a, b);
printf( "Max value is : %d\n", ret );
return 0;
}
/* function returning the max between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
答案 4 :(得分:0)
几个问题:
您需要在使用之前声明函数。
您无法重复类型声明。例如,你在程序的开头声明了fc,然后重复它的switch语句:&#34; int fc = ...&#34;,只需使用&#34; fc = ...&# 34;
最后,在调用函数时不要声明类型。 以下是最低限度更正的代码:
#include<stdio.h>
int sum(int a,int b);
int substact(int a,int b);
int multiplay(int a,int b);
double devision(int a,int b);
int main()
{
int operation,fc,v1,v2;
double fcd;
printf("input 2 values\n");
scanf("%d%d",&v1,&v2);
/* telling the user to choose any type of calculator */
printf("please choose what you want to do with your values\n");
printf("1- Sum\n");
printf("2- substracttion\n");
printf("3- multiplay\n");
printf("4- devision\n");
scanf("%d",&operation);//input a
switch(operation)
{
case 1:
fc = sum(v1, v2);
printf("sum of two values = %d\n",fc);
break;
case 2:
fc = substact(v1, v2);
printf("substract of two values = %d",fc);
break;
case 3:
fc = multiplay(v1, v2);
printf("multiply of two values = %d\n",fc);
break;
case 4:
fcd = devision(v1, v2);
printf("division of two values = %d\n",fc);
break;
default:
printf("wrong choice\n");
}
return 0;
}
int sum(int a,int b)
{
int sum=0;
sum=a+b;
return sum;
}
int substact(int a,int b)
{
int sub=0;
sub=a-b;
return sub;
}
int multiplay(int a,int b)
{
int mult=1;
mult=a*b;
return mult;
}
double devision(int a,int b)
{
double devi=1;
devi=a/b;
return devi;
}
答案 5 :(得分:0)
这是另一个有点不同的程序,也是了解在开关盒内调用函数的简单方法。 这是声明和调用函数的最简单方法之一
声明所有函数并从函数外部调用
#include<stdio.h>
#include<conio.h>
int x,y;
int addi(int,int);//when call the function. The function must be integer type.
int multi(int,int);
int divi(int,int);
int square(int);
int evenOdd(int);
int substracn(int,int);
int main()
{
int choice;
printf("*********************************************************************\n");
printf("\t\tCalculator\n");
printf("*********************************************************************\n");
printf("Enter a choice what you want to perform");
printf("\n\t1.Addition");
printf("\n\t2.Multiplication");
printf("\n\t3.Division");
printf("\n\t4.Square");
printf("\n\t5.Even or Odd");
printf("\n\t6.Substraction\n");
scanf("%d",&choice);
switch(choice)//switch case use when more than 2 options are there. Then it is the best
{
case 1: printf("\n\tAddition");
printf("\nEnter two no for addition");
scanf("\n%d\t%d",&x,&y);
addi(x,y);//function by passing paramenter
break;//break the statement after the execution of the function definition
case 2: printf("Enter two no's for multiplication");//multiplication
scanf("\n%d\t%d",&x,&y);
multi(x,y);
break;
case 3: printf("Enter two no's for division");
scanf("%d%d",&x,&y);
divi(x,y);
break;
case 4: printf("Enter one no for square of no");
scanf("%d",&x);
square(x);
break;
case 5: printf("Enter the no for even odd");
scanf("%d",&x);
evenOdd(x);
break;
case 6: printf("Enter the two no's for Substraction");
scanf("%d%d",&x,&y);
subtracn(x,y);
break;
default:
printf("Enter a valid option");
}
getch();
}
int addi(int a,int b)
{
int c;
c=a+b;
printf("sum of no %d + %d is: %d",a,b,c);
}
int multi(int a,int b)
{
int c;
c=a*b;
printf("multiplication of no %d x %d is: %d",a,b,c);
}
int divi(int a,int b)
{
int c;
c=a/b;
printf("division of no's is: %d",c);
}
int square(int a)
{
int c;
c=a*a;
printf("square of no %d is: %d",a,c);
}
int evenOdd(int a)
{
if(a%2==0)
{
printf("The no is even : %d",a);
}
else
{
printf("The no is odd : %d",a);
}
}
int subtracn(int a,int b)
{
int c;
c=a-b;
printf("Substraction of no's is: %d",c);
}`
答案 6 :(得分:0)
let role = "teacher";
forStudent = ()=>{
console.log("from student");
}
forTeacher = ()=>{
console.log("from teacher");
}
forOwner = ()=>{
console.log("from owner");
}
defFunc = ()=>{
console.log("its default");
}
switch(role){
case 'student': forStudent();
break;
case 'teacher': forTeacher();
break;
case 'owner': forOwner();
break;
default: defFunc ();
}
这是如此简单。
在调用函数之前确保已经定义了函数
上面的代码是用Javascript编写的,但希望对其他语言也有意义。