啊哈磊_编程从这里起步

标题: 15选5程序哪里错了? [打印本页]

作者: 天山雪    时间: 2012-7-19 15:53
标题: 15选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 号码组合。

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

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

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

s.jpg

作者: 天山雪    时间: 2012-7-19 16:07
/*下面程序是要在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
/*下面程序是要在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)有什么功能?
作者: 天山雪    时间: 2012-7-19 16:20
我把return(0)这行代码删除了,好像没有关系,请问return(0)有什么功能?
=========
写错了,是 return 0,多了两圆括号。特此纠正!
作者: JokerC    时间: 2012-7-19 22:44
天山雪 发表于 2012-7-19 16:20
我把return(0)这行代码删除了,好像没有关系,请问return(0)有什么功能?
=========
写错了,是 return 0 ...

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

谢谢
非常感谢你的热心解答。
作者: 天山雪    时间: 2012-7-20 23:23
/*下面程序是要在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个数开头呢,前面的为什么看不到?
作者: 13410046343    时间: 2012-7-22 12:57
天山雪 发表于 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
作者: 天山雪    时间: 2012-7-22 15:37
13410046343 发表于 2012-7-22 12:57
#include
int main()
{  

i++是我为了计数用的
作者: 天山雪    时间: 2012-7-22 23:55
/*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;
}

作者: 13410046343    时间: 2012-7-23 13:56
天山雪 发表于 2012-7-22 15:37
i++是我为了计数用的

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

非常感谢,原来那个是cmd命令窗口啊!
作者: 天山雪    时间: 2012-7-23 15:20
13410046343 发表于 2012-7-23 13:56
有没有不是一样吗?

不一样,因为我不知道这样的组合有多少,加上去就一清二楚了。
作者: jack9603301    时间: 2012-9-2 21:16
return 0是函数返回,如果你的函数需要返回一个变量的值,就需要使用这条语句
作者: jack9603301    时间: 2012-9-2 21:17
补充一下,return 的语法是return 返回值;




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2