当前位置:首页 » 编程语言 » C语言opd

C语言opd

发布时间: 2023-05-11 00:58:10

1. 汇编语言里PTR什么意思 C++里面又是什么意思

ptr -- pointer (指针)缩写。

汇编里面ptr是规定的字 (保留字),mov ax,bx ;是把BX寄存器“里”的值赋予AX。

c语言里ptr是程序员自己写的变量伏纯名字,不是保留字,当然,它也可以是指针。

当用dw和dt、db等时,就需要他来显示声明了。

(1)C语言opd扩展阅读:

指针(Pointer)是编程语言中的一个对象,利用地侍猜址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。

在高级语言中,指针有效地取代了在低级缺谈咐语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。

指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

另外,指针也指钟表中用来指示对应时间的部件。

2. 数据结构 后缀法表达式求值C语言编写

#include<iostream>

usingnamespacestd;
#include<stdio.h>
#include<stdlib.h>
#defineadd43
#definesubs45
#definemult42
#definediv47
#defineMAXSIZE100
typedefstruct
{
intstkdata[MAXSIZE];
inttop;
}STKzone;
typedefSTKzone*STK;
typedefenum{True=1,False=0}boo;
typedefenum{ok,error}颂哗status;
STKzoneexpSTKzone;
STKexpSTK;
STKinitSTK(STKzone*stack_zone)
{
stack_zone->top=-1;
returnstack_zone;
}
statuspush(int*term,STKpstk)
{
if(pstk->top==MAXSIZE-1)
returnerror;
pstk->stkdata[++pstk->top]=*term;
returnok;
}/*push*/
boolemptySTK(STKpstk)
{
return(pstk->top==-1);
}
statuspop(int*pdata,STKpstk)
{
if(emptySTK(pstk))
returnerror;
else
{
*pdata=pstk->stkdata[pstk->top];
(pstk->top)--;
returnok;
}
}
voidsynerror()
{
printf(" 表达式语法错误! ");
exit(0);
}
inteval(inta1,inta2,chartag)
{
switch(tag)
{
caseadd:
return(a1+a2);
casesubs:
return(a1-a2);
casemult:
return(a1*a2);
casediv:
return(a1/a2);
}
}
intmain()
{
charc;
intopd1,opd2,temp,c1;
expSTK=initSTK(&expSTKzone);
opd1=1;
opd2=2;
push(&opd1,expSTK);
push(&opd2,expSTK);
printf(" 后缀表达式:");
while((c=getchar())!='/n')
{
if(c=='')continue;
if((c>47)&&(c<58))
{
c1=c-48;
if(push(&c1,expSTK)==error)
野模行{
printf("表达式太长 ");
exit(0);
码蔽}
}
elseif((c==add)||(c==subs)||(c==mult)||(c==div))
{
if(pop(&opd1,expSTK)==error)
synerror();
if(pop(&opd2,expSTK)==error)
synerror();
temp=eval(opd1,opd2,c);
push(&temp,expSTK);
}
else{
//你输入的c是多少,根本就不对
printf("c=[%c],c=%0X ",c,c);
synerror();
}
}/*while*/
if(pop(&temp,expSTK)==error)synerror();
if(!(emptySTK(expSTK)))synerror();
printf("=%-3d ",temp);
return0;
}/*main_end*/
//执行程序看看,你输入的c值是多少,重新设计一下吧

3. 求达人用C语言编写一个带括号的四则运算

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

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(); printf("%c ", c); ++opt; cal(c);
} else if(*next == '*' || *next == '/') {
lv2();
} else {
break;
}
}
}

void lv2()
{
while(1) {
char c = *next;
if(c == '*' || c == '/') {
++next;
term(); printf("%c ", 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("\n%g\n", eval("123+213-67*34+345/23*45*(34+34-345+245+567)"));
return 0;
}

4. C语言小程序找人注释

不知道这大哥在哪弄的这程序,真是高手,没怎么细看,就是不知道为什么这么个程序居旁瞎然弄到***这么复杂呵呵,
建议:类似的程序不用太深究。程序员的最高境界不是能编出谁看都费劲的程序,而是编出可读性很强,运行不累赘的程序,这种程序...........本人不怎么恭维。
象这种:
void main()
{
int i,n,j,k=2;
printf("输入菱形行数,注意为奇数:\n");
scanf("%d",&n);
for(i=1;i+1;i+=k)
{
for(j=0;j <(n-i)/2;j++)
printf(" ");
for(j=0;j <i;j++)printf("*");
printf("\n");
if (i==n)
k=-2;
}
}大部分人看到for(i=1;i+1;i+=k)都会晕一下吧,死循环?不是,当输入奇数的时候他不是死循环,输入偶数就是死循环,这样的程序有意义闭橘么?感觉......怪怪的轿启团,是不是90后编的啊呵呵

5. C语言:任意算术表达式的求值

一看你就是个菜鸟!哥来回答要实现输入任意表达式求值 楼上银竖陵的的确不错 但是那是数据结构的 对于你们菜鸟来说 学习那还是早了点我来编锋戚写一道简单的题目吧:#include<stdio.h>void main(){double a,b,result;//定义两个操作纤坦数char opr;//定义算法printf("please input first number:");//输入第一个数scanf("%lf",&a);printf("操作方法:");//输入符号scanf("%c",&opr);printf("please input second number:");//输入第二个数scanf("%lf",&b);if (opr=='+')result=a+b;else if(opr=='-')result=a-b;else if(opr=='/')result=a/b;else if(opr=='*')result=a*b;printf("运算结果是:%lf",result);}好了 OK 给我加分吧!

6. c语言程序中怎样实现"任意两个32位数相加"

正如楼上 heephi 所说, 用数组来存放 32 位数,
就是数组每个元素存入这个 32 位数的每一位

如 有数
那么数组其实就肆棚磨是 {1, 1, ..., 1, 2, 2, ..., 2, 3, 3, ..., 3, 0, 0}

在此基础上, 对每位进行相加, 遵循 满十进一的规则

看样例:
#include <stdio.h>

int main()
{
int a[32], b[32], c[32] = {0};
int i;

char buf[33]; /* 用于存入输入的数字(其实就是字符串) */

printf("请输入数 A: "); scanf("%s", buf);
for (i = 0; i < 32; i++)
{
if (buf[i] < '0' || buf[i] > '9')
{
printf("对不起, 你的输入有错, 可能出现非数字字符或数字长度不为 32");
return 0; /* exit(0) */
}
a[i] = buf[i] - 0x30;
/* 因为 '0' 的 ASCII 码是48, 0x30 表示十六进制也就是十进制的 48,
所以 '0' - 0x30 就是 0, '9' - 0x30 就是 9, 也就实现了数字字符转为数字 */
}
printf("请输入数 B: "); scanf("%s", buf);
for (i = 0; i < 32; i++)
{
if (buf[i] < '0'裂斗 || buf[i] > '9')
{
printf("对不起, 你的输入有错, 可能出现非数字字符或数字长度不为 32");
return 0; /* exit(0); */
}
b[i] = buf[i] - 0x30;
/* 因为 '0' 的 ASCII 码是48, 0x30 表示十六进制也就是十进制的 48,
所以 '0' - 0x30 就是 0, '9' - 0x30 就是 9, 也就实现了数字字符转为数字和蚂 */
}

/* 好了, 现在就是实现相加了 */
for (i = 31; i >= 0; i--)
{
c[i] += a[i] + b[i];
if (c[i] > 10)
{
c[i] -= 10;
if (i != 0) c[i - 1] += 1;
}
}

/* 相加完成, 现在输出结果 a + b = c */
printf("\n\n\t");
for (i = 0; i < 32; i++)
{
printf("%d", a[i]);
}
printf("\n +\t");
for (i = 0; i < 32; i++)
{
printf("%d", b[i]);
}
printf("\n-----------------------------------------\n\t");
for (i = 0; i < 32; i++)
{
printf("%d", c[i]);
}
printf("\n");

return 0;
}

这个程序有些缺陷:
1. 必须两个数均为 32 位, 所以不能计算一个 32 位数与位数小于 32 的数相加
2. 当两数相加大于 32 位数时, 只能显示最后 32 位数, 也就是溢出
3. 不能实现负数相加

程序运行结果:
------------------------------------------------
请输入数 A:
请输入数 B:


+
-----------------------------------------

热点内容
数据库的根本目标 发布:2025-07-18 21:37:50 浏览:937
压缩机的流速 发布:2025-07-18 21:37:40 浏览:406
三星怎么取消手机密码 发布:2025-07-18 21:33:50 浏览:629
安卓手机耳机如何弹窗显示电量 发布:2025-07-18 21:20:53 浏览:59
云服务器搭建需要什么工具 发布:2025-07-18 20:51:08 浏览:322
如何提高手机缓存速度 发布:2025-07-18 20:24:48 浏览:237
vba读取数据库数据 发布:2025-07-18 20:24:48 浏览:608
shell解压zip 发布:2025-07-18 20:20:36 浏览:861
安卓泰拉瑞亚去哪里买 发布:2025-07-18 20:01:05 浏览:694
flash编译器 发布:2025-07-18 19:49:38 浏览:487