| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1246 人关注过本帖
标题:今天做题做错几题,想来想去都不解,请各位大侠指教一下。
只看楼主 加入收藏
joan789987
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
今天做题做错几题,想来想去都不解,请各位大侠指教一下。
第一题:求这段程序输出的结果。
int x,y,z;
x=7; y=8; z=9
if(x>y)
  x=y; y=z; z=x;
printf("x=%d y=%d z=%d\n",x,y,z);
我选的是x=7 y=9 z=7这个。但是答案是x=7 y=8 z=7.我真的不理解。

第二题:求输出结果
#include <stdio.h>
main()
{
  int i,j,n=0;
  for(i=0;i<2;i++)
  {
     n++
     for(j=0;j<=3;j++)
     {
         if(j%2)
              continue;
         n++;
      }
   }
   printf("n=%d\n",n);
}
答案是n=6,这题我是不能下手的,因为有两个n,两个n是相同吗?还有为什么会是6呢?

第三题:求n和sum的值。
include<stdio.h>
main()
{  
   int n,sum;
   n=0;sum=0;
   while(n<10);
  {
     sum+=(n++);
    printf("%d\n",sum);
  }
   printf("n=%d\n",n);
}
我想大家看到这程序应该一看就知道陷入死循环,不过我看不出,因为 我看不明 sum+=(n++)是什么意思?它等同于什么?

这三题是我不能理解的,麻烦各位大侠解析一下。我是刚学C语言的新手,所以不要怪我问一些这么简单的问题哦。

搜索更多相关主题的帖子: 指教 
2010-07-17 16:27
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:16 
第一题:求这段程序输出的结果。
int x,y,z;
x=7; y=8; z=9
if(x>y)
  x=y; y=z; z=x;
printf("x=%d y=%d z=%d\n",x,y,z);
我选的是x=7 y=9 z=7这个。但是答案是x=7 y=8 z=7.我真的不理解。
解答(只看我注释就可以了)
int x,y,z;//定义了x,y,z
x=7; y=8; z=9//赋了初值x=7,y=8,z=9
if(x>y)//如果x>y,那么显然x不大于y
  x=y; y=z; z=x;//if下面一段话不执行:x=y,执行后2句y=z; z=x;你再看看结果
printf("x=%d y=%d z=%d\n",x,y,z);//打印x,y,z
解答二(只看我的注释就可以了)
#include <stdio.h>
main()
{
  int i,j,n=0;//定义了i,j,n并赋值0
  for(i=0;i<2;i++)//循环两次
  {
     n++;//n++,n+1
     for(j=0;j<=3;j++)//循环3次
     {
         if(j%2)//如果j%2
              continue;//结束
         n++;//n继续++
      }
   }
   printf("n=%d\n",n);
}//如此循环n的结果就是6,你可以调试一下看看,一下就懂了
解答三(只看我的注释就可以了)//这个程序是个死循环.....
#include<stdio.h>
main()
{  
   int n,sum;//定义了n,sum
   n=0;sum=0;//n=0,sum=0
   while(n<10);//循环,为什么是死循环呢,因为加了一个分号,不信你试试
  {
     sum+=(n++);//这就是累加咯,n++就是n每次都加1并赋给sum
    printf("%d\n",sum);//打印sum
  }
   printf("n=%d\n",n);//打印n等于几,如果去掉分号打印出来就是n=10
}



解释完了,楼主看看吧

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-17 16:43
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
我也是新手
第一题我觉得是正确的呢的答案
第二题 主要是因为%求余符号 加上CONTINUE判断(成立的时候跳出下面的循环继续新的循环。和BREAK相反) 外循环的N增加两次,内循环在每次J=2时,条件成立 执行CONTINUE 跳出下面循环。所以最终N增加6次 结果为6
第三题 我觉得sum+=(n++)  应该等同于sum=(sum+(n++)),但是死循环我也不明白
晕倒看了LS的才发现WHILE()后面还有分号!倒 那铁定是死循环了.WHILE(n<10)永远判断不结束 。看来还是要细心啊

[ 本帖最后由 longyi3030 于 2010-7-17 17:04 编辑 ]

初学者,
2010-07-17 17:02
mygameoh
Rank: 2
等 级:论坛游民
帖 子:50
专家分:15
注 册:2010-7-8
收藏
得分:0 
y=z 那y不是等于9吗?  不明白 求解
2010-07-17 17:10
phrankmoon
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-15
收藏
得分:3 
你用的什么书?扔掉它吧,第一题的答案你没错,就是7, 9, 7。

建议书籍:
C Primer Plus
The C Programming Language

如果你英语还过得去就读英文版,如果不喜欢读英文版的,就读中文版。
这年头害人的书不少,建议只读经典,硬着头皮也要读经典,你会受益无穷的。

有人读的是谭浩强的书,谭浩强的书不是不可以读,他的书内容还可以,但风格害了不少人,你Google一下就知道了。

[ 本帖最后由 phrankmoon 于 2010-7-17 17:35 编辑 ]
2010-07-17 17:32
joan789987
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-7-17
收藏
得分:0 
先谢谢那位大侠.解释这么详尽.第二三题我明白了.就是第一题理解不了.z不是赋值于y吗.y为什么是8呢.我理解是9
2010-07-17 17:33
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
楼主那个if语句是不是少敲了对大括号,如果是7 8 7那么表达形式应为
  if(x>y)
{
x=y; y=z; z=x;
}这样就想二楼说的是7 8 7,若没有大括号就是7 9 7,楼主想想看
2010-07-17 17:37
joan789987
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-7-17
收藏
得分:0 
5楼.答案错吗.我看的书是开天辟地系列的.
2010-07-17 17:38
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
我晕!看错了!加大括号应该是7 8 9.不加的话是7 9 7,因为if语句这时候就只作用到这句x=y
2010-07-17 17:41
joan789987
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-7-17
收藏
得分:0 
回复 7楼 遮天云
有大括号.条件为假.输出不是是原来定义的数值吗.我现在越搞越糊涂啦
2010-07-17 17:44
快速回复:今天做题做错几题,想来想去都不解,请各位大侠指教一下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013458 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved