| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2013 人关注过本帖
标题:用turbo c 编程,各位帮帮忙,这道题该怎么写啊
只看楼主 加入收藏
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
我是云的程序的确是做的很巧妙,也很高效。我的理解见下面的注释:
//将1-9这九个数字分别填入一个3×3方阵,这样使每一横行的三个数字组成一个三位数。
//如果要使第二行的三位数是第一行的两倍,第三行的三位数是第一行的三倍应怎样填数。编程打印所有方案。
#include <stdio.h>
#include <stdlib.h>
//======= checkChar() 的功能是:判断 n传入的数中是否有重复数字
int checkChar(int n)        
{
    char flag[10]={0},        //数组flag[10]:flag[0]--flag[9]分别存放0--9这10个数字的个数。
         num[10]={0};        //数组num[10]: 将n传入的数转化为字符串放入数组num[10]。
    itoa(n, num, 10);                              //itoa(n, num, 10); 将n传入的数转化为字符串放入数组num.(10: 最大长度。)
    for(int i=0;i<9;flag[num[i]-'0']++,i++)        //检测:是否有重复的数字。第一次出现的字符,使得flag[num[i]-'0']++, 如果此字符再次出现,必然已经有 flag[num[i]-'0']=1了,
        if(flag[num[i]-'0']) return 0;            //当flag[num[i]-'0']非0时,此数字必定是重复出现,所以return 0
    return 1;                                    //如果数组num中的9个数字没有重复,才会执行到这里,所以return 1
}
void main(void)
{
    for(int a=123;a<=329;a++)                        //因为123是各数位不同的最小三位数,329是329*3不超出1000的最高界
        if(checkChar(a*1000000+a*2*1000+a*3))        //将a 2*a 3*a 做成一个9位数
            printf("%d\n%d\n%d\n\n", a, a*2, a*3);
}
另外,我试了一下:并不是“flag[] 无论赋什么初值,只要是赋过值,就会有正确输出”,只有它都赋为0才对,我认为可以理解它是记录各数字字符的个数的。flag[0]记录‘0’的个数,flag[1]记录‘1’的个数,...,
2008-12-16 08:41
快速回复:用turbo c 编程,各位帮帮忙,这道题该怎么写啊
数据加载中...
 
   



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

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