簡體   English   中英

我無法使用 for 循環在這個 c 程序中獲得基本概念

[英]I am unable to get the basic concept in this c program using for loop

該程序向用戶詢問一些元素,結果告訴用戶每個元素的出現頻率。 我在代碼中使用內聯文本標記了問號,請幫助我,我無法在這里理解這個概念。

#include <stdio.h>

int main()
{
    int arr[100], freq[100];
    int size, i, j, count;

    printf("Enter size of array: ");
    scanf("%d", &size);

    printf("Enter elements in array: ");
    for(i=0; i<size; i++)
    {
        scanf("%d", &arr[i]);
        freq[i] = -1; //?? Why is freq said to be -1???

    }

    for(i=0; i<size; i++)
    {
        count=1;
        for(j=i+1; j<size; j++)
        {
            if(arr[i]==arr[j])
            {
                count++;

                freq[j] = 0; //?? How is it checking if some elements going to same as other?? 
            }
        }

        if(freq[i] != 0)
        {
            freq[i] = count;
        }
    }

    printf("\nFrequency of all elements of array : \n");
    for(i=0; i<size; i++)
    {
        if(freq[i] != 0)
        {
            printf("%d occurs %d times\n", arr[i], freq[i]);
        }
    }

    return 0;
}

請幫我。

 freq[i] = -1;

在這里,您可以分配除 0 以外的任何值來覆蓋數組中存在的垃圾值。

為什么不能取0?

if(freq[i] != 0)
    {
        freq[i] = count;
    }

在這里,您添加了這種條件,其中freq[i]僅在不為 0 時才會更新。這是為了確保您注意每個唯一元素第一次出現時的頻率,以及該特定元素freq[i]出現的 rest freq[i]為 0 以避免在 output 中多次打印。

 freq[j] = 0;

 if(freq[i] != 0)
    {
        printf("%d occurs %d times\n", arr[i], freq[i]);
    }

沒有上述2個輸入條件,

總元素 = 5,元素 = {1,2,2,1,5}

Output:
1 發生 2 次
2 出現 2 次
2 發生 1 次
1 出現 1 次
5 出現 1 次

那不是您想要的 output。

所以總結起來很簡單。 如果元素第一次出現在第 i 個索引處,則僅將 update freq[i]標記為其出現,如果相同元素再次出現在任何第 j 個索引處,則將freq[j]設置為 0 以進行打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM