c语言入门经典里的一个简洁的例子,求大神指点,100分!!!

Python09

c语言入门经典里的一个简洁的例子,求大神指点,100分!!!,第1张

函数中的变量pay是开设在堆中的,如果采用(2)调用printf时先入栈的是*pnew_pay,正巧这时堆还未被printf冲掉,可以将已废弃的pay位置的值返回;而(1)由于先调用了一遍printf堆中的pay位置数据被用作其他而值被改过了,所以不对。

依此,你在(1)中将两个printf颠倒一下有可能还是能输出正确的值的。

简单实现整数的加减乘除,不知道是不是你想要的:

#include <conio.h>

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

int plus(int a,int b)

{

return a+b

}

int subduction(int a,int b)

{

return a-b

}

int multiplication (int a,int b)

{

return a*b

}

float division(int a, int b)

{

if(b!=0)

return 1.0*a/b

}

void GetNum(int &a,int &b)

{

printf("请输入数据,a,b(整数)\n")

int n1,n2

scanf("%d %d",&n1,&n2)

a = n1

b = n2

}

void ShowMenu()

{

printf("**************************************\n")

printf("选择操作选项,即输入对应的数字: \n\n")

printf(" 菜单选项: \n")

printf(" 1、加法 :\n")

printf(" 2、减法 :\n")

printf(" 3、乘法 :\n")

printf(" 4、除法 :\n")

printf(" 0、退出 :\n")

printf("*************************************\n")

}

void main()

{

bool flag = false

while(1)

{

ShowMenu()

int option

scanf("%d",&option)

system("cls")

int a,b

if(option == 0)

break

GetNum(a,b)

switch(option)

{

case 1:

printf("%d + %d = %d\n",a,b,plus(a,b))

break

case 2:

printf("%d - %d = %d\n",a,b,subduction(a,b))

break

case 3:

printf("%d * %d = %d\n",a,b,multiplication(a,b))

break

case 4:

if(b!=0)

printf("%d / %d = %f\n",a,b,division(a,b))

else

printf("除数 %d == 0,不合法\n",b)

break

case 0:

break

}

}

}