字母相减 c语言,【解决下列两道C语言题目1.任意输入一个加减乘除的式子输出其结果2.把任意输入的一串字母全部转换成大写的】作业帮...

这个我前几天才搞过,可以处理+-*/()和整数,不支持小数 #include #include #include char* next; double opd[1000]; int opt; double *popd = opd; #define PUSH(n) { *popd++ = n; } #define POP() (*--popd) #define TOP() (*(popd-1)) #define EMPTY() (popd == opd) #define SIZE() (popd - opd) void fail(char* s) { printf("match '%s' failed near '%c'.\n", s, *--next); exit(0); } #define lbr() { if(*next++ == '(') ; else fail("("); } #define rbr() { if(*next++ == ')') ; else fail(")"); } void term(); void lv1(); void lv2(); void cal(char); void expr() { term(); lv1(); } void term() { double num = 0; if(isdigit(*next)) { do { num = num * 10 + (*next - '0'); } while(isdigit(*++next)); /*printf("%g", num);*/ PUSH(num); } else if(*next == '(') { lbr(); expr(); rbr(); } else { fail("term"); } } void lv1() { while(1) { char c = *next; if(c == '+' || c == '-') { ++next; lv2(); /*putchar(c);*/ ++opt; cal(c); } else if(*next == '*' || *next == '/') { lv2(); } else { break; } } } void lv2() { while(1) { char c = *next; if(c == '*' || c == '/') { ++next; term(); /*putchar(c);*/ ++opt; cal(c); } else if(isdigit(*next)) { term(); } else { break; } } } double eval(char* s) { next = s; expr(); if(*next || opt != 0) { puts("invalid expression."); exit(0); } return TOP(); } void cal(char c) { double lhs, rhs, r; if(SIZE() > 1) { rhs = POP(); lhs = POP(); switch(c) { case '+': r = lhs + rhs; break; case '-': r = lhs - rhs; break; case '*': r = lhs * rhs; break; case '/': r = lhs / rhs; break; } PUSH(r); --opt; } } int main() { printf("%g\n", eval("(20+2)*(6/2)")); getchar(); return 0; } 第二个太简单了 #include #include int main() { char a[] = "Hello, World!"; char* p = a; for(; *p; ++p) if(isalpha(*p) && islower(*p)) *p = toupper(*p); puts(a); getchar(); }

作业帮用户

2016-11-29

举报

6c0a0adef10d1043fa4f41a7897345ed.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值