鱼C论坛

 找回密码
 立即注册
查看: 4518|回复: 20

c语言简单程序

[复制链接]
发表于 2013-3-22 17:47:03 | 显示全部楼层 |阅读模式
10鱼币
typedef struct k
{
int info;
k* next;
}node;
void i(node *a)
{
node*p=a,head1=a;
for(;( p->next&&p=head1);)

)
}
*a为一完整的单链表,编译通不过,说for语句有错求解,不用管是什么功能。
C:\Users\Administrator\Desktop\temp\temp\新建文本文档.cpp(28) : warning C4800: 'struct k *' : forcing value to bool 'true' or 'false' (performance warning)
C:\Users\Administrator\Desktop\temp\temp\新建文本文档.cpp(28) : error C2106: '=' : left operand must be l-value

最佳答案

查看完整内容

赋值操作符=优先级小于&&,把你的&&两边都加上括号。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-22 17:47:04 | 显示全部楼层
赋值操作符=优先级小于&&,把你的&&两边都加上括号。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-22 17:52:08 | 显示全部楼层
类型不一致吧,head1是node结构体类型,而a是node*类型。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-22 17:59:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-22 18:05:20 | 显示全部楼层
node* exchang(node *head)
{
        node *p=head,*head1=head;
        for(;(p->next/*&&return head)||(p->next->next&&head=p->next&&p->next->next=p)||p!=p->next->next||(p==head&&p->next->next=p&&p->next=NULL&&return head)||(p->next->next=p&&*/&& p=head1);)p=p->next;
}
其实源码是这样的!去掉注释符号就是单链表倒置功能,老师叫我们用3,4句搞定,我试试2句能否搞定,没想到编译都过不了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-22 18:13:48 | 显示全部楼层
玩酷子弟lv 发表于 2013-3-22 18:10
赋值操作符=优先级小于&&,把你的&&两边都加上括号。。。

太感谢您了,就是这个问题啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-22 18:15:41 | 显示全部楼层
孤单的守着回忆 发表于 2013-3-22 18:13
太感谢您了,就是这个问题啊!!!

改成这样for(;(p->next&&return head)||(p->next->next&&(head=p->next)&&(p->next->next=p))||p!=p->next->next||((p==head&&p->next->next=p)&&(p->next=NULL)&&return head)||((p->next->next=p)&& (p=head1));)p=p->next;
又这样报错
C:\Users\Administrator\Desktop\temp\temp\新建文本文档.cpp(28) : error C2059: syntax error : 'return'
C:\Users\Administrator\Desktop\temp\temp\新建文本文档.cpp(28) : error C2143: syntax error : missing ';' before ')'
执行 cl.exe 时出错.

新建文本文档.obj - 1 error(s), 0 warning(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-22 19:11:31 | 显示全部楼层
孤单的守着回忆 发表于 2013-3-22 18:15
改成这样for(;(p->next&&return head)||(p->next->next&&(head=p->next)&&(p->next->next=p))||p!=p->nex ...

for(;(p->next&&return head)这句是什么意思,怎么出来个return,就是这出错了,其他地方没细看,你下次发代码格式编译好,这样不容易看。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-22 19:45:39 | 显示全部楼层
typedef struct k
{
int info;
k* next;
}node;
感觉这有错吧~k* next;改成struct k *next;不然编译器不知道K是什么...不知道对不对哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-22 22:32:03 | 显示全部楼层
你的是linux下的C吗?如果是的话,你的结构体内部的 K* 要在前面加struct
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-22 22:48:31 | 显示全部楼层
??????????????????、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 00:36:46 | 显示全部楼层
思无邪 发表于 2013-3-22 22:32
你的是linux下的C吗?如果是的话,你的结构体内部的 K* 要在前面加struct

不是!vc6.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 00:37:25 | 显示全部楼层
a65464587 发表于 2013-3-22 19:45
typedef struct k
{
int info;

我一直都是这么写的,应该不是这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 00:39:16 | 显示全部楼层
玩酷子弟lv 发表于 2013-3-22 19:11
for(;(p->next&&return head)这句是什么意思,怎么出来个return,就是这出错了,其他地方没细看,你下次发 ...

那句话的意思是p->next为NULL则执行return head,否则不执行后面的return head!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 00:40:15 | 显示全部楼层
玩酷子弟lv 发表于 2013-3-22 19:11
for(;(p->next&&return head)这句是什么意思,怎么出来个return,就是这出错了,其他地方没细看,你下次发 ...

那个代码只有一个for语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 00:52:25 | 显示全部楼层
貌似是for的判断语句中不能用return语句,不理解,为什么?有没有办法在for语句的两个分号之间的判断语句中跳出for循环?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-23 06:18:01 | 显示全部楼层
又学到了很多知识,谢谢:D:D
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-23 07:45:13 | 显示全部楼层
都是大神呀,我看不懂= =
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-23 10:17:53 | 显示全部楼层
孤单的守着回忆 发表于 2013-3-23 00:52
貌似是for的判断语句中不能用return语句,不理解,为什么?有没有办法在for语句的两个分号之间的判断语句中 ...

跳出for循环用break就好,你的for循环写的太乱了,不是句子越少就越好,要考虑到可读性,还有那个return不能这样用的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-23 11:24:03 | 显示全部楼层
玩酷子弟lv 发表于 2013-3-23 10:17
跳出for循环用break就好,你的for循环写的太乱了,不是句子越少就越好,要考虑到可读性,还有那个return不 ...

谢谢啊!我也知道这样写不好,只是老师要求用较少语句,我把那个return改成break还是不行啊,报错相同,只是报错中的return改成了break啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表