我基本上是想列印出在此代碼中為陣列輸入了多少個值(如果他們輸入 10 個數字,我想列印索引:0、1、2、3、4、5、6、7、8 , 9 以及為陣列值獲取用戶輸入并以類似表格的方式在其索引旁邊列印這些值)。我將如何去做,這段代碼有什么問題嗎?
#include <stdio.h>
#include <stdlib.h>
int arr_1 (int ar[], int size);
int main()
{
double sentinel[20];
printf("Hello User!\n\nEnter up to 20 values, and type -1 when you are finished: ");
for (int i = 0; i < 20; i) {
scanf("%lf", &sentinel[i]);
}
for (int i = 0; i < 20; i) {
printf("%f\n", sentinel[i]);
}
printf("\n%lu\n", sizeof(sentinel[20]));
}
int arr_1 (int ar[], int size)
{
return 0;
}
uj5u.com熱心網友回復:
首先,您需要檢查用戶是否實際輸入了您期望獲得的值(在您的情況下為 20)。該scanf()函式在其回傳值中告訴您它是否確實設法從輸入中決議了另一個數字。
然后,當輸入中沒有更多可用數字時,您需要退出回圈。
最后,您需要跟蹤您在回圈中的進展情況。一種方法是在回圈外的i范圍內定義回圈索引 ( ) 。這樣當回圈最終被清除時它不會丟失給你。
一旦你有了最后一個i值(假設你將它分配給一個像這樣的新變數, int num_input_elements = i 1)然后你知道你的索引是0, 1,... num_input_elements - 1。您可以輕松地回圈遍歷這些內容,實際上是列印您的回圈索引。
補充說明:
- 不要到處使用“幻數”20。在第一次使用之前使用前處理器定義,例如像
#define MAX_NUM_ELEMENTS 20. sentinel是陣列的一個令人困惑的名稱,因為哨兵在編程中通常意味著其他東西。sizeof(sentinel[20])總是sizeof(double)......不是您在輸入中獲得的元素數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346648.html
