| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 948 人关注过本帖
标题:【求助】帮朋友编了一个C程序,遇到点问题。
只看楼主 加入收藏
axaxzzzzzz
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-5-8
结帖率:85.71%
收藏
已结贴  问题点数:10 回复次数:11 
【求助】帮朋友编了一个C程序,遇到点问题。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
       int i;
       int temp;
       int n=0;
       int x,y,z;
       time_t t;
       srand((unsigned)time(NULL));
       while(n<=1000)
       {
       x=rand()%6+1;
       y=rand()%6+1;
       z=rand()%6+1;
       if(x>y)
   {
      temp=x;
      x=y;   
      y=temp;
   }
       if(y>z)
   {
      temp=y;
      y=z;   
      z=temp;
   }
       if(x>z)
   {
      temp=x;
      x=z;   
      z=temp;
   }
       if(x>y)
   {
      temp=x;
      x=y;   
      y=temp;
   }
       if(y>z)
   {
      temp=y;
      y=z;   
      z=temp;
   }
       if(x>z)
   {
      temp=x;
      x=z;   
      z=temp;
   }
       printf("%d,%d,%d\n", x,y,z);
       n++;
       }
       return 0;
}

此程序为x,y,z均从1-6随机选择,从大到小排列后出1000组数据并输出,原意是给定三组数据 如: 1,2,6 1,2,3 4,4,6
如果从大到小排列好后,连续随机按顺序出现的是如上三组数据,此后随机1000组出来的数据输出。我该怎么编辑指令,用什么指令能做出来,请教高手解决,谢谢。
搜索更多相关主题的帖子: include 
2013-05-09 18:11
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:0 
不懂你想问什么!

练就一身本领,只为笑傲江湖!
2013-05-09 18:55
axaxzzzzzz
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-5-8
收藏
得分:0 
回复 2楼 笑傲
真正的题目是给定三组数据 如: 1,2,6 1,2,3 4,4,6
如果从大到小排列好后,连续随机按顺序出现的是如上三组数据,此后随机1000组出来的数据输出。我该怎么编辑指令,用上述指令稍加改动,怎么改,就是我要做这个的话,怎么从刚才的指令上改动一下到这个题目
2013-05-09 18:59
axaxzzzzzz
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-5-8
收藏
得分:0 
就是x,y,z随机1000组会出现n种不同可能性,如果前三组出现的是给定三组数据 如: 1,2,6 1,2,3 4,4,6 此后随机1000组出来的数据输出
2013-05-09 19:03
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

typedef struct
{
    int a , b , c;
}num;

num p[3] = {{1 , 2 , 6} , {1 , 2 , 3} , {4 , 4 , 6}};

num fun()
{
    num k;
    k.a = rand()%6 + 1;
    k.b = rand()%6 + 1;
    k.c = rand()%6 + 1;
    return k;
}

void sort(num s)
{
    int temp;
    if(s.a > s.b)
    {
      temp=s.a;
      s.a=s.b;   
      s.b=temp;
   }
    if(s.b>s.c)
    {
      temp=s.b;
      s.b=s.c;   
      s.c=temp;
    }
    if(s.a>s.c)
    {
      temp=s.a;
      s.a=s.c;   
      s.c=temp;
    }
}

int main()
{
    int n = 0;
    srand((unsigned)time(NULL));
    while(1)
    {
        num temp;
        temp = fun();
        sort(temp);
        if(temp.a == p[0].a && temp.b == p[0].b && temp.c == p[0].c)
        {
            temp = fun();
            sort(temp);
            if(temp.a == p[1].a && temp.b == p[1].b && temp.c == p[1].c)
            {
                temp = fun();
                sort(temp);
                if(temp.a == p[2].a && temp.b == p[2].b && temp.c == p[2].c)
                {
                    while(n < 1000)
                    {
                        temp = fun();
                        sort(temp);
                        printf("%d %d %d\n" , temp.a , temp.b , temp.c);
                        n++;
                    }
                }
            }
        }
    }
    return 0;
}

写的很烂,不过应该是可以的;

