用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。

函数功能:

使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。

思考:

三个参数中两个操作数不用处理,直接传入即可,而对于第一个操作数就需要处理了,以保证传入的参数是“‘-a‘,‘-s‘,‘-m‘,‘-d‘”,以便于处理计算,第一步将操作符号转化为上述赋好,然后将参数以及操作数传入函数。

程序如下:

/*
**1.使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,
**第一个参数“-a”选项执行加法,“-s”选项执行减法,
**“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
*/
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_math(char *p, int num1, int num2)
{
	assert(p);
	if (p == "-a")
		return num1 + num2;
	else if (p == "-s")
		return num1 - num2;
	else if (p == "-m")
		return num1*num2;
	else if (p == "-d")
		return num1 / num2;
	else return 0;
}
int main()
{
	char a,b;
	char *p=&b;
	int num1 = 0;
	int num2 = 0;
	printf("请输入要计算的算式:");
	scanf("%d%c%d",&num1,&a,&num2);  //录入算式,num1,num2为操作数,a保存的是操作符
	while (1)      //分别对参数指针p赋值,‘+’,‘-’,‘*’,‘/’,分别对应“-a,-s,-m,-d”,如果别的符号队p赋‘\0’
	{
		if (a == ‘+‘)
		{
			p= "-a" ;
			break;
		}
		else if (a == ‘-‘)
		{
			p = "-s";
			break;
		}
		else if (a == ‘*‘)
		{
			p = "-m";
			break;
		}
		else if (a == ‘/‘)
		{
			p = "-d";
			break;
		}
		else *p = ‘\0‘;
	}
	int result = my_math(p, num1, num2);    //函数调用,得到结果。
	printf("%d%c%d=%d\n",num1,a,num2,result);  //分别输出
	system("pause");
	return 0;
}

经过验证,结果正确,注意:录入算数式的时候不要录入等号,如要计算5加3,录入“5+3”即可!

欢迎各位大神批评指正!

时间: 2024-08-08 09:37:24

用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。的相关文章

c语言经典算法——查找一个整数数组中第二大数

题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1赋给max2,使原先最大的数成为第二大的数,再将这个数a赋给max1,如果这个数a比max1小但比max2大,则将这个数a赋值给max2,依次类推,直到数组中的数都比较完. c语言代码: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #defin

编写高质量代码改善C#程序的157个建议——建议1:正确操作字符串

最近拜读了陆敏技老师的<编写高质量代码改善C#程序的157个建议>,感觉不错,决定把笔记整理一遍. 建议1: 正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价.本条建议将从两个方面来探讨如何规避这类性能开销: 确保尽量少的装箱 避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String str1 = "str1"+ 9; String str2 = "

编写一个函数 reverseDigit(int num).该函数读入一个整数,然后将这个整数的每个位上的数字逆序输出。

#include<iostream> using namespace std; void reverseDigit(int num) { int a[100],len=0; while(num!=0) { a[len++]=num%10; num/=10; } for(int i=0;i<len;i++) cout<<a[i]; cout<<endl; } int main() { int n; cout<<"请输入一个数字:";

【C语言】【面试题】【笔试题】使用main函数实现一个整数计算器!

#include <stdio.h> #include <stdlib.h> #include <string.h> int add(int num1, int num2) {     return num1 + num2; } int sub(int num1, int num2) {     return num1 - num2; } int mul(int num1, int num2) {     return num1 * num2; } int div_a(

【C语言】【面试题】使用main函数的参数,实现一个整数计算机,程序可以接受三个参数

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> int int_computer(int num1, char *p, int  num2) {  if (p == "-a")   return num1 + num2;  else if (p == "-s")   return num1 - num

C语言:使用main函数的参数,实现一个整数计算机。

#include<stdio.h> #include<stdlib.h> #include<assert.h> int calculator(int num1, char *p, int  num2) {      if (p == "-a")           return num1 + num2;      else if (p == "-s")           return num1 - num2;      else

编写一个函数判断一个整数是否为回文数。如果一个属从正的方向读和从反的方向读的结果相同,则该数就是回文数。

bool palindrome(int b){ int k = 0; char a[1000]; do { int c; c = b % 10; char d; for (int i = 0; i <= 9; i++) { if (c == i) { d = '0' + i; break; } } a[k++] = d; b = b / 10; } while (b != 0); // k = 字符长度 int j = 0; if (k == 1) { return true; } else {

用C语言编写函数,实现strlen计算字符串长度的功能

本文介绍三种方法: 1.循环计数法,(设置一个计数器). 2.递归法,(函数调用自身进行计算) 3.指针-指针法,(库函数使用的是此方法) 现在列入程序: 方法1: /* 计数法 */ int my_strlen(char *p) { int number = 0; while (*p) { number++; p++; } return number; } 方法2: /* 递归法 */ int my_strlen(char *str1) { if (*str1 != '\0') { str1+

PHP函数求一个整数的阶乘

//随手写的一个阶乘的函数 注意:不要把负数给忘了!不要把负数给忘了!不要把负数给忘了! <?php  function jisuan($i){ if($i==0){                                    return 1; }elseif($i<0){     $rest=$i*jisuan($i+1);                //负数往0靠近是+1      return $rest; }else{     $rest=$i*jisuan($i-1)