首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c程序中查找最大数

在c程序中查找最大数
EN

Stack Overflow用户
提问于 2021-11-18 14:27:45
回答 2查看 489关注 0票数 2

简短的是输入10个工资,计算佣金,整体带回家,并打印最高的外卖。我可以得到最高的数字,但输入的数字,而不是外卖(我计算)。我想知道我是如何做到这一点的,因为我没有存储我正在计算的带回家值。这是我的问题吗?请参阅下面的代码。

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-18 14:53:04

由于以前输入的工资不需要计算.

  • 最大的佣金
  • 总外卖

..。您可以跳过num[10]数组。

  • 您确实需要在循环中增加ii+1是一个不改变i值的表达式。为此,我建议使用一个for循环,将i、条件(i < 10)和增量的声明很好地保存在一个地方。
  • 应该检查scanf的返回值。如果你扫描一件东西,它应该返回1,否则就失败了。
  • 保存了1中最大的佣金给totaltakehome。您目前在每个循环中都为它分配了一个新值。

示例:

代码语言:javascript
复制
#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);
}
票数 4
EN

Stack Overflow用户

发布于 2021-11-18 14:46:51

我们可以使用一个基本的for循环作为答案。

代码语言:javascript
复制
int old = arr[0];
for (i = 0; i < 10; i++) {
    if (arr[i] > old) old = arr[i];
}

return old;

首先,我们创建一个循环,运行十次,或者我们也可以使用

代码语言:javascript
复制
sizeof(arr)/sizeof(arr[0])

对于未知的列表大小。原谅我,因为我在移动。

然后,我们检查下一个数字是否大于我们已知的旧的最大的,如果是的话,把它设为最大。如果是这样的话,我们将把它定为我们最大的。然后我们最终返回我们的价值。(这是一个函数)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70021589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档