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;

}