| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:求助 谁能帮我解释一下每个语句的含义
只看楼主 加入收藏
hzz6866223
Rank: 2
等 级:论坛游民
帖 子:20
专家分:30
注 册:2014-2-24
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:13 
求助 谁能帮我解释一下每个语句的含义
// 习题2-10 样例(permutation)

#include <stdio.h>
int main(void)
{
    int x, y, z, a[10] = {0};
    for(x = 100; x < 333; x++)
    {
        y = 2*x;
        z = 3*x;
        a[x/100] = a[x/10%10] = a[x%10] = 1;
        a[y/100] = a[y/10%10] = a[y%10] = 1;
        a[z/100] = a[z/10%10] = a[z%10] = 1;
        int i, s = 0;
        for(i = 1; i < 10; i++)
            s += a[i];
        if(s == 9)
            printf("%d\t%d\t%d\n", x, y, z);
        for(i = 1; i < 10; i++)
            a[i] = 0;
    }
    return 0;
}


表示我是新手,学习不到一周的时间,求解释以下每句代码的含义,感激不尽。
搜索更多相关主题的帖子: include 
2014-02-24 19:18
w851777025
Rank: 7Rank: 7Rank: 7
来 自:新疆
等 级:黑侠
威 望:2
帖 子:135
专家分:584
注 册:2014-1-19
收藏
得分:1 
程序代码:
#include <stdio.h>
int main(void)
{
    int x, y, z, a[10] = {0};//初始化全部为0
    for(x = 100; x < 333; x++)//循环100到332
    {
        y = 2*x;
        z = 3*x;
        a[x/100] = a[x/10%10] = a[x%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
        a[y/100] = a[y/10%10] = a[y%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
        a[z/100] = a[z/10%10] = a[z%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
        int i, s = 0;
        for(i = 1; i < 10; i++)//循环1到9
            s += a[i];
        if(s == 9)//如果s等于9
            printf("%d\t%d\t%d\n", x, y, z);//按制表格式打印x y z
        for(i = 1; i < 10; i++)//循环1到9
            a[i] = 0;//a[i]-a[9]全部置0
    }
    return 0;
}

同为新手,有错的地方请见谅

[ 本帖最后由 w851777025 于 2014-2-24 21:01 编辑 ]
2014-02-24 20:59
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
收藏
得分:1 
第二个for循环应该 i = 0或者i < =10  的吧?
a[x/100] = a[x/10%10] = a[x%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
a[y/100] = a[y/10%10] = a[y%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
a[z/100] = a[z/10%10] = a[z%10] = 1;//a[x/100]百位,a[x/10%10]十位,a[x%10]个位
上面三句是用来干什么的呢?
这个程序是用来干什么的呢?


[ 本帖最后由 yangt 于 2014-2-25 00:14 编辑 ]
2014-02-25 00:06
hzz6866223
Rank: 2
等 级:论坛游民
帖 子:20
专家分:30
注 册:2014-2-24
收藏
得分:0 
回复 3楼 yangt
这个程序用来输出1-9九个数组成三个三位数,这三个数的比例为1:2:3.

[fly]不求超越,只要前行。[/fly]
2014-02-25 15:55
hzz6866223
Rank: 2
等 级:论坛游民
帖 子:20
专家分:30
注 册:2014-2-24
收藏
得分:0 
回复 2楼 w851777025
感谢大神啊!!

还有两个小问题,为什么要将三个数组都赋值为1?输出个十百位的那三个语句没有看明白。

另外,在数组输出中,输出“%3d”,其中3代表什么?

[fly]不求超越,只要前行。[/fly]
2014-02-25 16:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
http://baike.baidu.com/link?url=tEsSfmhRHbIQpjQd0-hnPEckDUF31BQyVhSgc8789Vx3E-i8_y434qOlZ3F7nQWl

DO IT YOURSELF !
2014-02-25 16:15
hzz6866223
Rank: 2
等 级:论坛游民
帖 子:20
专家分:30
注 册:2014-2-24
收藏
得分:0 
回复 6楼 wp231957
什么意思呢?这不是printf语句的百度百科吗?


[fly]不求超越,只要前行。[/fly]
2014-02-25 16:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用hzz6866223在2014-2-25 16:58:41的发言:

什么意思呢?这不是printf语句的百度百科吗?
里面有解决你的问题的答案    -----------另外,在数组输出中,输出“%3d”,其中3代表什么?

DO IT YOURSELF !
2014-02-25 17:09
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:1 
程序代码:
#include <stdio.h> // 头文件包含语句 <>表示编译器从标准库路径开始搜索,""表示编译器从用户的工作 // 路径开始搜索
int main(void) // 定义主函数,函数返回值是一个int型 对应最后的return 0    
{ // main函数的起始花括号
    int x, y, z, a[10] = {0};// 定义int变量x,y,z int数组a[10],表示数组的名字叫a,里面含有是个元素,
  // a[10] = {0} 表示吧a[0]初始化为0 其余的默认初始为0
  // 如果是 a[10] = {1,2}表示a[0]=1 a[1]=2 a[2]到a[9]默认为0

    for(x = 100; x < 333; x++)// 这是一个for循环 x=100 表示循环开始的变量初始化 x<333表示 
                      // 循环进行的判定条件(满足则进行循环体,不满足则结束for循环)
                      // x++ 表示 每个循环体进行一次后x = x+1  这个在每次循环体进行完后执行一次
                  // 然后再判断判定条件,是否执行循环体。这个for循环表示x从100依次增加到332
    { // for循环体的起始花括号

        y = 2*x; // 让y的值等于x的二倍
        z = 3*x; // 让z的值等于x的三倍

        a[x/100] = a[x/10%10] = a[x%10] = 1;
                               // 这是找到x这个三位数个位、十位、百位上的数字代表的数组a的元素,
                       // 并让他们等于1 例如如果x=123 则a[1]=a[2]=a[3]=1
        a[y/100] = a[y/10%10] = a[y%10] = 1;
                               // 这是找到y这个三位数个位、十位、百位上的数字代表的数组a的元素,
                       // 并让他们等于1 例如如果x=123 则y=246则a[2]=a[4]=a[6]=1
        a[z/100] = a[z/10%10] = a[z%10] = 1;
                               // 这是找到z这个三位数个位、十位、百位上的数字代表的数组a的元素,
                       // 并让他们等于1 

        int i, s = 0; // 定义i为一个计数变量,s为一个求和变量

        for(i = 1; i < 10; i++) // 在x=某一个数的循环里面 经过上面的运算,数组a里面a[1]到a[9]的和
            s += a[i];

        if(s == 9)  
                 // 选择结构 当s==9 时(=是赋值符号,==是判定是否等于的关系符号)执行输出语句 输出这个x
         // 和x对应的y,z值。这是个特殊情况,当s==9时说明a[1]到a[9]都是1,而x,y,z都是三位数,
         // 也就是说这个x有个特殊情况:x 2x 3x 他们都是三位数,而且他们三个数每个位数的数都不
                 // 相等,正好是1,2,3...,8,9
            printf("%d\t%d\t%d\n", x, y, z); 
                 // 输出语句 \t \n为转义字符 分别表示输出一个制表符和一个回车符

        for(i = 1; i < 10; i++) 
                // 这个是吧数组a的元素全部重置为0,因为这时候要判定下一个x了,不重置,影响判定的正确性
            a[i] = 0;

    } // for循环体的结束花括号

    return 0; // 返回该函数(这里是main主函数)的返回值
} // main函数的结束花括号

未知令人期待!
2014-02-25 23:48
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
在输出语句 printf里面  %3d  表示改变了的输出字段的宽度,如果数据位数小于3 那么左端补空格,如果大于3则按照实际位数输出, 如果是%-3d 则如果数据位数小于3 那右端补空格。

未知令人期待!
2014-02-25 23:51
快速回复:求助 谁能帮我解释一下每个语句的含义
数据加载中...
 
   



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

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