爱丁堡骄傲的悲剧啊表达 2022-12-23 00:19 采纳率: 100%
浏览 26
已结题

关于#一维数组#的问题,如何解决?

一维数组变二维

能运行,但是摇不出号了
下面是原一维,后面是我改写的二维

| 表头 |
| ------ |
| 单元格 |
| 单元格 |
| 单元格 |

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define random(x) (rand()%x+1)
#define BALL_TOTAL_CNT 7
int isExisting(int red,char ballNum[]);
int rank1(char ballArray[]);
int rank2(char ballArray[]);
int ballGrplottery(char ballArray[],int m);
int main()
{

    int i,n,j,m;
    printf("获取注数:");
    scanf("%d",&n);
    printf("0.升序排列 1.降序排列\n请输入排序方式:");
    scanf("%d",&m);
    char ballArray[BALL_TOTAL_CNT]={0};
    srand((unsigned)time(NULL));
    printf("摇号结果为红球\t\t\t\t\t\t蓝球是\n");
    for(j=1;j<=n;j++)
    {
        printf("第%d注号码:",j);
        ballGrplottery(ballArray,m);

    for(i=0; i<BALL_TOTAL_CNT-1; i++)
         printf("%d\t",ballArray[i]);

    ballArray[i]=random(16);
         printf("%d",ballArray[6]);

          printf("\n");
    }
    return 0;
}

int ballGrplottery(char ballArray[],int m)
{
    int i;
     for(i=0; i<BALL_TOTAL_CNT-1; i++)
    {
        int f=0;
        int n = random(33);
         f=isExisting(n,ballArray);

        if(f==1)
            i--;

        else
           ballArray[i]=n;
    }
    if(m==0)
    {rank1(ballArray); }
   else
   {rank2(ballArray);}

   return 0;
}
int isExisting(int n,char ballNum[])//查重
{
    int i;

    if(n>33 || n<0)
        return -1;

    for(i=0;i<6;i++)
    {
        if(n==ballNum[i])
            {
                return 1;
            }
    }
    return 0;

}

int rank1(char ballArray[])//从小到大排序
{
    int i,j,o;
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
        {
            if(ballArray[i]>ballArray[j])
            {
                o=ballArray[i];
                ballArray[i]=ballArray[j];
                ballArray[j]=o;
            }
        }
    }
    return 0;
}


int rank2(char ballArray[])//从大到小排序
{
    int i,j,o;
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
        {
            if(ballArray[i]<ballArray[j])
            {
                o=ballArray[i];
                ballArray[i]=ballArray[j];
                ballArray[j]=o;
            }
        }
    }
    return 0;
}
//我改写的二维
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define random(x) (rand()%x+1)
int isExisting(int red,char ballNum[][7]);
int rank1(char ballArray[][7]);
int rank2(char ballArray[][7]);
int ballGrplottery(char ballArray[][7],int m);
int x;
int main()
{

    int i,j,m;
    printf("获取注数:");
    scanf("%d",&x);
    printf("0.升序排列 1.降序排列\n请输入排序方式:");
    scanf("%d",&m);
    char ballArray[x][7];
    srand((unsigned)time(NULL));
    printf("摇号结果为红球\t\t\t\t\t\t蓝球是\n");
    for(j=1;j<=x;j++)
    {
        printf("第%d注号码:",j);
        ballGrplottery(ballArray[j][7],m);

    for(i=0; i<6; i++)
         printf("%d\t",ballArray[j][i]);

    ballArray[j][6]=random(16);
         printf("%d",ballArray[6]);

          printf("\n");


    return 0;
}
}

int ballGrplottery(char ballArray[][7],int m)
{
    int i;
     for(i=0; i<6; i++)
    {
        int f=0;
        int n = random(33);
         f=isExisting(n,ballArray);

        if(f==1)
            i--;

        else
           ballArray[i][7]=n;
    }
    if(m==0)
    {rank1(ballArray); }
   else
   {rank2(ballArray);}

   return 0;
}
int isExisting(int n,char ballNum[][7])//查重
{
    int i;

    if(n>33 || n<0)
        return -1;

    for(i=0;i<6;i++)
    {
        if(n==ballNum[n][i])
            {
                return 1;
            }
    }
    return 0;

}

int rank1(char ballArray[][7])
{
     int i,j,o;
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
        {
            if(ballArray[x][i]>ballArray[x][j])
            {
                o=ballArray[x][i];
                ballArray[x][i]=ballArray[x][j];
                ballArray[x][j]=o;
            }
        }
    }
    return 0;
}



int rank2(char ballArray[][7])//从大到小排序
{
     int i,j,o;
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
        {
            if(ballArray[x][i]<ballArray[x][j])
            {
                o=ballArray[x][i];
                ballArray[x][i]=ballArray[x][j];
                ballArray[x][j]=o;
            }
        }
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 於黾 2022-12-23 08:18
    关注

    1.你原来的BALL_TOTAL_CNT是个define,它是在编译阶段被替换成7的
    而你改写之后的x是个变量,除非IDE支持C99,否则不可以用变量作为数组长度
    2.你原来写ballGrplottery(ballArray,m);
    你现在写ballGrplottery(ballArray[j][7],m);
    你这传入的是数组里一个数,不是一维数组啊,类型都变了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 12月23日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改