6.16

15.这个1+1写了 半天 也没调试出来 5555

#include "stdio.h"

int numstack[100];
char symbolstack[100];
int ntop=0,stop=0;

int exe(int a,char c,int b)      /*最小单位的计算*/   
{
 switch(c)
 {
  case '+':return (a+b);
  case '-':return (a-b);
  case '*':return (a*b);
  case '/':return (a/b);


}
}


char compare(char a,char b)                                           /*前后2个符号判断,是出栈还是入栈*/
{switch (a)   {
case '*':
case '/':    if(b=='(')        return('<');
else  return('>');
case '-':
case '+':    if(b=='+'||b=='-'|| b==')'|| b=='#')  return('>');
else   return('<');
case '(':    if(b==')')      return('=');
else     return('<');
case ')':    return('>');
case '#':    if(b=='#')     return('=');
  else     return('<');
    }  /*switch*/
}

main()
{


char c,result;
 symbolstack[stop++]='#';

 printf("input your expression!/n");
 c=getchar();
 while(c!='#')
 {

    if(c>='0')
        {int temp=0;printf("/n1111%c/n",c);
        while(c>='0')                                           /*数字入栈*/
            {printf("/n33333%c/n",c);temp=temp*10+(c-'0');
            c=getchar();
            }
            numstack[ntop++]=temp;

        }
    else                                                         /*符号入栈*/

    {printf("/n2222%c/n",c);
     result=compare(symbolstack[stop],c);                        /*前后两个符号做比较从而判断具体操作*/
     switch(result)
        {
        int a,b,r;
        char c;
        case '>':
            {
            a=numstack[ntop--];
            b=numstack[ntop--];
            c=symbolstack[stop--];
            r=exe(a,c,b);
            numstack[ntop++] =r;
              c=getchar();
             break;}
        case '<':
            {
             symbolstack[stop++]=c;
              c=getchar();
             break;

            }
        case '=':
            {
            a=numstack[ntop--];
            b=numstack[ntop--];

            r=exe(a,c,b);
            numstack[ntop++] =r;
              c=getchar();
             break;}

        }

 


     }


 }

 printf("/nthe final result is %d/n",numstack[ntop]);
 getch();

}

 

16.
main()主函数的返回值是什么
我看有的书这样写:
 int main()
 {
}

而有的书这样写:
void main()
{
}

到底哪个正确? 还是两个都正确?
int main(void);这个符合标准。
return 0;表示程序正常退出。其他值表示有错误退出。
这个返回值是给操作系统看的。

 

 

18.malloc 获得的内存空间,
即使是作用域范围超出了,
也不会被回收。
(局部指针会被销毁,但是指针指向的 malloc 空间不会, 造成内存泄漏)

虽然在程序结束的时候,
系统会回收所有这个程序用到的内存,
但是如果要等到这个时候,
可能严重的问题已经发生了 ,所以,malloc后free 是必须的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值