搜索
查看: 4279|回复: 15
打印 上一主题 下一主题

15选5程序哪里错了?

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-19 15:53:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
/*下面程序是要在1~8里选4个数,9~15里选一个数,即15选5,前四个数小于9,后面9~15里选一个数。*/
#include <stdio.h>
int main()
{  

    int a,b,c,d,e,i;
    for(a=1;a<6;a++)
       for(b=a+1;b<7;b++)
           for(c=b+1;c<8;c++)
              for(d=c+1;d<9;d++)
                 for(i=0,e=9;e<16;e++,i++)
                     printf("%2d %2d %2d %2d %2d %5d\n",a,b,c,d,e);
        sleep(5000);
        return 0;
}

上面的程序是要在1,2,3。。。15中选5个数,找出所有前四个数是小于9,后一大于等于9的福彩15选5 号码组合。

啊哈 编译失败,不知道错在哪里了?不知道哪里错了,向各位大侠求助!!!

最佳答案

查看完整内容

对于楼主的问题,我们可以这么做:在运行程序弹出黑色窗口后,我们发现i的值从192开始,这是因为cmd命令行窗口的缓冲区宽度(对应每行能显示的字符多少)和高度(对应一共能显示多少行)不够所造成的信息覆盖,也就是说当行数很多,高度不足的时候,会产生覆盖现象。可以在cmd窗口点右键---属性---布局----缓冲区高度----改为9999,。再次执行,即可从1开始显示。如图。
沙发
发表于 2012-7-19 15:53:27 | 只看该作者
对于楼主的问题,我们可以这么做:在运行程序弹出黑色窗口后,我们发现i的值从192开始,这是因为cmd命令行窗口的缓冲区宽度(对应每行能显示的字符多少)和高度(对应一共能显示多少行)不够所造成的信息覆盖,也就是说当行数很多,高度不足的时候,会产生覆盖现象。可以在cmd窗口点右键---属性---布局----缓冲区高度----改为9999,。再次执行,即可从1开始显示。如图。

s.jpg (15.01 KB, 下载次数: 19)

s.jpg
板凳
 楼主| 发表于 2012-7-19 16:07:18 | 只看该作者
/*下面程序是要在1~8里选4个数,9~15里选一个数,即15选5,前四个数小于9,后面9~15里选一个数。*/
#include <stdio.h>
int main()
{  
    int a,b,c,d,e,i=0;
    for(a=1;a<6;a++)
       for(b=a+1;b<7;b++)
           for(c=b+1;c<8;c++)
              for(d=c+1;d<9;d++)
                 for(e=9;e<16;e++)
                     {i++;
                       printf("%2d %2d %2d %2d %2d %5d\n",a,b,c,d,e,i);
                     }
        sleep(50000);
        return 0;
}

==============
刚刚经过修改,编译过了,(我真了不起!!!吼吼,偶先自恋一番,嘻嘻,C刚刚学了一个月,就编了个5重循环嵌套的程序。)
向各位大侠求助:为什么运行窗口只看到第192个数开头呢,前面的为什么看不到?
地板
 楼主| 发表于 2012-7-19 16:16:30 | 只看该作者
/*下面程序是要在1~8里选4个数,9~15里选一个数,即15选5,前四个数小于9,后面9~15里选一个数。*/
#include <stdio.h>
int main()
{  
    int a,b,c,d,e,i=0;
    for(a=1;a<6;a++)
       for(b=a+1;b<7;b++)
           for(c=b+1;c<8;c++)
              for(d=c+1;d<9;d++)
                 for(e=9;e<16;e++)
                     {i++;
                      if(i>=192) break;
                       printf("%2d %2d %2d %2d %2d   %d\n",a,b,c,d,e,i);
                     }
        sleep(50000);
        
}

我为了看到前面192个结果,就加了一行代码,嘻嘻。。。
我把return(0)这行代码删除了,好像没有关系,请问return(0)有什么功能?
5#
 楼主| 发表于 2012-7-19 16:20:15 | 只看该作者
我把return(0)这行代码删除了,好像没有关系,请问return(0)有什么功能?
=========
写错了,是 return 0,多了两圆括号。特此纠正!
6#
发表于 2012-7-19 22:44:09 | 只看该作者
天山雪 发表于 2012-7-19 16:20
我把return(0)这行代码删除了,好像没有关系,请问return(0)有什么功能?
=========
写错了,是 return 0 ...

作为主函数的int main()被定义为整型,执行时会返回值,正常执行返回0,也就是return 0;非正常运行会返回非零,系统会自动检查返回值以判断程序是否正确执行。
7#
 楼主| 发表于 2012-7-20 20:50:19 | 只看该作者
