CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

小问题

楼主zoffor(该死,你那厮(Gat,Lin)比我有钱)2003-05-04 16:44:26 在 C/C++ / C语言 提问

初学c  
  写了几个小程序  
  发现书写用   &&,||,!   的表达式(逻辑表达式?)来决定程序运行最难,  
  每次都想得不全,以至于程序运行之后都会出现很多分支,  
  要反复的修改才比较满意,但是老是担心还有另外的情况  
  没有考虑到。  
  请问各位在书写这样的表达时都用什么方法,有没有可以借鉴的?  
  是不是要把真值表列出来?  
   
  /*   learning   is   more   important   than   pointers   */  
  main()  
  {  
          if(   interested   ){  
                  up();  
                  saysth;  
                  receive(   char   thanks[]   );  
            }   else   exit(0);  
  }  
  /*   MYNAME   STANDS   FOR   gates,   linus   have   more   money   than   me   */ 问题点数:54、回复次数:16Top

1 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-05-04 16:48:28 得分 0

up()  
  /*   i   am   interested   in   it   ,too   */  
  /*   54   points   stands   for   MAY   4TH.   */Top

2 楼tiaya()回复于 2003-05-04 16:49:00 得分 4

不用吧?除非你的表达式非常复杂Top

3 楼yiminggw(某某鸟人)回复于 2003-05-04 16:55:45 得分 2

94Top

4 楼hitbabiq(仰天长啸)回复于 2003-05-04 17:02:42 得分 4

那就改用switch...case结构,用default来处理所有没有考虑到地分支Top

5 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-05-04 17:05:23 得分 0

大概有三四项吧  
  里面可能有赋值操作(函数返回)  
  还有==  
  可能还有指针(指向结构中的成员变量)  
  我本来想贴一些代码片段的,可忘记了  
   
  其中有一个是输入字符串和结构中的字符串匹配的,  
  我不知道有个cmpstr  
  所以自己写。好繁阿!  
  Top

6 楼shishiXP(诗人XP)回复于 2003-05-04 17:06:08 得分 2

多想想,多做做试验就知道了。  
   
  与和或而已Top

7 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-05-04 17:28:51 得分 0

switch   case   不是也要判断它的值吗?  
   
  我记得一个(判断字符串相等):  
  x,y都是字符串:  
  while(   (   x[i]==y[j]   )!='\0'   ){  
          ++i;  
          ++j;  
  }  
  思想:如果x[i],y[j]都为非0字符且相等,会继续比较;  
  如果x[i],y[j]不相等,会跳出循环。  
  但是后面出错了  
  因为我没想到当x[i],y[j]都等于'\0'时,它还会继续比较。  
   
  真希望这样的事情以后少出现,现在只是小程序,  
  如果以后程序大了,可就错漏百出了  
   
   
   
   
   
   
  Top

8 楼shishiXP(诗人XP)回复于 2003-05-04 18:23:02 得分 6

这个程序就是  
  while(   x[i]==y[j])  
  {  
          ++i;  
          ++j;  
  }  
   
  搞那么复杂干吗?       x[i]==y[i]的值不是1就是0;  
                                      '\0'的值就是0  
   
  Top

9 楼fengyuntianxia()回复于 2003-05-04 18:50:24 得分 4

老兄,你在哪找的题啊??Top

10 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-05-07 11:32:42 得分 0

To   shishiXP(诗人XP)   :  
   
  你的程序真的可以判断字符串是否相等吗?  
  while(   x[i]==y[j])  
  {  
          ++i;  
          ++j;  
  }  
  如果x[i]和y[j]同时为'\0',x[i]==y[j]的值不是等于1吗,  
  不是还要++i,++j继续往后比较吗?  
   
  比如  
  char   x[10]="china";  
  char   y[10]="china";  
  当比较完‘a’时,x[i],y[j]继续比较(对吗?),  
  直到i==j==9还继续比较下一位,此时已超出字符串定义长度,  
  x[10],y[10]为任意值,于是得到字符串不等的结果。  
  小弟初学,愚钝之处请大虾们指教。  
   
  另:我的问题不只是针对这个问题(只是个例子),  
  我是希望能得到比较通用的写这类表达式的原则和方法。  
   
  To:   fengyuntianxia()  
  我不知道你要问什么,是不是我的程序很ugly   :)   ?  
  都是我自己瞎写的。  
   
  Top

11 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-05-11 15:49:50 得分 0

再没人回我就揭帖啦。Top

12 楼tiaya()回复于 2003-05-18 10:55:04 得分 10

如果我不能确定一段代码是不是正确的时候,我会想办法尽量简化代码,让他看起来比较容易理解。  
   
  while(   x[i]==y[j]   ){  
          if   (x[i]   ==   '\0')return   EQUL;  
          ++i;  
          ++j;  
  }  
  这样可能有点麻烦。等我熟悉了之后,就可以用更简洁的表示方式了  
  Top

13 楼wsSdj(小丁)回复于 2003-05-18 13:35:50 得分 10

如果将判断写在执行体里,别人就不好判断你循环的条件了(条件分断了)。  
  通常在看到while(   x[i]==y[j]   )时的第一反应就是   如果x的第i元素与y的第j元素相等则循环继续。  
  你可以在把条件加入while的判断中。  
  如:while(   (x[i]==y[j])   &&   (x[i]!='\0'))  
  这样的条件就成了:   如果x的第i元素与y的第j元素相等,且,x的第[i]元素不为'\0'则循环Top

14 楼tiaya()回复于 2003-05-18 20:08:49 得分 2

to   wsSdj(小丁)    
  这样当然也可以,不过不完整  
   
  strcmp的实现可以察看stl的说明(应该有吧,过几天好好看看)Top

15 楼cdocument(文档)回复于 2003-05-19 10:40:47 得分 10

拷贝字符串:  
   
  char   *strcpy(char   *strDest,   const   char   *strSrc);  
  {  
          assert((strDest!=NULL)   &&   (strSrc   !=NULL));    
          char   *address   =   strDest;    
          while(   (*strDest++   =   *   strSrc++)   !=   ‘\0’   )  
                  NULL   ;  
          return   address   ;    
  }Top

16 楼zoffor(该死,你那厮(Gat,Lin)比我有钱)回复于 2003-07-22 09:10:30 得分 0

好久不上了  
  没想到有那么多旧账未结  
  昨晚通宵困了,先睡觉,下次上来再结啦,抱歉Top

相关问题

  • 小小小小小问题!
  • 一个小小小小小小问题
  • 小小,小问题
  • 小小小小问题
  • 小小问题!
  • 小小问题?
  • 小小问题。
  • 小小问题!!!!
  • 小小API
  • 小小问题:)

关键词

  • 代码
  • 循环
  • 结构
  • null
  • 字符串
  • 相等
  • 表达式
  • 元素
  • 程序
  • strdest

得分解答快速导航

  • 帖主:zoffor
  • tiaya
  • yiminggw
  • hitbabiq
  • shishiXP
  • shishiXP
  • fengyuntianxia
  • tiaya
  • wsSdj
  • tiaya
  • cdocument

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo