鱼C论坛

 找回密码
 立即注册
查看: 1413|回复: 2

为什么n大于3的时候基本就没办法出结果

[复制链接]
发表于 2021-10-9 19:11:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <time.h>
#include <stdlib.h>


int main()
{
        time_t t;
        srand(unsigned(time(&t)));
        int n,max,i=0,j,k,temp,example,example1,flag=1,duijiaoxian;
        printf("请输入一个奇数:");
        scanf("%d",&n);
        max=n*n;
        int shuzu[n][n],shuju[max];
        while(1)
        {
                i=0;
                while(1)              //创建一个一维随机数组,其中里面的数不大于n*n且不重复 
          {
                if(i==max)
                break;
                else if(i==0)
                {
                        temp=rand()%max+1;
                        shuju[i]=temp;
                        i=i+1;
                }
                else
                {
                        temp=rand()%max+1;
                        for(j=0;j<=i-1;j++)
                        {
                                if(shuju[j]==temp)
                                {
                                        i=i-1;
                                        break;
                                }
                                shuju[i]=temp;
                        }
                        i++;
                }
           }
          k=0;
          example=0;
          for(i=0;i<n;i++)       //将一维随机数组里的数放进二维数组里面 
          {
                  for(j=0;j<n;j++)
                  {
                          shuzu[i][j]=shuju[k];
                          k=k+1;
                }
          }
          for(i=0;i<=0;i++)      //将二维数组里面的第一行的数相加得到一个数,作为与其他行与列的和的比较对象 
          {
                  for(j=0;j<n;j++) 
                  {
                          example=example+shuzu[i][j];
                }
          }
          for(i=0;i<n;i++)       //每一行的和比较 
          {
                  example1=0;
                  for(j=0;j<n;j++)
                  {
                          example1=example1+shuzu[i][j];
                }
                if(example1!=example)
                {
                        flag=0;
                        break;
                }
          }
          for(i=0;i<n;i++)     //每一列的和比较 
          {
                  example1=0;
                  for(j=0;j<n;j++)
                  {
                          example1=example1+shuzu[j][i];
                }
                if(example1!=example)
                {
                        flag=0;
                        break;
                }
          }
          j=0;
          duijiaoxian=0;
          for(i=0;i<n;i++)      //对角线的和的比较 
          {
                  duijiaoxian=duijiaoxian+shuzu[i][j];
                  j=j+1;
          }
          if(duijiaoxian!=example)
          {
                  flag=0;
          }
          if(flag==1)       //标志位为1则跳出循环 
          {
                  break;
          }
          else
          {
                  flag=1;
          }
        }
        for(i=0;i<n;i++)     // 输出符合要求的二维数组 
        {
                for(j=0;j<n;j++)
                {
                        printf("%d ",shuzu[i][j]);
                }
                printf("\n");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-9 19:33:26 | 显示全部楼层
这个程序是创建一个魔法矩阵的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-9 20:07:25 | 显示全部楼层
不清楚你的题目要求,如果是想输出随机 n*n 矩阵(n 为奇数)代码如下:希望对你有帮助
#include <stdio.h>
#include <stdlib.h>

int main(){
    int n;
    printf("请输入一个奇数:");
    scanf("%d", &n);
    int arr[n*n];
    int res[n][n];
    for(int i=1; i<=(n*n); i++) arr[i] = i;
    for(int i=0; i<(n*n); i++){
        int temp = arr[i];
        int x = rand()%(n*n);
        arr[i] = arr[x];
        arr[x] = temp;
    }
    int k = 0;
    for(int i=0; i<n; i++) for(int j=0; j<n; j++) res[i][j] = arr[k++];
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++) printf("%2d ", res[i][j]);
        printf("\n");
    }
    return 0;
}
请输入一个奇数:5
 8  7  6 15 23 
10  1  0 24 13 
12 20  3 14 21 
16 11  4  9  2 
19 22  5 18 17 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 13:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表