3-12-1
#include <stdio.h>
#include <stdlib.h>
//带多类型参数的函数,实现选择加减乘除运算
void tip()
{
printf(“\n");
printf("\n”);
printf(“请输入一种算法\n");
printf("设计者:罗可飞\n”);
printf(“\n");
printf("\n”);
}
int jia(int a,int b)
{
int z;
z = a + b;
return z;
}
int jian(int a,int b)
{
int z;
z = a - b;
return z;
}
chen(int a,int b)
{
int z;
z = a * b;
return z;
}
float chu(float a,int b)
{
float z;
z = a / b; //不同类型数据运算时,比如两个整数相除,必须将除数或者将被除数强制转换成小数,否则小数后面的小数点后面的数据会被忽略
return z;
}
void zenzhen(int a,int b,char suanfa) //正真算法运算处理
{
switch(suanfa)
{
case ‘+’:
jia(a,b); //调用加法
printf(“两数相加,结果:%d\n”,jia(a,b));
break;
case '-':
jian(a,b); //调用减法
printf("两数相减,结果:%d\n",jian(a,b));
break;
case 'x':
chen(a,b); //调用乘法
printf("两数相成,结果:%d\n",chen(a,b));
break;
case '/':
chu(a,b); //调用除法
printf("两数相除,结果:%f\n",chu(a,b)); //调用除法 需要用到小数,用%f,精确小数点后6位
break;
}
}
int shuru(char suanfa) //用int需要用到返回值
{
switch(suanfa)
{
case ‘+’:
printf(“你选择了加法\n”);
break;
case ‘-’:
printf(“你选择了减法\n”);
break;
case ‘x’:
printf(“你选择了乘法\n”);
break;
case ‘/’:
printf(“你选择了除法\n”);
break;
default:
printf("算法选择错误\n");
return -1; // return -1:返回函数上一层
break;
}
}
int xuanze(char suanfa) //用int需要用到返回值
{
int a;
int b;
int ret;
ret = shuru(suanfa); //调用输入想要算法函数
if(ret == -1)
{
return -1; //值再返回上一层
}
printf("请输入第一个数\n");
scanf("%d",&a);
printf("请输入第二个数\n");
scanf("%d",&b);
zenzhen(a,b,suanfa); //调用真正算法函数
}
int main()
{
int a;
int b;
float c;
char suanfa;
int mark=0;
int i;
int ret;
while(1)
{
tip();
if(mark != 0)//在这里的作用是把输入第二个数b以后的回车吸收掉,不想第一次进来的是时候被调用,所以通过mark来控制
getchar();
mark=1;
printf("请输入你想要的算法\n");
scanf("%c",&suanfa); //先输入了,再输入回车 (%c用于获取字符)
getchar();//吸收回车,回车符也是一种字符,getchar函数用来获取一个字符,在这里作用是把回车吸收掉
ret = xuanze(suanfa);
if(ret == -1)
{
printf("输入算法错误\n");
break; //跳出while语句
}
}
system("pause");
return 0;
}