简短的是输入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;
}发布于 2021-11-18 14:53:04
由于以前输入的工资不需要计算.
..。您可以跳过num[10]数组。
i。i+1是一个不改变i值的表达式。为此,我建议使用一个for循环,将i、条件(i < 10)和增量的声明很好地保存在一个地方。scanf的返回值。如果你扫描一件东西,它应该返回1,否则就失败了。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);
}发布于 2021-11-18 14:46:51
我们可以使用一个基本的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])对于未知的列表大小。原谅我,因为我在移动。
然后,我们检查下一个数字是否大于我们已知的旧的最大的,如果是的话,把它设为最大。如果是这样的话,我们将把它定为我们最大的。然后我们最终返回我们的价值。(这是一个函数)
https://stackoverflow.com/questions/70021589
复制相似问题