这是我们今天的练习,也是我们第一次在课堂上编写呼叫功能。这些是给我们的指示:
我的程序已经编辑了很多。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int add(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);
int main(){
int num1, num2, choice;
printf("[0] Exit\v[1] Add\v[2] Subtract\v[3] Multiply\v[4] Divide");
scanf("%d", &choice);
switch(choice){
case 0:
return 0;
break;
case 1:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d", add(num1,num2));
break;
case 2:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d ", sub(num1,num2));
break;
case 3:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d", mul(num1,num2));
break;
case 4:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d", div(num1,num2));
break;
default:
printf("That is not a valid choice.");
break;
}
//Addition
int add(int x,int y){
int z = x + y;
return z;
}
//Subtraction
int sub(int a,int b){
int c = a - b;
return c;
}
//Multiplication
int mul(int d,int e){
int f = d * e;
return f;
}
//Division
int div(int g,int h){
int i = g / h;
return i;
}
}
目前,只有两个错误: [错误]'div'的冲突类型 和 之前'div'的声明就在这里
答案 0 :(得分:1)
“我已经编辑了它,但我总是收到此错误:[错误]'div'的类型冲突”
=&GT;因为函数名称div()已在stdlib.h中定义。
您应该使用其他名称重命名。
例如:Divide(int,int);
答案 1 :(得分:1)
编程的一个基本原则是D.R.Y. =不要重复自己。如果您在多个点中看到相同的代码以相同的方式重复,则表示您可以将其分组为一个很好的函数。您可以通过不在每个数学函数中分配变量来节省一些空间,只需返回数学公式。
另外,如果这是一个连续循环,你应该使用一个循环
while(true) {
...
}
并在用户键入0
时退出答案 2 :(得分:0)
您通过编码得到了巨大的问题:
int sum = add; // etc
这没有任何意义 - 您将一个函数指针(add
)分配给int
(sum
)
您只想(稍后在代码中):
printf("%d\n", add(num1, num2);
你使代码远过于复杂 - 简单就是好!。
答案 3 :(得分:0)
main()
如下所示:
int main(void) {
...whatever...
switch (choice) {
...whatever...
}
int add() {
...
}
...whatever...
} /* wrong place for closing '}' (this closes the "main() {" block */
您的代码的结果是函数add(),sub()等在main()
的主体内定义,这是错误的。
答案 4 :(得分:0)
你的函数声明应该在main函数之外。所以关闭main函数,比定义add,sub,mul,div。它将解决错误。 使用循环来反复执行某些过程。 为避免代码冗余,您可以创建一个获取输入值并将其存储在内存地址中的函数。在任何地方调用此函数而不是重复代码。
您可以在下面找到一个函数名称 getData ,它从用户获取两个值并将其存储在传递给该函数的内存地址中。调用程序将传递存储器地址,其中必须存储这些值。
编写代码时的一些准则:
1.) Write DRY(Dont Repeat Yourself) type code.
2.) Use only required header files. stdio.h is enough to do basic programming in your case.
简单工作代码:
#include<stdio.h>
// Function Prototype
int add(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);
void getData(int *, int *);
// Main Function
int main()
{
int num1, num2, choice;
while(1)
{
printf("\n[0] Exit\n[1] Add\n[2] Subtract\n[3] Multiply\n[4] Divide\nEnter Your Choice:");
scanf("%d", &choice);
switch(choice)
{
case 0:
return 0;
case 1:
getData(&num1, &num2); // get Input Values
printf("%d", add(num1,num2));
break;
case 2:
getData(&num1, &num2); // get Input Values
printf("%d ", sub(num1,num2));
break;
case 3:
getData(&num1, &num2); // get Input Values
printf("%d", mul(num1,num2));
break;
case 4:
getData(&num1, &num2); // get Input Values
printf("%d", div(num1,num2));
break;
default:
printf("That is not a valid choice.");
break;
}
}
}
// Get Memory Address of num1, num2 and store input values in those locations.
void getData(int *num1_ptr, int *num2_ptr)
{
printf("Enter 1st number:\n");
scanf("%d", num1_ptr);
printf("Enter 2nd number:\n");
scanf("%d", num2_ptr);
}
//Addition
int add(int x,int y)
{ return x+y; }
//Subtraction
int sub(int x,int y)
{ return x-y; }
//Multiplication
int mul(int x,int y)
{ return x*y; }
//Division
int div(int x,int y)
{ return x/y; }
答案 5 :(得分:0)
#include<stdio.h>
#include<math.h>
int add(int, int);
int sub(int, int);
int mul(int, int);
float dib(float, float);
int main(){
int num1, num2, choice;
printf("1:addiction\n2:substraction\n3:multiplication\n4:division\n0:exit\nplease enter your choice:");
scanf("%d", &choice);
switch(choice){
case 0:
return 0;
break;
case 1:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d", add(num1,num2));
break;
case 2:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d ", sub(num1,num2));
break;
case 3:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%d", mul(num1,num2));
break;
case 4:
printf("Enter 1st number:\n");
scanf("%d", &num1);
printf("Enter 2nd number:\n");
scanf("%d", &num2);
printf("%f", dib(num1,num2));
break;
default:
printf("That is not a valid choice.");
break;
}
}
//Addition
int add(int x,int y){
int z = x + y;
return z;
}
//Subtraction
int sub(int a,int b){
int c = a - b;
return c;
}
//Multiplication
int mul(int d,int e){
int f = d * e;
return f;
}
//Division
float dib(float g,float h){
float i = g / h;
return i;
}