簡體   English   中英

在 c 程序中查找最大數

[英]Finding largest number in c program

簡而言之,輸入10個工資,計算提成,總帶回家,打印最高帶回家。 我能夠得到最高的數字,但輸入的數字,而不是帶回家的數字(我計算出來的)。 我想知道我是如何做到這一點的,因為我沒有存儲我正在計算的帶回家的價值? 這是我的問題嗎? 請看下面的代碼。

#include <stdio.h>
 
int main()
{
    int num[10];
    int i = 0;
    int largest;
    int com, totaltakehome, finalsalary;
         
    while(i < 10)
    {
        printf("Enter salesperson salary for week[%d]:", i + 1);
        scanf("%d", &num[i]);
        com = num[i] / 100 * 7;
        printf("Commision is %d\n", com);
        totaltakehome = 300 + com;
        printf("Total takehome is %d\n", totaltakehome);
        printf("\n");
    }

    largest = num[0];
    i = 0;
    while(i < 10)
    {
        if(num[i] > largest)
        {
            largest = num[i];
        }
        i++;
    }

    printf("\nHighest salary is : %d\n", largest);

    return 0;
}

由於不需要之前輸入的工資來計算...

  • 最大的佣金
  • 總收入

...您可以跳過num[10]數組。

  • 確實需要在循環中增加i i+1是一個不改變i值的表達式。 我建議為此使用for循環,它將i的聲明、條件( i < 10 )和增量很好地保存在一個地方。
  • 您應該檢查scanf的返回值。 如果你掃描件事,它應該返回1 ,否則它會失敗。
  • 保存循環中最大的佣金。
  • 初始化變量。
  • 添加到totaltakehome 您當前在每個循環中為其分配一個新值。

例子:

#include <stdio.h>

int main() {
    int largest = 0;       // initialized (and assuming this can't be negative)
    int totaltakehome = 0; // initialized

    for(int i = 0; i < 10; ++i) {  // loop with increment
        printf("Enter salesperson salary for week[%d]:", i + 1);

        int num;
        if(scanf("%d", &num) != 1) {   // check for success
            fprintf(stderr, "user error, aborting\n");
            return 1;
        }

        // an alternative commission forumla
        int com = num * 7 / 100; // perhaps a more fair commission

        printf("Commision is %d\n", com);

        // save this commission if it's the largest so far:
        if(com > largest) largest = com;

        // Add to `totaltakehome` - don't assign:
        totaltakehome += 300 + com;    // note: `+=`, not `=`

        printf("\n");
    }

    // print results after the loop:
    printf("Largest commision %d\n", largest);
    printf("Total takehome is %d\n", totaltakehome);
}

我們可以使用基本的 for 循環作為答案。

int old = arr[0];
for (i = 0; i < 10; i++) {
    if (arr[i] > old) old = arr[i];
}

return old;

首先我們創建一個運行十次的循環,或者我們也可以使用

sizeof(arr)/sizeof(arr[0])

對於未知的列表類型。 原諒我是手機。

然后我們檢查下一個數字是否大於我們以前已知的最大數字,如果是,則將其設置為最大的。 如果是這樣,我們將把它設置為我們最大的。 然后我們最終返回我們的值。 (這是一個 function 順便說一句)

暫無
暫無

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

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