簡體   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