求助

qq_46091485 2021-01-05 02:10:57
如何将输入一个数改为输入多个奇数以0为结束符然后输出奇数幻方 #include<iostream> using namespace std; int main() { int k; cout << "你希望得到的幻方阶数是(<=99):" << endl; cin >> k; int num[99][99] = { 0 }; int m = 0; int n = (k-1)/2; num[0][(k-1)/2] = 1; for (int i = 2; i <= k*k; i++) { m--; n++; if (m == -1 && n != k)//判上 { m = m + k; num[m][n] = i; } else if (n == k && m != -1)//判右 { n = n - k; num[m][n] = i; } else if (m == -1 && n == k)//判右上顶角 { m = m + 2; n = n - 1; num[m][n] = i; } else if (num[m][n] != 0)//判右上有数 { m = m + 2; n = n - 1; num[m][n] = i; } else//通性右上 { num[m][n] = i; } } for (m = 0; m <k; m++)//输出 { for (n = 0; n <k; n++) { cout << num[m][n] << "\t"; } cout << endl; }
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
qq_33487700 2021-01-06
  • 打赏
  • 举报
回复
与其用让人看不懂的文字表达你的问题,还不如举几个例子。或许我的语文不够好吧,竟然读不懂你提出的问题的意思。
  • 打赏
  • 举报
回复
输入多个用循环判断即可:while((cin >> k)!=0){生成代码}
赵4老师 2021-01-06
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
int main() {
    int k;
    cout << "你希望得到的幻方阶数是(空格间隔的>=1个<=99的奇数,最后以0结束):" << endl;
    while (1) {
        cin >> k;
        if (k==0) break;
        int num[99][99] = { 0 };
        int m = 0;
        int n = (k-1)/2;
        num[0][(k-1)/2] = 1;
        for (int i = 2; i <= k*k; i++) {
            m--;
            n++;
            if (m == -1 && n != k)//判上
            {
                m = m + k;
                num[m][n] = i;
            } else if (n == k && m != -1)//判右
            {
                n = n - k;
                num[m][n] = i;
            } else if (m == -1 && n == k)//判右上顶角
            {
                m = m + 2;
                n = n - 1;
                num[m][n] = i;
            } else if (num[m][n] != 0)//判右上有数
            {
                m = m + 2;
                n = n - 1;
                num[m][n] = i;
            } else//通性右上
            {
                num[m][n] = i;
            }
        }

        for (m = 0; m <k; m++)//输出
        {
            for (n = 0; n <k; n++) {
                cout << num[m][n] << "\t";
            }
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}
//提示:你希望得到的幻方阶数是(空格间隔的>=1个<=99的奇数,最后以0结束):
//输入:3 5 0
//输出:
//8       1       6
//3       5       7
//4       9       2
//
//17      24      1       8       15
//23      5       7       14      16
//4       6       13      20      22
//10      12      19      21      3
//11      18      25      2       9
//
//

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