JIENANYA
2021-10-10 11:08
采纳率: 80%
浏览 18

全局变量和传地址的形式参数

1.遇到的问题和现象描述:
我习惯用局部变量来解决问题,所以起初我把bool型的数组定义在main函数中,然后在调用赋值函数(tu(k))时加上形参tu(int k, bool tu[][], int n, int n);然后出错了……

img


显示:declaration of 'a' as multidimensional array must have bounds for all dimensions except the first(声明'tu'为多维数组必须对除第一个维度外的所有维度有边界 )

img


然后我又删除了一个参数:
tu(int k, bool a[][],int n)还是不行。
显示:[Error] invalid types 'bool[int]' for array subscript(数组下标哦bool[int]无效)

img


(我用a代替tu数组)

2.我想问的问题是:(1)这道题必须将tu数组设为全局变量吗?如果不是该怎么去让他传入参数呢?
(2)数组a[2][2] = true !? 那第一部分第四个怎么变为'Y'(我的源代码在此情况下无法正确输出'Y')。我在这里将其分别设为 a[0][0] = a[0][1] = a[1][0] = true;
a[1][1] = false;
3.下面是我仿照作者你的代码写的代码

#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
#define MAXSIZE 10000
bool a[MAXSIZE][MAXSIZE];//初始化数组(10阶) 
void InitArray(int k);
int main()
{
    int t;//试验次数 
    int k;//logo阶数
    //第一部分初始化赋值 
    a[0][0] = a[0][1] = a[1][0] = true; 
    a[1][1] = false;
    InitArray(2);//数组赋值(10阶) 
    int i, j;
//    cout<<"请输入你想要实验的次数:";
    cin>>t;
    while(t){
//        cout<<"请输入logo的阶数:";
        cin>>k;
        //直接输出对应位值的元素 
        for (i=0; i<pow(2,k); i++){
            for (j=0; j<pow(2,k); j++){
                if (a[i][j]) cout<<'S';
                else cout<<'Y';
            }
            cout<<"\n";
        }
        t--;
    }
}
//数组赋值(<10阶全部赋值) 
void InitArray(int k)//n为阶数          //思想:将其分为四个部分,根据i,j,k变化填充。 
{
    if (k==10) return ;
    int n = pow(2,k);
    int m = n/2;
    int i, j;
    //第二部分 
    for (i=0; i<m; i++){
        for (j=m; j<n; j++){
            a[i][j] = a[i][j-m];
        }
    } 
    //第三部分 
    for (i=m; i<n; i++){
        for (j=0; j<m; j++){
            a[i][j] = a[i-m][j];
        }
    }
    //第四部分 
    for (i=m; i<n; i++){
        for (j=m; j<n; j++){
            a[i][j] = (!a[i][j-m]);//反转 
        }
    } 
    InitArray(k+1);
}

  • 好问题 提建议
  • 收藏

1条回答 默认 最新

  • CSDN专家-Time 2021-10-10 11:14
    已采纳

    你可以把数组当作全局变量处理。
    如果想作为形参处理。需要定义边界。 bool arrs[][10]这样

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题