求教C++习题答案以及解题过程和思路若有说明:int n=2,*p=&n,*q=p;则以下非法的赋值语句是:A p=q; B *p=*q; C n=*q; D p=n;这题我怎么感觉题上的*p=&n就有问题呢?可以这样赋值吗?另外就是答案我也没太明白该选什么!哪个是非法的啊?
gegorlov23
*p=&n 您可以理解成 int *p;p=&n;这只不过是两部合一步了第四个是错误的大概解释是n=2 ,n的地址给p,p的值给q 就是说 p,q都存放n的地址所以a 是 p=q 就是n的地址=n的地址b是 n=n c是n=n的地址所在单元的值(就是n呗)d 把一个数付给一个指针 那么p就只想内存地址2(因为n=2)所以这个是非法的
为您推荐:
其他类似问题
扫描下载二维码“OXC0000102”的错误状态而无法将请求的数据放入内存怎么解决_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
“OXC0000102”的错误状态而无法将请求的数据放入内存怎么解决
上传于||文档简介
&&“​O​X​C000”​的​错​误​状​态​而​无​法​将​请​求​的​数​据​放​入​内​存​怎​么​解​决
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
你可能喜欢C语言问题,课程设计,文件的读写有问题,将数据写进文件后,读出来的是乱码,求解决_百度知道
C语言问题,课程设计,文件的读写有问题,将数据写进文件后,读出来的是乱码,求解决
);2\n&);
scanf(&}tushu *creat(){
tushu *p1!=NULL){ fwrite(&p;
getchar(); break,&p1-&&&c!=' creat();出版社/,1;next=NULL,一个是输入编号显示图书其他信息#include <,*p2;n&n&wb&}
p=p-& if((fp=fopen(&
n=0;,fp);;););3'%d&
p2-& p0=p1=p2=NULL;&&c,&p1-&cls",&m);
scanf(".h&%d&
} getchar();
\.h&!=' printf(&typedef struct node{
writer););number):& p0=p1;void findnumber();\,&p1-& while(;出版社/3'5',*p;name);
return(p0);
char writer[20];#include &
scanf(&n&););#include <!&
struct node *
getchar(); printf(&n&请输入编号;
scanf(&;%s"这个程序有两个功能;
case 'next=p1;);n&press); printf(":
findpress().out& } p1=(struct node*)malloc(sizeof(struct node));
p1-&found nothing,sizeof(struct node);
char press[20]:
1;),",&p1-&
p1=(struct node*)malloc(sizeof(struct node));int num=0;m-1)
input();4' tushu *p1;);请输入/,&n&
scanf(&number==num)
{printf(&%s",1;
p0=NULL,sizeof(struct node)!= NULL) { if(p->,n;
}while(c;请输入要添加的个数;
printf(",i;3\!=' scanf(&价格\!
&next=(struct node*)malloc(sizeof(struct node));}
else {printf(": 输入出版社查找一个图书
\,&p1-& } p=p0;图书编号/n&;
exit(0); while(p;%d&
if(p1-& } fclose(fp);%s&
case '请输入/%d&1'#include <:\void main(){
p1=p1-& } p=p0;););2'%s&);4'price););number); do
{ system(&****************************************\n& tushu *p;;作者/,一个是添加图书信息.h&书名/,&p1-&writer);
if(n==1) p0=p1;
printf(&;);tushu *p0=NULL;\}while(1););请选择输入选项[1\,&p1-&
system(& while(p;****************************************\
case 'oo!".h&next==NULL)))==NULL) { printf(",&num).out",m;press); }void input(){ FILE *),&p1-&图书编号/
2;2'void input();&&c;5'cls&
printf(":&;4\yes: 添加一个图书信息
p1=p2=(struct node*)malloc(sizeof(struct node))!"!feof(fp)) { if((fread(p1;
printf(& p=p-&5];
printf(&!=' scanf(&))==NULL) { printf(&}void findnumber(){ FILE *
case ': 输入编号查找一个图书
free(p1););
{ c=getchar();
else p2-&&&c;n&): 输入作者姓名查找一个图书
scanf(&******&;%s"!=1)
printf(& 添加信息成功:
findwriter();%s&name);
scanf(": 退出
printf(&#include &
char name[20]:
findnumber(),&p1-&); } getchar();;
scanf(&.h&作者/
case ';price); if((fp=fopen(&书名/1'!='%d& 按任意键返回主菜单;%d&n&\:&价格\&\,&p1-&,*p2;;);
提问者采纳
再试试;前面的&的去掉fwrite(&p,1,这里的p本身就是指针啊,sizeof(struct node),fp),如果有问题再问
其他类似问题
为您推荐:
您可能关注的推广
课程设计的相关知识
其他1条回答
读取先说下错误,文件是用a 方式打开,因为文件指针在最末的首先,第一个for函数就有问题,这读取数据,你应该在一对花括号。按我的理解
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言版数据结构 表达式求值 无语法错误有逻辑错误 无法计算输出正确答案 求大神解答_百度知道
C语言版数据结构 表达式求值 无语法错误有逻辑错误 无法计算输出正确答案 求大神解答
#include&;&/(''#'&,'}void main(){;'',
/'&||GettopStack(OPTR);,c)){case ',
/,)'
int ReturnPrOd(char op,',','
if(S;判断输入的是运算符还是运算数;*/,如果是运算符返回TRUE.top--;7,'。如3+4-4/''& i++)
if(Test == TestOp[i])
Find= TRUE;''/,c);
}} int GettopStack(Sqstack S)/';typedef int S算数表达式求值的算符优先算法.top=-1;)'case',';n&请输入算术表达式;;:/
a=EvaluateExpression();;*','c=getchar(),x,'&'InitStack(OPND),a);'&;OVERFLOW&'*','&for(i=0.top==-1) printf( ",',
/*--------------------------------表达式求值基本函数-----------------------------*/printf(&&);''*/;&/ ',''}'(',',char *TestOp)
/.elem[S;/&&''/,';*'<,',','=maxsize-1) printf(&&/*/void InitStack(Sqstack &S)/=';>!='}} int PopStack(Sqstack &S)/;;,' ';#'&;出栈{
){if(In(c,OP)][ReturnPrOd(B('7;/;;;');&;case '返回运算符优先级{return Prior[ReturnPrOd(A/,OPND; ',char e)/,',';);''>,'.h&}}char Precede(char A','.elem[S;n&*',',','-';/&i++){if(op==TestOP[i])=';;';'进栈{
if(S;','*':c=a-b;*'*/,'>。Sqstack OPTR:c=a/,'while(c;
return e,';&#include<.elem[++S;}int operate('',c); ';n&''*'',','PushStack(OPND;/栈顶元素优先权低PushStack(OPTR;,',char *TestOP)/。 '}}}return GettopStack(OPND);;}else{switch(Precede(GettopStack(OPTR),',',',OP)==0)//}:c=a+b;',
/,'/\
return F/,'&;%d&;<,',
},a)));&运算符集合Status In(char Tcase'' ''char Prior[7][7] =
{ /*'#'&,',b!=' 运算符优先级表
/}/,',','
S; '}S&;/c=getchar(),'&';'&+'''case':c=a*b;;>,','PushStack(OPTR;/:以#结束,'构造空栈{
S;;*/&;}int EvaluateExpression(){/&'/;
printf(&-';InitStack(OPTR););+'-';退栈并将运算结果入栈theta=PopStack(OPTR);;*//&&&;;
e=S;''a=PopStack(OPND);*'#''*/&c=getchar();&;/;&'&;int a,
else return (S;switch(theta){case';'',')',否则返回FALSE{
int Find=FALSE;=','#define maxsize 100#define STACKINCREMENT 10#define OVERFLOW -2#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0typedef int SE运算符优先级数组的下标返回{}void PushStack(Sqstack &S;#'设OPTR和OPND分别为运算符栈和运算数栈,
char OP[7] = {'.top];':/
for (int i=0;' '*',',
/OVERFLOW\c=getchar();b;;&;;/& i<,char Bop)/;',&'&);'+'break.top]);不是运算符则进栈{PushStack(OPND,(operate(b.top]=e;&case '&'b=PopStack(OPND); '/&printf(".top&& '-'
/;脱括号并接收下一字符x=PopStack(OPTR);typedef struct{
char elem[maxsize];,'/';*'2#\,OP)];'.top==-1) return OVERFLOW;取栈顶元素{
else {S;&/''i&#''.h&',int b){';+'
int top:/
提问者采纳
/*/,'#include&/'返回运算符优先级{ return Prior[ReturnPrOd(A;;);)':c=a-b;请输入算术表达式;;&>,'&&';******************已改 }} char GettopStack(Sqstack S)/,b;char Prior[7][7] =
return '/ case '。Sqstack OPTR,';;'>,'&} 注释的地方为修改的地方;*',',operate(a;&/!='/)';退栈并将运算结果入栈
theta=PopStack(OPTR),'+c);;',
/*'-'2#\/);;'
char OP[7] = {'/;#'*'+'出栈1;0'& case''<,',',
/ 运算符优先级表
/'||GettopStack(OPTR);}char Precede(char A&;'#','=','/'/&
return Find,'0'.top]=e:c=a*b; /***********
已改 else return (S;/'<,'.h&)'设OPTR和OPND分别为运算符栈和运算数栈, } } } return (int)GettopStack(OPND)-48。如3+4-4///}} char PopStack(Sqstack &S)/}char operate(&n&/+','*/break.top--;,'&&'',''
c=getchar();;;&char***已改{
*//;/&/,',char *TestOp)
/;; } else
e=S,x;'; '.top==-1) return ''&
else {S;c=getchar();;',';#',
/;*/'.int->,
/;; printf(&;/-' ';*';',',否则返回FALSE{
int Find=FALSE;*'.elem[S;; } return -1;;初始化栈PushStack(OPTR;//+','
/' } return (char)('/,'
c=getchar(); '*';'&=''\
for (int i=0; switch(theta) { case'>.top&&'&',OP)];
int ReturnPrOd(;,'*********已改
a=PopStack(OPND)-48,'& 'while(c;,OPND;
b=PopStack(OPND)-48;-' i++)
if(Test == TestOp[i])
Find= TRUE;':/InitStack(OPTR);/;typedef int S;'('/('}void PushStack(Sqstack &S.elem[++S;;
if(S;'#include&'*/&){ if(In(c;;'':c=a+b;}S'/运算符集合Status In(char T栈顶元素优先权低
PushStack(OPTR;*'>:以#结束;',','/,另外;'/;/;&char (整形变为char型);',a),';OVERFLOW\,
/'&<,c);n&/1',',''算数表达式求值的算符优先算法,'n&'构造空栈{
S;'。*/' i&
printf(&} else { switch(Precede(GettopStack(OPTR);***********已改{ int c!='#'='/);/7;typedef struct{
char elem[maxsize];,+' case'.top];判断输入的是运算符还是运算数;*******已改}void main(){ int a=3;>,','/; '/;<,';&/& ',这个程序运算数只能为个位数;;;/&运算符优先级数组的下标返回{-' case '&c=getchar();************已改}int EvaluateExpression(){/*'.top]):c=a/',十位百位就复杂了;)=','&*'&' '&>:// for(i=0;'/!''.top=-1,如果是运算符返回TRUE,int b)/;,OP)][ReturnPrOd(B '运算符栈底放#InitStack(OPND),'&/:/'b,',char Bop)/);'/初始化栈printf(&;#'7;',';,',
int top,'','
(char)(a+'0'<,'#' '=maxsize-1) printf(",c);*********已改
PushStack(OPND,'i&; case'&;*/':int a=1;&,'*','不是运算符则进栈 {PushStack(OPND;\进栈{
if(S;& ',';*';&',',''脱括号并接收下一字符
x=PopStack(OPTR);void InitStack(Sqstack &S)/
a=EvaluateExpression();%d".******************int-&('.elem[S;/,'取栈顶元素******************已改{
if(S,'&;}/',char *TestOP)/,b));;
};OVERFLOW",c)) { case '','/'.top==-1) {
printf( &i++) {
if(op==TestOP[i])
return i,OP)==0)/');*--------------------------------表达式求值基本函数-----------------------------*/.h&'','#define maxsize 100#define STACKINCREMENT 10#define OVERFLOW -2#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0typedef int SE,'&stdlib
那如果要涉及多位数的基本思想是什么呢?
定义两个栈,一个是char型,用来放字符,另一个是int型,用来放数值。输入算数表达式时,全部是字符,这时,需要判断一下,如果是运算符,则进字符栈;如果是数字,则需要将连续的数字字符转化成对应的整数,然后再进栈。char c[3]=&345&;//对应整数345int a[3],a[0]=( (int )('3')-48 ) * 100;a[1]=( (int )('4')-48 ) * 10;a[2]=(int )('5')-48 ;sum=a[0]+a[1]+a[2];然后把sum存进数据栈中即可
提问者评价
谢谢你帮我大忙了
其他类似问题
为您推荐:
其他2条回答
我也看了半天了
发现输入数字输出的是它的ASCⅡ码
应该是哪儿的数据类型转换有问题输入1#输出49
那要在哪里修改呢
哈哈,c#学过,C没有搞过。帮不了你了。
逻辑错误的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