我的任務是編寫一個程序,詢問用戶他/她想要輸入多少個整數。動態創建數組並接受用戶的數字並將它們放入 數組。將數組傳遞給函數以確定輸入的最小數字。打印 最小號碼。在適當或可能的地方使用指針符號。我在main下的輸出並不是我期望的
我覺得我掌握了數組和指針符號的傳遞(請隨時糾正我,因爲我總是渴望學習),但主函數下的輸出不是我所期望的,或者它可能是我應該期待什麼,並沒有意識到它。這裏是我迄今爲止的,但我堅持讓它輸出用戶輸入數組中的最小值。
#include "stdafx.h"
void CreateValues (int [], int);
int FindSmallest(int [], int);
int _tmain(int argc, _TCHAR* argv[])
{
int numValues = 0;
cout << "How many values would you like to enter?" << endl;
cin >> numValues;
int *pArray = new int[numValues];
CreateValues (pArray, numValues);
FindSmallest(pArray, numValues);
delete[] pArray;
int i = 0;
i = FindSmallest(pArray, sizeof(pArray)/sizeof(pArray[0]));
cout<<"The smallest number in the array is "<<(*pArray + i)<<endl;
system("pause");
return 0;
}
void CreateValues (int pArray[], int numValues)
{
for (int i = 0; i < numValues; i++)
{
cout << "Please enter value #" << i+1<< endl;
cin >> *(pArray+i);
}
}
int FindSmallest(int pArray[], int numValues)
{
int index = 0;
int x = sizeof(pArray);
for (int i = 0; i < numValues; i++)
{
if (pArray[i] < pArray[index])
{
index = i;
}
}
return index;
}
任何可以提供的幫助將不勝感激。乾杯!!
明顯的是你調用'FindSmallest()'而不保存結果,然後刪除數組,然後再次調用FindSmallest()(在現在被刪除的數組上)。你可能應該堅持數組,而不是嘗試做指針運算... – John3136
你的輸入和輸出是什麼?你期望什麼? –
'sizeof(pArray)/ sizeof(pArray [0])'也是錯誤的......你不能將它應用於指針(因爲第一個'sizeof'返回指針的大小,而不是指向的大小數據,並且使用'sizeof'沒有修正,因爲大小隻在運行時設置)。繼續使用'numValues'。 –