此代码将输出什么?在第13行中,实际情况是什么?

时间:2019-02-19 11:10:07

标签: c++ c++11

#include <iostream>
#include <string.h>
using namespace std;
int main() {

    int num , n , n1 , k , x = 0;
    cout << "Enter the no. of vertices: " ;
    cin >> n;
    char StorageArr[n];
    char arr[k];
     for(k = 0; k< n ; k++){
       cout<< "arr[" << k << "] : ";
       cin >> arr[k] ;
       StorageArr[n] = arr[k];
    }

    int len = sizeof(StorageArr)/ sizeof(StorageArr[0]);

    cout << "The length of the array is : " << len << endl;
     for(int i= 0 ; i< len ; i++){
       for(int j = 0; j< len ; j++ ){
            cout<<"\n\t" <<"Element at " << StorageArr[i] <<        StorageArr[j] << ": "  ;
        cin >> num;
        if(i==j && num == 0){
            x++;
        }
    }
}

if(x == len){
    cout<<"This  is a complete graph...";
}else{
    cout<< "This is not a complete graph..." ;
}

return 0;

}

好的,所以StorageArr [n] = arr [k]如何工作。我的意思是,如果我们分配n = 5,那么所有arr [k]的值都将被分配到同一位置StorageArr [5]或将arr [k]的值存储在StorageArr中,就像第0个位置然后在第一个位置上,依此类推,直到第四个位置。

1 个答案:

答案 0 :(得分:0)

如果n == 5,那么

StorageArr[n] = arr[k];

将始终将arr[k]分配给StorageArr[5]。这就是代码所说的,这就是它将要执行的工作(在运行的程序中)。我不确定您是从哪里想到将其分配给StorageArr [0],然后分配给StorageArr [1],依此类推。

您的代码中有很多错误,仅举一个,请看上面的代码,k的值是什么?您绝对不会给它一个价值。但是您到处都使用它的价值。这意味着您的整个程序都具有不确定的行为,并且试图弄清楚它将做什么是毫无意义的。

修正错误,您的程序将以更可预测的方式运行。