标题:c语言初学求大神指导一下几个程序问题
只看楼主
luguolian
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-15
结帖率:100%
已结贴  问题点数:8 回复次数:6 
c语言初学求大神指导一下几个程序问题
下面是这几天在家学习c的过程中遇到的几个问题,在这里请教一下大神
1.
#include<stdio.h>                    
void main()
{
    int x,i;
    for(i=1;i<=100;i++)
    {x=i;                                    
     if(++x%2==0)
         if(++x%3==0)
             if(++x%7==0)
                 printf("%4d",x);
             }
    printf("\n");
}
关于这个程序我不知道结果是怎么运算得到的?为什么结果是28和70这两个数值呢?  
2.
#include<stdio.h>
void main()
{
    int x=2;                 不懂,为什么结果是-1。主要是while里面那个表达式的意思不懂(应该不是自减那么简单吧?)
    while(x--);
    printf("%d\n",x);
}
3.#include<stdio.h>
void main()
{
    int i=0,sum=1;
    do                          
    {sum+=i++;}
    while(i<5);
    printf("%d\n",sum);
}
这个程序的结果为什么是11而不是17呢?对于sum+=i++我的理解是i先自增一次然后再求和。但是得到的结果不对!



4.#include <stdio.h>
void main()
{ int h10,h7,h5;
  for(h10=1; h10<8; h10++)
    for(h7=1;h7<8; h7++)
      for(h5=1; h5<8; h5++)
        if(h10+h7+h5==8 && h10*10+h7*7+h5*5==53)
          printf("h10=%d\th7=%d\th5=%d\n",h10,h7,h5);
   }
和下面的这个程序
#include<stdio.h>
void main()
{ int a,b,c;
  for(a=0;a<=5;a++)
   {for(b=0;b<=6;b++)
     {for(c=0;c<=10;c++)
       if(10*a+7*b+5*c==53&&a+b+c==8)
       printf("\t\n%d\t%d\t%d",a,b,c);
      }
    }
}
前面和后面的程序得到的结果是一样的。两个程序的差别就在于第二个和第三个for都被前面一个用大括号括起来了,我一直不理解一个程序中存在多个for语句时用括号和不用括号的区别!或者说我还是不太理解有多个for语句时候到底是怎么运算的?这个问题困扰了我很久!
搜索更多相关主题的帖子: include c语言 在家 
2013-07-26 19:42
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
那么多,怎么解释呀

思考赐予新生,时间在于定义
2013-07-26 20:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
楼主还没有学会看程序流程的方法就整这种测试用代码

授人以渔,不授人以鱼。
2013-07-27 13:05
luguolian
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-15
得分:0 
回复 3楼 TonyDeng
这个是我在学习C语言的时候遇到的几个不懂的程序!并不是都不懂,只是在一两个小地方实在是弄不出清楚是怎么运算的。所以发帖问问
2013-07-28 08:18
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
得分:8 
以下是引用luguolian在2013-7-26 19:42:24的发言:

下面是这几天在家学习c的过程中遇到的几个问题,在这里请教一下大神
1.
#include                    
void main()
{
    int x,i;
    for(i=1;i<=100;i++)
    {x=i;                                    
     if(++x%2==0)//if判断语句  当括号内的值为真(就是非0)就执行接下来的语句 假就跳过
         if(++x%3==0)
             if(++x%7==0)
                 printf("%4d",x);
             }
    printf("\n");
}
关于这个程序我不知道结果是怎么运算得到的?为什么结果是28和70这两个数值呢?  
2.
#include
void main()
{
    int x=2;                 不懂,为什么结果是-1。主要是while里面那个表达式的意思不懂(应该不是自减那么简单吧?)
    while(x--);//while循环 括号内为判断是否继续的依据 为真继续循环  后置自减 先取值再自减
    printf("%d\n",x);
}
3.#include
void main()
{
    int i=0,sum=1;
    do                          
    {sum+=i++;}
    while(i<5);//do {}while();先执行一次再判断 为真则继续和while的区别就是先执行一次在判断 也就是不管真假都至少可以执行一次
    printf("%d\n",sum);
}
这个程序的结果为什么是11而不是17呢?对于sum+=i++我的理解是i先自增一次然后再求和。但是得到的结果不对!



4.#include
void main()
{ int h10,h7,h5;
  for(h10=1; h10<8; h10++)
    for(h7=1;h7<8; h7++)
      for(h5=1; h5<8; h5++)
        if(h10+h7+h5==8 && h10*10+h7*7+h5*5==53)
          printf("h10=%d\th7=%d\th5=%d\n",h10,h7,h5);
   }
和下面的这个程序
#include
void main()
{ int a,b,c;
  for(a=0;a<=5;a++)//for循环 每循环一次就执行一次括号内的语句  但你这里有无括号无区别  你可以去看看循环语句的嵌套
   {for(b=0;b<=6;b++)
     {for(c=0;c<=10;c++)
       if(10*a+7*b+5*c==53&&a+b+c==8)
       printf("\t\n%d\t%d\t%d",a,b,c);
      }
    }
}
前面和后面的程序得到的结果是一样的。两个程序的差别就在于第二个和第三个for都被前面一个用大括号括起来了,我一直不理解一个程序中存在多个for语句时用括号和不用括号的区别!或者说我还是不太理解有多个for语句时候到底是怎么运算的?这个问题困扰了我很久!

靠 之前写的全没了
怎么回事 引用时直接先在里面写了就点不出来了  发表时会“字节不够”  一返回之前写的全没了........我容易吗
楼主  你的基础语法不行啊  这几个循环以后会大量用的  自己一定要搞清楚

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-07-28 16:43
luguolian
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-15
得分:0 
回复 5楼 额外覆盖
非常感谢你的回答,我是个初学者 为的就是今年9月23号的国二考试。听说C在国家计算机考试中算是比较难的我们学校也要求我们考,所以我就利用暑假的时间好好补习一下
2013-07-30 09:01
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
以下是引用luguolian在2013-7-30 09:01:51的发言:

非常感谢你的回答,我是个初学者 为的就是今年9月23号的国二考试。听说C在国家计算机考试中算是比较难的我们学校也要求我们考,所以我就利用暑假的时间好好补习一下

背会题库,包过

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-30 09:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418019-1-1.html




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

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