c=getchar()
时间: 2024-06-09 10:06:46 浏览: 91
getchar()函数是一个用于从标准输入中读取一个字符的函数。当程序调用getchar()函数时,如果缓存区中没有数据,函数将会阻塞等待用户的输入。需要注意的是,每次调用getchar()函数都会读取缓存区中的一个字符,无论是否保存。
在你提供的例子中,代码使用getchar()函数来接收用户的输入字符并存储在数组中,直到输入的字符为回车键('\n')为止。然后,程序使用for循环将存储的字符输出到标准输出。这个例子展示了如何使用getchar()函数来获取用户的输入。
相关问题
实现这个伪代码OperandType EvaluateExperssion(){ 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; case '=': Pop(OPTR, x); c=getchar(); break; case '>': Pop(OPTR, theta); Pop(OPND, b); Pop(OPND, a); Push(OPND, Operate(a, theta, b)); break; } } } return GetTop(OPND); }
这段伪代码实现了一个算术表达式的计算器。其中OPTR和OPND分别表示操作符栈和操作数栈,Push和Pop是栈的常用操作。
在主循环中,程序每次读入一个字符c,如果它是操作数,则将它压入操作数栈OPND中;如果它是操作符,则将它与操作符栈顶的操作符进行比较,根据算符优先级进行相应的操作。具体来说,如果当前操作符优先级低于栈顶操作符,则将它压入操作符栈;如果优先级相等,则弹出栈顶操作符;如果优先级高于栈顶操作符,则弹出栈顶操作符和操作数栈中的两个操作数,进行相应的运算,并将结果压入操作数栈OPND中。
当读入的字符为'#'且操作符栈顶也为'#'时,说明表达式已经读取完毕并计算完成,此时返回操作数栈OPND的栈顶元素,即为表达式的计算结果。
OperandType EvaluteExpression() { CreatStack(OPTR); //创建栈OPTR Push('#',OPTR); CreatStack(OPND); //创建栈OPND c=getchar(); while(c!='#'‖StackTop(OPTR)!='#') //匹配完成 { if (!In(c,OP)) {Push(c,OPND);c=getchar();} else switch(Precede(StackTop(OPTR),c)) { case'<':Push(c、OPTR);c=getchar(); break; case‘=’ :Pop(x,OPTR); c=getchar(); break; case'>':Pop(theta,OPTR); Pop(b,OPND); Pop(a,OPND); Push(operate(a,theta,b),OPND); break; } } return StackTop(OPND); }
这是一段伪代码,看起来是一个算术表达式的计算器。具体的实现需要结合 OPTR 和 OPND 栈的定义以及函数 In、Precede、operate 的实现。大致的思路是,从输入中读取字符,如果是操作数就压入 OPND 栈,如果是运算符就与栈顶元素比较优先级,根据优先级进行相应的操作,直到遇到 # 符号和 OPTR 栈顶元素都为 # 符号时停止计算,并返回 OPND 栈顶元素。
阅读全文