精华内容
下载资源
问答
  • printf("请在下方输入四则运算\n"); scanf("%lf%c%lf",&a,&c,&b); switch(c) {case '+':z=a+b;break; case '*':z=a*b;break; case '-':z=a-b;break; case '/':z=a/b;break.

    充分利用选择结构中的switch语句进行 

    #include <stdio.h>
    int main()
    {	double a,b,z;
    	char c;
    	printf("请在下方输入四则运算\n");
    	scanf("%lf%c%lf",&a,&c,&b);
    	switch(c)
    	{case '+':z=a+b;break;
    	 case '*':z=a*b;break;
    	 case '-':z=a-b;break;
    	 case '/':z=a/b;break;	 
    	}
    	printf("%.1f\n",z);
    	return 0;
    }

     

    展开全文
  • 这是我学习C语言过程中一个小练习,后续应该会对计算器进行功能添加和优化 本文主要介绍编程过程中遇到问题、原因和解决办法 一、编程过程中遇到错误 1.第二个scanf函数()不等输入就自动执行 2. 编译时报错...


    前言

    这是我学习C语言过程中的一个小练习,后续应该会对计算器进行功能添加和优化
    本文主要介绍编程过程中遇到的问题、原因和解决办法

    一、编程过程中遇到的错误

    1.第二个scanf函数()不等输入就自动执行
    2. 编译时报错函数重定义,不同的基类型
    3. switch误拼写成swith

    二、错误解析

    1.经调试可以看出变量a读入了换行符’\n’,查找资料可知:
    在scanf()语句中:
    -对于参数%d:会忽略缓冲区开头的空白符(空格、回车、制表符等)(无论有几个);
    -对于参数 %c:直接读取缓冲区的第一个字符(无论这个字符是什么);[^1]
    故在第一个scanf()语句后使用getchar()来读入’\n’。
    2.自定义函数未声明就使用了
    将函数放到主函数前,或在include语句和宏定义后加上声明
    3.低级拼写错误,还仔细看了好久才发现拼写错了
    [^1]此部分参考尘鞅cy的博客

    三、代码

    代码如下:

    #include<stdio.h>
    void menu()
    {
    	printf("简易计算器\n");
    	printf("\n");
    }
    double calc()
    {
    	double num1, num2;
    	char a;
    	while (1)
    	{
    		printf("请输入第一个数:\n");
    		scanf("%lf", &num1);
    		getchar();//吃掉\n
    		printf("请输入运算符(+ - * /): \n");
    		scanf("%c", &a);
    		printf("请输入第二个数: \n");
    		scanf("%lf", &num2);
    		switch (a)
    		{
    		case'+':
    			printf("%lf + %lf = %lf\n", num1, num2, num1 + num2);
    			break;
    		case'-':
    			printf("%lf - %lf = %lf\n", num1, num2, num1 - num2);
    			break;
    		case'*':
    			printf("%lf * %lf = %lf\n", num1, num2, num1 * num2);
    			break;
    		case'/':
    			if (num2 == 0)
    			{
    				printf("除数不能为0\n");
    			}
    			else
    			{
    				printf("%lf / %lf = %lf\n", num1, num2, num1 / num2);
    			}
    			break;
    		default:
    			break;
    		}
    	}
    	return 0.0;
    }
    int main()
    {
    	menu();
    	calc();
    	return 0;
    }
    
    

    总结

    这是我的第一篇博客,希望以后也能够坚持下去!

    展开全文
  • 进行10以内整数加减乘除
    //说明:只能进行10以内整数的加减乘除,并且表达式的值要以“#”结尾
    #include <malloc.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define TRUE 1
    #define FALSE 0
    #define ERROR 0
    #define OK 1
    #define STACK_INIT_SIZE 100 //存储空间初始分配量//
    #define STACKINCREMENT 10   //存储空间分配增量//
    
    
    
    typedef char SElemType;
    typedef int Status;
    
    char a[][7]={
        {'>','>','<','<','<','>','>'},
        {'>','>','<','<','<','>','>'},
        {'>','>','>','>','<','>','>'},
        {'>','>','>','>','<','>','>'},
        {'<','<','<','<','<','=',' '},
        {'>','>','>','>',' ','>','>'},
        {'<','<','<','<','<',' ','='}
    };
    /*char a[][]={
        {'>','>','>','>','<','>','<'},
        {'>','>','>','>','<','>','<'},
        {'<','<','>','>','<','>','<'},
        {'<','<','>','>','<','>','<'},
        {'<','<','<','<','<',' ','<'},
        {'>','>','>','>','=','>',' '}, 
        {'>','>','>','>',' ','>','='}
    };*/
    
    char OP[7]={'+','-','*','/','(',')','#'};
    
    typedef struct
    {
        SElemType* base;  //在栈构造之前和销毁之后,base的值为NULL//
        SElemType* top;   //栈顶指针//
        int stacksize;    //当前已分配的存储空间,以元素为单位//
    }SqStack;
    
    //构造一个空栈S//
    int InitStack(SqStack &S)
    {
        S.base=(SElemType*)malloc(STACK_INIT_SIZE *sizeof(SElemType));
        if(!S.base)
            exit(ERROR);  //存储分配失败//
        S.top=S.base;
        S.stacksize =STACK_INIT_SIZE;
        return OK;
    }
    
    
    Status GetTop(SqStack S)
    {   //若栈不为空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR//
        if(S.top==S.base)
            return ERROR;
    
        return *(S.top-1);
    }
    
    
    
    //插入元素//
    int Push(SqStack &S, SElemType e)
    {   //插入元素e为新的栈顶元素//
        if(S.top-S.base>=S.stacksize)
        {    //栈满,追加存储空间//
            S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
            if(!S.base)
                exit(ERROR);  //存储分配失败//
            S.top=S.base+S.stacksize;
            S.stacksize+=STACKINCREMENT;
        }
        *S.top++=e;
        return OK;
    }
    
    int Pop(SqStack &S, SElemType &e)
    {  //若栈不为空,则删除S的栈顶元素,用e返回其值,并返回//
        if(S.top==S.base)
            return ERROR;
        e=*(--S.top);
        return OK;
    }
    
    
    //检查是否为空栈//
    int EmptyStack(SqStack &S)
    {
        if(S.top==S.base)
            return 1;
        else
            return 0;
    }
    /*int ListTraverse(SqStack S,Status(*visit)(SElemType))
    {
        SElemType *p;
        p=S.base;
        for(p=S.base;p<S.top;p++)
            (*visit)(*p);
        return OK;
    }*/
    
    int Precede(char c1,char c2)
    {
        int i,j;
        switch(c1)
        {
        case'+':i=0;
            break;
        case'-':i=1;
            break;
        case'*':i=2;
            break;
        case'/':i=3;
            break;
        case'(':i=4;
            break;
        case')':i=5;
            break;
        case'#':i=6;
            break;
        }
        switch(c2)
        {
        case'+':j=0;
            break;
        case'-':j=1;
            break;
        case'*':j=2;
            break;
        case'/':j=3;
            break;
        case'(':j=4;
            break;
        case')':j=5;
            break;
        case'#':j=6;
            break;
        }
    
        return a[i][j];
    }
    int Operate(char a,char theta,char b)
    {
        char result,i,j;
        i=a-48;
        j=b-48;
        switch(theta)
        {
        case'+':result=i+j+48;break;//因为数值是char型,所以要将0~9的ASCII码值转化为数值,进行计算后再转为ASCII码值存储
        case'-':result=i-j+48;break;
        case'*':result=(i*j)+48;break;
        case'/':result=(i/j)+48;break;
        }
        return result;
    }
    int In(char c,char OP[])
    {
        int i,f=0;
        for(i=0;i<7;i++)
        {
            if(c==OP[i])
            {
                f=1;
            break;  
            }
        }
        if(f==0)
            return 0;
        else return 1;
    }
    
    
    
    //表达式求值//
    int EvaluateExpression()
    {
    //  int a,b,c;
        char a,b,c,r;
        char theta,x;
        SqStack OPTR;
        SqStack OPND;
        InitStack(OPTR);
        Push(OPTR,'#');
        InitStack(OPND);
        c=getchar();
        while(c!='#'||GetTop(OPTR)!='#')
        {
            if(!In(c,OP))
            {
                Push((OPND),c);
                c=getchar();
            }
            else
            switch(Precede(GetTop(OPTR),c))
            {
                case'<':
                    Push(OPTR,c);
                    c=getchar();
                    break;//1+2#:如加上printf("1234%c\n",c)语句可以看到c为+号
                case'=':
                    Pop(OPTR,x);
                    c=getchar();break;
                case'>':
    
    
                    Pop(OPND,b);
                    Pop(OPTR,theta);
                    Pop(OPND,a);
                    Push(OPND,Operate(a,theta,b));
                    break;//theta未取到栈顶元素,即在1+2的过程中theta未取到+号
    
            }
        }
        r=GetTop(OPND)-48;//将数值由ASCII码值转化为十进制的数值
        return r;
    }
    
    void main()
    {
        int c;
        printf("请输入需要计算的表达式:\n");
        c=EvaluateExpression();
        printf("result=%d\n",c);
    }

    这里是通过数据结构中的栈来实现简单的数学计算,现有程序还不完善,不能进行小数和两位数以上的加减乘除算法,后续还会进行改进的。

    展开全文
  • //标准输入输出流 #include<stdlib.h>//system(“pause”)要用 int main(void) { char ch;//定义一个字符形变量ch, //之后根据ch值不同利用switch case进入不同分支 float a, b;//为什么要定义为浮点...

    #include<stdio.h>//标准的输入输出流
    #include<stdlib.h>//system(“pause”)要用
    int main(void)
    {
    char ch;//定义一个字符形的变量ch,
    //之后根据ch值的不同利用switch case进入不同的分支
    float a, b;//为什么要定义为浮点型的,因为我们输入的数有可能是小鼠,不一定都是整数
    int flag = 0;//定义并初始化flag的值为0
    do
    {//按照规范“每一个分支都需要由break退出循环
    printf(“请输入你的两个数字”);//提示用户输入两个数字
    scanf_s("%f%f", &a, &b);//将你刚才输进缓冲区域的两个变量都进去
    printf(“请输入你想要的四则运算”);
    getchar();//为什么要用一个getchar(),
    //因为输入第二个数字的时候,还想缓冲区中输入了一个换行符
    //如果不用getchar()将刚刚的那个\n读掉的话,
    //那么字符ch就会将那个换行符读入,就不能读入我们想要
    //的那个字符
    scanf_s("%c", &ch);//也可以用ch=getchar();的形式
    switch (ch)
    {//利用switch进行开关
    //即利用ch的不同的值来进入不同的路径
    //注意每一个路径都要有一个break;
    case ‘+’:
    printf("%f+%f=%f", a, b, a + b);
    //为什么直接输入a+b的值可以直接将a+b的值
    //打印出来,因为a+b是由返回值的,
    //它的返回值就是相加后的结果
    break;
    case ‘-’:
    printf("%f-%f=%f", a, b, a - b);
    break;
    case '’:
    printf("%f
    %f=%f", a, b, a * b);
    break;
    case ‘/’:
    if(b!=0)
    {//当除数不为0的情况下,才可以相除,否则会发生错误
    printf("%f/%f=%f", a, b, a / b);
    }
    break;
    default:
    printf(“输入错误,请重新输入”);
    break;
    }
    printf(“请判断是否还需要再次计算\n”);
    printf(“如果需要请输入1,如果不需要请输入0\n”);
    scanf_s("%d", &flag);
    } while (flag);//利用flag的值来判断用户是否还需要进行计算
    //当flag=0的时候就退出,当flag的值为非0的时候就继续执行循环
    system(“pause”);将黑色窗口停留,用户按任意键后才会退出
    return 0;//程序正常运行要返回一个0
    }

    展开全文
  • //rand()函数头文件 #include<stdlib.h> //srand()函数头文件 #define PRINTF1 printf("答案对,你真很棒!!!") #define PRINTF2 printf("答案错误,正确答案是 %.2f ,继续努力,...
  • 题目:设计一个简单的四则运算编辑器 思路:我使用的是C语言编程,看到题目首先要随机出3个随机数,其中两个为100以内的随机数(a,b),一个为0~3的随机数(k)。 k值的变化使得+ - * /的变化。然后使用的for...
  • C语言四则运算

    2014-05-28 19:37:12
    简单的C语言四则运算法则源代码,属于课程上的课后的作业题,比较简单的模式
  • C语言 初级-简单的四则运算

    千次阅读 2018-05-15 15:55:09
    /* ... *All rights reserved. *文件名称:main.c *作 者:杨梦豪 *完成日期:2018年5月15日 ... *问题描述::简单的四则运算 */ #include &lt;stdio.h&gt; int main() { float a,b; char c; ...
  • C语言 实现四则运算简单计算器

    千次阅读 2017-03-12 21:53:54
    C语言编写了一个简单的四则运算计算器,输入以#号结束 #include #include #define MAXSIZE 100 #define OKAY 1 #define ERROR 0 char ops[7]={'+','-','*','/','(',')','#'}; int cmp[7][7]={ {2,2,1,1,1,2,2},...
  • As we all know, c语言数据结构中的四则运算一直是一个常点,比较重要,是初学者一个必敲的代码,下面我罗列了四种数据结构四则运算,先从书(严老师)上到扩展; 严老师的数据结构上的四则运算思路是: 初始化...
  • 可以进行简单的四则运算 在 VC++6 环境下编译 已经完美实现上述功能 注: 包含 Debug 的语句 如:if (Debug) printf(""); 都并封装成 Ope 可以忽略, 这些显示是编写工程中需要观察的信息,如果要打开,请在主菜单下...
  • C语言简单计算器(四则运算

    千次阅读 2021-01-09 20:35:38
    C语言简单计算器(四则运算) switch函数 switch函数是分支选择函数,通过某一选定字符来进行分支引导,选择该函数分支下某一case分支运行该分支下程序;当完成分支下程序后便跳出switch下函数全部程序,...
  • 自己写,供大家看一下,高手请多批评,同辈中多交流
  • 我想用C语言编一个能进行简单的四则运算的程序,应该怎么写,请详细解释一下输入和计算部分
  • C语言四则运算计算器

    2020-12-23 19:54:38
    通过c语言实现一个简单的四则运算计算器。 代码如下 #include<stdio.h> int main() { float a,b; printf("********************\n"); printf("*******计算器*******\n"); printf("*****1.加 2.减*****\...
  • 资源共享,有什么错误和好建议请指出 如果没资源分,我可以直接发给你)
  • C语言-大整数四则运算

    万次阅读 2016-04-17 21:06:21
    int存储空间有限,利用”串”结构,分享一则“大整数”简单四则运算
  • 进行简单的2个数有理数加减乘运算,求单个数的分子分母
  • 由于自己写过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅。在这个程序源码中我改了一个错误地方,源码中有这样一个随机数发生器初始化函数语句:“srand((unsigned)time(NULL))...
  • 简单的计算器的实现java的swingjavaC语言JavaScript java的swing package Test0602; /** * @Auther: Xinbai * @Date:2020/6/2 19:08 */ import java.awt.*; import java.awt.event.ActionEvent; import java.awt...
  • //实现复数的四则运算 double plural_addition(double,double); //复数加法 double plural_subtraction(double,double);//复数减法 double * plural_multiplication(double,double,double,double);//复数乘法 double...
  • /*** * @author banxi1988 * @mail banxi1988 at gmail.com * @qq 787928000 * 一个简单的四则运算器。C语言实现。暂时无法实现处理括号。 * @bug-report : if have any suggestion and find any bug please send ...
  • #include ...计算类似1+2-3*3/3表达式,如果输入格式不正确,因为没有加入判断表达式是否正确,会出错。 转载于:https://www.cnblogs.com/huzhongzhong/archive/2011/10/11/2207532.html
  • C语言实现个位数四则运算计算器

    千次阅读 2018-10-30 00:00:10
    学习C语言不久,设计了一个简单的计算器,要求输入...请输入四则运算式子 (要求:不能有括号,均为个位数。计算器带纠错功能)\n&amp;quot;); char x[1000]={'\0'};//限定式子长度在1000内 gets(x); d

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 264
精华内容 105
关键字:

c语言简单的四则运算

c语言 订阅