JokerC 发表于 2012-7-19 22:44
作为主函数的int main()被定义为整型,执行时会返回值,正常执行返回0,也就是return 0;非正常运行会返回 ...

谢谢
非常感谢你的热心解答。
8#
 楼主| 发表于 2012-7-20 23:23:02 | 只看该作者
/*下面程序是要在1~8里选4个数,9~15里选一个数,即15选5,前四个数小于9,后面9~15里选一个数。*/
#include <stdio.h>
int main()
{  
    int a,b,c,d,e,i=0;
    for(a=1;a<6;a++)
       for(b=a+1;b<7;b++)
           for(c=b+1;c<8;c++)
              for(d=c+1;d<9;d++)
                 for(e=9;e<16;e++)
                     {i++;
                       printf("%2d %2d %2d %2d %2d %5d\n",a,b,c,d,e,i);
                     }
        sleep(50000);
        return 0;
}

==============

向各位大侠求助:为什么运行窗口只看到第192个数开头呢,前面的为什么看不到?
9#
发表于 2012-7-22 12:57:05 | 只看该作者
天山雪 发表于 2012-7-20 23:23
/*下面程序是要在1~8里选4个数,9~15里选一个数,即15选5,前四个数小于9,后面9~15里选一个数。*/
#inclu ...

#include <stdio.h>
int main()
{  
     int a,b,c,d,e,i=0;
     for(a=1;a<6;a++)
     for(b=a+1;b<7;b++)
     for(c=b+1;c<8;c++)
     for(d=c+1;d<9;d++)
     for(e=9;e<16;e++)
      {
                printf("%2d %2d %2d %2d %2d \n",a,b,c,d,e);
        }
         sleep(50000);
         return 0;
}
多写了i++与%5d
10#
 楼主| 发表于 2012-7-22 15:37:03 | 只看该作者
13410046343 发表于 2012-7-22 12:57
#include
int main()
{  

i++是我为了计数用的
11#
 楼主| 发表于 2012-7-22 23:55:56 | 只看该作者
/*15选5之41格式表*/
#include <stdio.h>
int main()
{  
    int a,b,c,d,e,i=0,j=0,gs41b[524][5];  /*1~8中选4个数,9~15中选1个数*/
    for(a=1;a<6;a++)
       for(b=a+1;b<7;b++)
           for(c=b+1;c<8;c++)
              for(d=c+1;d<9;d++)
                 for(e=9;e<16;e++)
                 {                    
                     gs41b[i][0]=a;
                     gs41b[i][1]=b;
                     gs41b[i][2]=c;
                     gs41b[i][3]=d;
                     gs41b[i][4]=e;
                     i++;
                 }                     
    for(a=1;a<5;a++)   /*1~7中选4个数,第五个数独选8*/
       for(b=a+1;b<6;b++)
           for(c=b+1;c<7;c++)
              for(d=c+1;d<8;d++)
              {
                 gs41b[i][0]=a;
                 gs41b[i][1]=b;
                 gs41b[i][2]=c;
                 gs41b[i][3]=d;
                 gs41b[i][4]=8;
                 ++i;               
              }      
    for(i=0;i<524;i++)         
        for(j=0;j<5;j++)
        {
            if(j<4) printf("%d",gs41b[i][j]);
            else printf(" %-2d   ",gs41b[i][j]);                    
            if(i%7==0&&j==4) printf("\n");                              
        }      
    printf("\n");
    printf("\n");
    printf("电脑自动筛选出:%4d 个号码!\n",i);     
    sleep(500000);
    return 0;
}
12#
发表于 2012-7-23 13:56:11 | 只看该作者
天山雪 发表于 2012-7-22 15:37
i++是我为了计数用的

有没有不是一样吗?
13#
 楼主| 发表于 2012-7-23 15:18:43 | 只看该作者
JokerC 发表于 2012-7-19 15:53
对于楼主的问题,我们可以这么做:在运行程序弹出黑色窗口后,我们发现i的值从192开始,这是因为cmd命令行窗 ...

非常感谢,原来那个是cmd命令窗口啊!
14#
 楼主| 发表于 2012-7-23 15:20:25 | 只看该作者
13410046343 发表于 2012-7-23 13:56
有没有不是一样吗?

不一样,因为我不知道这样的组合有多少,加上去就一清二楚了。
15#
发表于 2012-9-2 21:16:57 | 只看该作者
return 0是函数返回,如果你的函数需要返回一个变量的值,就需要使用这条语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表