繁体   English   中英

这段代码的输出是什么? 在第 13 行中到底发生了什么?

[英]what will be output of this code? in line 13 what is really happening?

#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 个位置上的第一个一样然后在第一个位置,然后一直到第四个......

如果n == 5那么

StorageArr[n] = arr[k];

将始终将arr[k]分配给StorageArr[5] 这就是代码所说的,这就是它会做的事情(在一个工作程序中)。 我不确定您是从哪里想到它可能会分配给 StorageArr[0] 然后分配给 StorageArr[1] 等等。

你的代码有很多错误,仅举一个,看看上面的代码, k的值是多少? 在任何时候你都没有给它一个价值。 但是你到处都在使用它的价值。 这意味着你的整个程序都有未定义的行为,试图弄清楚它会做什么是毫无意义的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM