怎么用C语言编写堆栈并能进行四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用C语言编写堆栈并能进行四则运算相关的知识,希望对你有一定的参考价值。

3个文件,按您的要求
头文件H
#IFNDEF _XXXX_H
#定义_XXXX_H
#定义错误-1
#定义MAX 100 / *定义堆栈的大小* /
静态int堆栈[MAX]; / *定义一个一维数组堆栈* /
静态int top = 0的; / *自定义堆栈指令* /

诠释推(int i)的;
的pop();

#ENDIF / * _XXXX_H * /

功能文件CPP
#包括“xxxx.h”的

诠释推(I)/ *内存操作数栈操作* /

??(顶部<MAX)
???
????栈[+ +顶部] = I / *栈,仍然有空间的堆栈顶部的表示移动一个位置* /
????返回0;
??
??其他
???
????printf的(“堆栈满了”);
????返回错误;
??

POP()/ *删除的操作数,并弹出操作* /

??VAR; / *定义要返回的顶级元素* /
??如果(top! = NULL)/ *仍然堆放元素* /
???
????VAR =栈[ - ] / *堆栈指针向下移动一个位置* /
????返回VAR / *返回的顶部堆栈元素* /
??
??其他
????printf的(“堆栈是空的!\ n”);
??返回错误;


主文件CPP
#包括<stdio.h>
#包括<conio.h>
#包括<stdlib.h>
#包括“xxxx.h”的
无效的主要()

??INT M,N;
??字符L;
??整数A,B,C;
??整数K;
??
????输出(“\ n \ n \ t单击以下提示输入你需要的信息\ n”);
????输出(“\ n \问你输入第二个捣弄数字”);
????scanf的(“%d”,&M);
????推(M)/ *第一个操作数堆栈* /
????输出(“\ n \问你输入第二个捣弄数字”);
????scanf的(“%d”,&N);
????推(N); / *第二个操作数堆栈* /
????输出(“\ n \你不想算术运算(+ / - / * / /):”);
????L = getche(); / *输入操作符* /
????开关(L)/ *确定的运营商,依次执行代码* /
????
??????'+':
????????= pop()方法;
????????= pop()方法;
????????C = A + B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,' - ':
????????= pop()方法;
????????= pop()方法;
????????C = A-B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,'*':
????????= pop()方法;
????????= pop()方法;
????????C = A * B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
??????情况下,'/':
????????= pop()方法;
????????= pop()方法;
????????C = A / B;
????????输出(“\ n \ n \ t计算公式为:%d条\ n”,c);
????????输出(“\ n”);
????????;
????
????输出(“\ t要继续输入计算吗?(Y / N):”); / *提示用户是否在程序结束* /
????L = getche();
????(L =='N')
??????退出(0);
??(1);
参考技术A 用一个栈就可以,需要先把运算式改一下,改成那种运算数在前面,运算符在后面
比如
a+b -> ab+
(a+b) * (c+d) + c -> (ab+)(cd+)c*+
然后由右向左进栈。。。
出栈应该是ab+先出栈就对了
参考技术B 两个栈,分别存放符号(+-*/())和运算数
然后按照运算符优先级弹出运算数和符号再将运算结果压入运算数的栈,最后运算符栈空了,运算数栈只剩下一个数,那就是最后的结果。
参考技术C 数据结构的书上有完整实现。在这里说不清。

c语言编程,怎么计算时间

怎么编写 求时间段的 就是 比如 9:28到11:20怎么计算求这个时间段还有 就是 用结构式 输入 这个9:28 用char 好吗 还是int 怎么搞

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void main()

unsigned char time1[] =  10, 8, 31, 9, 26 ;

unsigned char time2[] = 10, 8, 31, 9, 50 ;

struct tm t1 = 0;

struct tm t2 = 0;

time_t _t1;

time_t _t2;

double diff;

t1.tm_year = time1[0] + 100;

t1.tm_mon = time1[1];

t1.tm_mday = time1[2];

t1.tm_hour = time1[3];

t1.tm_min = time1[4];

t2.tm_year = time2[0] + 100;

t2.tm_mon = time2[1];

t2.tm_mday = time2[2];

t2.tm_hour = time2[3];

t2.tm_min = time2[4];

_t1 = _mkgmtime( &t1 );

_t2 = _mkgmtime( &t2 );

diff = difftime(_t2, _t1 );

printf( "相差 %.0f 分钟\\n", diff / 60 );

扩展资料:

C语言中有两个相关的函数用来计算时间差,分别是:

time_t time( time_t *t)   与 clock_t clock(void)

头文件: time.h

计算的时间单位分别为: s   , ms 

time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构

返回值:

1、time  : 返回从公元1970年1月1号的UTC时间从0时0分0秒算起到现在所经过的秒数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。

2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。     1单元 = 1 ms。

所以我们可以根据具体情况需求,判断采用哪一个函数。

具体用法如下例子:

#include <time.h>

#include <stdio.h>

#include <stdlib.h>

int main()

time_t c_start, t_start, c_end, t_end;

c_start = clock();    //!< 单位为ms

t_start = time(NULL);  //!< 单位为s

system("pause");

c_end   = clock();

t_end = time(NULL);

//!<difftime(time_t, time_t)返回两个time_t变量间的时间间隔,即时间差

printf("The pause used %f ms by clock()\\n",difftime(c_end,c_start)); 

printf("The pause used %f s by time()\\n",difftime(t_end,t_start));

system("pause");

return 0;

因此,要计算某一函数块的占用时间时,只需要在执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。

参考技术A 将时间转换为分钟数,例如9:28=9个小时*60分+28分,然后想减得到以分钟为单位的时间差,再转换为小时打印,例如100分=1:40。#include <stdio.h>
int main(int argc, char* argv[])

int time1 = 9*60+28;
int time2 = 11*60+20;
int interval = time2-time1;
int hour = interval/60;
int minute = interval%60;
printf("The interval is %d:%d.\n",hour,minute); return 0;
参考技术B 回答

首先定义两个变量a和b。

加法写成a+b。

减法写成a-b。

乘法写成a*b。

除法写成a/b。

取余写成a%b。

最后点击编译运行即可看到相应的结果。

参考技术C 时间段是什么意思?
是计算多少分钟吗? 可以直接用时间函数吧,
C语言的time.h头文件提供了这样的结构体和一些时间函数的方法. 你可以查询试试.
参考技术D #include <stdio.h>
#include <time.h>

int main()
    tm time1,time2;
    time1.tm_hour=9;
    time1.tm_min=28;
    time1.tm_sec=0;
    time1.tm_year=2017-1900;
    time1.tm_mon=8;
    time1.tm_mday=11;
    
    time2.tm_hour=11;
    time2.tm_min=20;
    time2.tm_sec=0;
    time2.tm_year=2017-1900;
    time2.tm_mon=8;
    time2.tm_mday=11;
    
    time_t t1=mktime(&time1);
    time_t t2=mktime(&time2);
    
    double eclipse=difftime(t2,t1);
    printf("一共过去了:%lf分钟\\n",eclipse/60);

以上是关于怎么用C语言编写堆栈并能进行四则运算的主要内容,如果未能解决你的问题,请参考以下文章

C语言问题,利用堆栈实现四则运算,谢谢高手帮我编写出来

用堆栈来实现四则运算.(C语言)

用简单的c语言编写四则运算题

c语言怎么用switch语句编写四则运算?

利用c语言设计开发一个简单计算器,可进行加减乘除运算。

怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器?