C+解答 数据有问题,求英语解释句子解答

求教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();出版社&#47,1;next=NULL,一个是输入编号显示图书其他信息#include &lt,*p2;n&n&wb&}
p=p-& if((fp=fopen(&
n=0;,fp);;););3'%d&
p2-& p0=p1=p2=NULL;&&c,&p1-&cls&quot,&m);
scanf(&quot.h&%d&
} getchar();
&#92.h&!=' printf(&typedef struct node{
writer););number):& p0=p1;void findnumber();&#92,&p1-& while(;出版社/3'5&#39,*p;name);
return(p0);
char writer[20];#include &
scanf(&n&););#include &lt!&
struct node *
getchar(); printf(&n&请输入编号;
scanf(&;%s&quot这个程序有两个功能;
case 'next=p1;);n&press); printf(&quot:
findpress().out& } p1=(struct node*)malloc(sizeof(struct node));
p1-&found nothing,sizeof(struct node);
char press[20]:
1;),&quot,&p1-&
p1=(struct node*)malloc(sizeof(struct node));int num=0;m-1)
input();4' tushu *p1;);请输入&#47,&n&
scanf(&number==num)
{printf(&%s&quot,1;
p0=NULL,sizeof(struct node)!= NULL) { if(p-&gt,n;
}while(c;请输入要添加的个数;
printf(&quot,i;3&#92!=' scanf(&价格&#92!
&next=(struct node*)malloc(sizeof(struct node));}
else {printf(&quot: 输入出版社查找一个图书
&#92,&p1-& } p=p0;图书编号/n&;
exit(0); while(p;%d&
if(p1-& } fclose(fp);%s&
case '请输入/%d&1'#include &lt:\void main(){
p1=p1-& } p=p0;););2'%s&);4'price););number); do
{ system(&****************************************\n& tushu *p;;作者&#47,一个是添加图书信息.h&书名&#47,&p1-&writer);
if(n==1) p0=p1;
printf(&;);tushu *p0=NULL;\}while(1););请选择输入选项[1&#92,&p1-&
system(& while(p;****************************************\
case 'oo!&quot.h&next==NULL)))==NULL) { printf(&quot,&num).out&quot,m;press); }void input(){ FILE *),&p1-&图书编号/
2;2'void input();&&c;5'cls&
printf(&quot:&;4\yes: 添加一个图书信息
p1=p2=(struct node*)malloc(sizeof(struct node))!&quot!feof(fp)) { if((fread(p1;
printf(& p=p-&5];
printf(&!=' scanf(&))==NULL) { printf(&}void findnumber(){ FILE *
case &#39: 输入编号查找一个图书
free(p1););
{ c=getchar();
else p2-&&&c;n&): 输入作者姓名查找一个图书
scanf(&******&;%s&quot!=1)
printf(& 添加信息成功:
findwriter();%s&name);
scanf(&quot: 退出
printf(&#include &
char name[20]:
findnumber(),&p1-&); } getchar();;
scanf(&.h&作者/
case ';price); if((fp=fopen(&书名/1&#39!='%d& 按任意键返回主菜单;%d&n&&#92:&价格\&&#92,&p1-&,*p2;;);
提问者采纳
再试试;前面的&的去掉fwrite(&p,1,这里的p本身就是指针啊,sizeof(struct node),fp),如果有问题再问
其他类似问题
为您推荐:
您可能关注的推广
课程设计的相关知识
其他1条回答
读取先说下错误,文件是用a 方式打开,因为文件指针在最末的首先,第一个for函数就有问题,这读取数据,你应该在一对花括号。按我的理解
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言版数据结构 表达式求值 无语法错误有逻辑错误 无法计算输出正确答案 求大神解答_百度知道
C语言版数据结构 表达式求值 无语法错误有逻辑错误 无法计算输出正确答案 求大神解答
#include&;&/(''#'&,'}void main(){;'&#39,
/'&||GettopStack(OPTR);,c)){case ',
/,)'
int ReturnPrOd(char op,&#39,&#39,'
if(S;判断输入的是运算符还是运算数;*&#47,如果是运算符返回TRUE.top--;7,&#39。如3+4-4/''& i++)
if(Test == TestOp[i])
Find= TRUE;''&#47,c);
}} int GettopStack(Sqstack S)/';typedef int S算数表达式求值的算符优先算法.top=-1;)'case&#39,';n&请输入算术表达式;;:/
a=EvaluateExpression();;*&#39,'c=getchar(),x,'&'InitStack(OPND),a);'&;OVERFLOW&'*&#39,'&for(i=0.top==-1) printf( &quot,&#39,
/*--------------------------------表达式求值基本函数-----------------------------*/printf(&&);''*/;&/ &#39,''}'(&#39,&#39,char *TestOp)
&#47.elem[S;/&&''&#47,';*'&lt,&#39,&#39,'=maxsize-1) printf(&&/*/void InitStack(Sqstack &S)/=';&gt!='}} int PopStack(Sqstack &S)/;;,' ';#'&;出栈{
){if(In(c,OP)][ReturnPrOd(B('7;/;;;');&;case '返回运算符优先级{return Prior[ReturnPrOd(A&#47,OPND; &#39,char e)&#47,&#39,';);''&gt,&#39.h&}}char Precede(char A&#39,&#39.elem[S;n&*&#39,&#39,&#39,'-';/&i++){if(op==TestOP[i])=';;';'进栈{
if(S;&#39,'*&#39:c=a-b;*'*&#47,'&gt。Sqstack OPTR:c=a&#47,'while(c;
return e,';&#include&lt.elem[++S;}int operate('&#39,c); ';n&''*'',&#39,'PushStack(OPND;/栈顶元素优先权低PushStack(OPTR;,&#39,char *TestOP)&#47。 '}}}return GettopStack(OPND);;}else{switch(Precede(GettopStack(OPTR),&#39,&#39,&#39,OP)==0)//}:c=a+b;&#39,
&#47,'/\
return F&#47,'&;%d&;&lt,&#39,
},a)));&运算符集合Status In(char Tcase'' ''char Prior[7][7] =
{ /*'#'&,&#39,b!=' 运算符优先级表
/}&#47,&#39,&#39,'
S; '}S&;/c=getchar(),'&';'&+'''case&#39:c=a*b;;&gt,&#39,'PushStack(OPTR;&#47:以#结束,'构造空栈{
S;;*/&;}int EvaluateExpression(){/&'/;
printf(&-';InitStack(OPTR););+'-';退栈并将运算结果入栈theta=PopStack(OPTR);;*//&&&;;
e=S;''a=PopStack(OPND);*'#''*/&c=getchar();&;/;&'&;int a,
else return (S;switch(theta){case';'',')&#39,否则返回FALSE{
int Find=FALSE;=&#39,'#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] = {&#39.top];&#39:/
for (int i=0;' '*&#39,&#39,
/OVERFLOW\c=getchar();b;;&;;/& i&lt,char Bop)/;',&'&);'+'break.top]);不是运算符则进栈{PushStack(OPND,(operate(b.top]=e;&case '&'b=PopStack(OPND); '/&printf(&quot.top&& '-'
/;脱括号并接收下一字符x=PopStack(OPTR);typedef struct{
char elem[maxsize];,'/';*'2#&#92,OP)];&#39.top==-1) return OVERFLOW;取栈顶元素{
else {S;&/''i&#'&#39.h&&#39,int b){';+'
int top:&#47
提问者采纳
/*&#47,&#39#include&/'返回运算符优先级{ return Prior[ReturnPrOd(A;;);)&#39:c=a-b;请输入算术表达式;;&&gt,'&&';******************已改 }} char GettopStack(Sqstack S)&#47,b;char Prior[7][7] =
return '/ case &#39。Sqstack OPTR,';;'&gt,'&} 注释的地方为修改的地方;*',&#39,operate(a;&&#47!='/)';退栈并将运算结果入栈
theta=PopStack(OPTR),'+c);;&#39,
/*'-'2#\/);;'
char OP[7] = {'/;#'*'+'出栈1;0'& case''&lt,&#39,&#39,
/ 运算符优先级表
/'||GettopStack(OPTR);}char Precede(char A&;'#&#39,'=&#39,'/'/&
return Find,'0&#39.top]=e:c=a*b; /***********
已改 else return (S;/'&lt,&#39.h&)'设OPTR和OPND分别为运算符栈和运算数栈, } } } return (int)GettopStack(OPND)-48。如3+4-4///}} char PopStack(Sqstack &S)/}char operate(&n&/+&#39,'*/break.top--;,'&&'&#39,''
c=getchar();;;&char***已改{
*//;/&&#47,',char *TestOp)
/;; } else
e=S,x;'; &#39.top==-1) return ''&
else {S;c=getchar();;&#39,';#&#39,
/;*/&#39.int-&gt,
/;; printf(&;/-' ';*';',&#39,否则返回FALSE{
int Find=FALSE;*&#39.elem[S;; } return -1;;初始化栈PushStack(OPTR;//+&#39,'
/' } return (char)('/,'
c=getchar(); '*';'&=''\
for (int i=0; switch(theta) { case'&gt.top&&'&&#39,OP)];
int ReturnPrOd(;,'*********已改
a=PopStack(OPND)-48,'& 'while(c;,OPND;
b=PopStack(OPND)-48;-' i++)
if(Test == TestOp[i])
Find= TRUE;&#39:/InitStack(OPTR);/;typedef int S;'('/('}void PushStack(Sqstack &S.elem[++S;;
if(S;'#include&'*/&){ if(In(c;;'&#39:c=a+b;}S'/运算符集合Status In(char T栈顶元素优先权低
PushStack(OPTR;*'&gt:以#结束;&#39,&#39,'/,另外;'/;/;&char (整形变为char型);&#39,a),';OVERFLOW&#92,
/'&&lt,c);n&/1&#39,&#39,''算数表达式求值的算符优先算法,'n&'构造空栈{
S;&#39。*/' i&
printf(&} else { switch(Precede(GettopStack(OPTR);***********已改{ int c!='#'='/);/7;typedef struct{
char elem[maxsize];,+' case&#39.top];判断输入的是运算符还是运算数;*******已改}void main(){ int a=3;&gt,&#39,'/; '/;&lt,';&/& &#39,这个程序运算数只能为个位数;;;/&运算符优先级数组的下标返回{-' case '&c=getchar();************已改}int EvaluateExpression(){/*&#39.top]):c=a/&#39,十位百位就复杂了;)=&#39,'&*'&' '&&gt:// for(i=0;'&#47!'&#39.top=-1,如果是运算符返回TRUE,int b)/;,OP)][ReturnPrOd(B '运算符栈底放#InitStack(OPND),'&&#47:/'b,&#39,char Bop)/);'/初始化栈printf(&;#'7;&#39,';,&#39,
int top,'&#39,'
(char)(a+'0'&lt,'#' '=maxsize-1) printf(&quot,c);*********已改
PushStack(OPND,'i&; case'&;*/&#39:int a=1;&,'*&#39,'不是运算符则进栈 {PushStack(OPND;\进栈{
if(S;& &#39,';*';&',&#39,''脱括号并接收下一字符
x=PopStack(OPTR);void InitStack(Sqstack &S)/
a=EvaluateExpression();%d&quot.******************int-&(&#39.elem[S;/,'取栈顶元素******************已改{
if(S,'&;}/&#39,char *TestOP)&#47,b));;
};OVERFLOW&quot,c)) { case '&#39,'/&#39.top==-1) {
printf( &i++) {
if(op==TestOP[i])
return i,OP)==0)/');*--------------------------------表达式求值基本函数-----------------------------*&#47.h&'&#39,'#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
随时随地咨询
出门在外也不愁

我要回帖

更多关于 解释 刻舟求剑 的文章

 

随机推荐