练就一身本领,只为笑傲江湖!
2013-05-09 20:18
axaxzzzzzz
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-5-8
收藏
得分:0 
这个可以运行,不愧是高手,的确写的很好,不过这个代码能不能不做特例,就是{1 , 2 , 6} , {1 , 2 , 3} , {4 , 4 , 6}只作为一个例子,执行以后让执行者自己输入三组数值,而不是就指定{1 , 2 , 6} , {1 , 2 , 3} , {4 , 4 , 6}。

[ 本帖最后由 axaxzzzzzz 于 2013-5-9 20:55 编辑 ]
2013-05-09 20:46
axaxzzzzzz
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-5-8
收藏
得分:0 
还有为什么这个代码输出不是从小到大的排列,从小到大排列完后,如果匹配输出后1000组应该是还是从小到大的啊!

[ 本帖最后由 axaxzzzzzz 于 2013-5-9 20:57 编辑 ]
2013-05-09 20:50
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:0 
可以啊,你可以在主函数中一开始就对结构体数组赋值就可以;

练就一身本领,只为笑傲江湖!
2013-05-09 22:18
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

typedef struct
{
    int a , b , c;
}num;

num p[3] = {{1 , 2 , 6} , {1 , 2 , 3} , {4 , 4 , 6}};

num fun()
{
    num k;
    k.a = rand()%6 + 1;
    k.b = rand()%6 + 1;
    k.c = rand()%6 + 1;
    int temp;
    if(k.a > k.b)
    {
      temp=k.a;
      k.a=k.b;   
      k.b=temp;
   }
    if(k.a>k.c)
    {
      temp=k.a;
      k.a=k.c;   
      k.c=temp;
    }
    if(k.b>k.c)
    {
      temp=k.b;
      k.b=k.c;   
      k.c=temp;
    }
    
    return k;
}


int main()
{
    int n = 0;
    srand((unsigned)time(NULL));
    while(1)
    {
        num temp;
        temp = fun();
        if(temp.a == p[0].a && temp.b == p[0].b && temp.c == p[0].c)
        {
            temp = fun();
            if(temp.a == p[1].a && temp.b == p[1].b && temp.c == p[1].c)
            {
                temp = fun();
                if(temp.a == p[2].a && temp.b == p[2].b && temp.c == p[2].c)
                {
                    while(n < 1000)
                    {
                        temp = fun();
                        printf("%d %d %d\n" , temp.a , temp.b , temp.c);
                        n++;
                    }
                }
            }
        }
    }
    return 0;
}

练就一身本领,只为笑傲江湖!
2013-05-09 22:54
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:10 
或者这样:
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

typedef struct
{
    int a , b , c;
}num;

num p[3] = {{1 , 2 , 6} , {1 , 2 , 3} , {4 , 4 , 6}};

num fun()
{
    num k;
    k.a = rand()%6 + 1;
    k.b = rand()%6 + 1;
    k.c = rand()%6 + 1;
    return k;
}

num sort(num s)
{
    int temp;
    if(s.a > s.b)
    {
      temp=s.a;
      s.a=s.b;   
      s.b=temp;
   }
    if(s.a>s.c)
    {
      temp=s.a;
      s.a=s.c;   
      s.c=temp;
    }
    if(s.b>s.c)
    {
      temp=s.b;
      s.b=s.c;   
      s.c=temp;
    }
    return s;
}

int main()
{
    int n = 0;
    srand((unsigned)time(NULL));
    while(1)
    {
        num temp;
        temp = fun();
        temp = sort(temp);
        if(temp.a == p[0].a && temp.b == p[0].b && temp.c == p[0].c)
        {
            temp = fun();
            temp = sort(temp);
            if(temp.a == p[1].a && temp.b == p[1].b && temp.c == p[1].c)
            {
                temp = fun();
                temp = sort(temp);
                if(temp.a == p[2].a && temp.b == p[2].b && temp.c == p[2].c)
                {
                    while(n < 1000)
                    {
                        temp = fun();
                        temp = sort(temp);
                        printf("%d %d %d\n" , temp.a , temp.b , temp.c);
                        n++;
                    }
                }
            }
        }
    }
    return 0;
}

总是感觉写的很烂,就这样吧,我还要去写作业了,

练就一身本领,只为笑傲江湖!
2013-05-09 22:58
快速回复:【求助】帮朋友编了一个C程序,遇到点问题。
数据加载中...
 
   



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

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