这是一个简单的程序,我有一个任务要做。
- 向用户询问一个数字,您可以假设该数字为1或更大
- 按3秒计数,打印数字从1到用户编号;例如,高达15:1,4,7,10,13 o在一行打印数字 o另外,找到这些数字的总和并在下一行打印,本例中为35
- 在1个程序中使用while循环解决,然后再使用for循环解决
这是我的代码
#include<stdio.h>
int main(){
int number;
int i = 1;
int sum = 0;
printf("Please enter a number greater than 1: ");
scanf("%d", &number);
while(i < number){
printf("%d ", i);
i+=3;
sum = sum + i;
}
printf("\nThe sum of these numbers is: %d\n", sum);
return 0;
}
这是示例输出:
请输入大于1:15的数字
1 4 7 10 13
这些数字的总和是:50
我不能为我的生活弄清楚为什么数字(15)被添加到总和。输入15被添加到1,4,7,10和13的总和。 在这个程序中,我的数字是多少?
对不起,如果这不是很有意义的话。任何帮助表示赞赏。我想了解我做错了什么。谢谢。
答案 0 :(得分:6)
在将i
添加到总和之前,您需要递增i
!如果每个数字都增加了3,那么在这种情况下你的总误差将加起来为15。
确保只有在每次迭代中使用它后才增加while(i < number){
printf("%d ", i);
sum = sum + i;
i+=3;
}
:
function Add-TempLocalAdmin {
[CmdletBinding()]
param(
[Parameter(Position=0, ValueFromPipeline=$true, Mandatory=$true)]
[string[]]$ComputerName,
[Parameter(Position=1, Mandatory=$true)]
[string]$Trustee,
[Parameter(Mandatory=$true)]
[string]$Requester,
[Parameter(Mandatory=$true)]
[string]$ServiceNowCR,
[Parameter(Mandatory=$true)]
[datetime]$StartDate = Select-Date,
[Parameter(Mandatory=$true)]
[datetime]$EndDate = Select-Date,
[Parameter(Mandatory=$true)]
[string]$Grantor = $env:USERNAME
)
Write-Host $ComputerName $Trustee $Requester $ServiceNowCR $StartDate $EndDate $grantor
}
答案 1 :(得分:3)
你没有从
获得50分4 + 7 + 10 + 13 + 16
相反,它是
(1 + 3) + (4 + 3) + (7 + 3) + (10 + 3) + (13 + 3)"
与
相同(1 + 4 + 7 + 10 + 13 + (3+3+3+3+3)
或
number
错误总和恰好等于number
,但并非来自 case 'f':
printf ("Great!!! lets create your fixed account\n");
printf ("\nA minimum purchase of 1000 units is required for this
account\n");
printf ("\nPrice per unit as of Sep. 15 is $52.69\n")
;
printf ("\nPlease enter required amount of units\n");
scanf("%d",&amount);
if (isdigit(amount))
{
printf ("invalid input\n");
success = 'f';
break;
。
答案 2 :(得分:1)
只需反转计算总和的行和将i加3的行。