如何将 while 中的 if-else 语句放入 for 循环中?
How do I put this if-else statement from the while, in a for loop?
所以,最初我在 while 循环中嵌套了这个 if-else,将所有奇数的平方加到数字之间。例如,如果这两个数是 10 和 20,则奇数的平方和将为 1165(11^2 + 13^2 + 15^2 ...)。所以,现在我想使用 for 循环而不是 while 循环。我看过其他示例,但我无法用我的示例实现,因为这只是我第二次使用 C。
下面是while循环和答案的打印语句(我让“i”= firstNum,所以firstNum的值不会改变,firstNum和secondNum只是用户输入的):
i = firstNum;
while (i <= secondNum) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i += 2;
}
else {
++i;
}
}
printf("\n");
printf("Sum of the squares of odd integers between %d and %d = %d\n", firstNum, secondNum, sumOdds);
只需使用循环的增量即可添加剩余的值。
for (int i = firstNum; i <= secondNum; i++) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i++;
}
}
printf("\n");
您可以用 for
循环替换,并以 ++i
作为其终止语句;然后,您可以省去整个 else {...}
块并将 i += 2
(在 if
块中)替换为另一个 ++i
(与终端增量相结合,将有与 i += 2
).
相同的净效应
像这样:
for (i = firstNum; i <= secondNum; ++i) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
++i;
}
}
for循环可以像下面这样找例子
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
{
sumOdds += i * i;
}
这是一个演示程序。
#include <stdio.h>
int main(void)
{
int firstNum = 0, secondNum = 0;
printf( "Enter two numbers: " );
scanf( "%d %d", &firstNum, &secondNum );
if ( secondNum < firstNum )
{
int tmp = firstNum;
firstNum = secondNum;
secondNum = tmp;
}
long long int sumOdds = 0;
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
{
sumOdds += ( long long int )i * i;
}
printf( "The sum of squares of odd numbers is %llu", sumOdds );
return 0;
}
它的输出可能看起来像
Enter two numbers: 10 20
The sum of squares of odd numbers is 1165
程序的一些注释。首先,变量 i
仅在 for 循环中使用。所以应该在使用的最小范围声明
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
其次,为了减少溢出的风险,最好将变量 sumOdds
至少声明为 long long int
.
类型
您可以使用没有增量的 for 循环。
for(i = firstNum; i <= secondNum;) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i += 2;
}
else {
++i;
}
}
为您提供与 while
循环完全相同的行为。
所以,最初我在 while 循环中嵌套了这个 if-else,将所有奇数的平方加到数字之间。例如,如果这两个数是 10 和 20,则奇数的平方和将为 1165(11^2 + 13^2 + 15^2 ...)。所以,现在我想使用 for 循环而不是 while 循环。我看过其他示例,但我无法用我的示例实现,因为这只是我第二次使用 C。
下面是while循环和答案的打印语句(我让“i”= firstNum,所以firstNum的值不会改变,firstNum和secondNum只是用户输入的):
i = firstNum;
while (i <= secondNum) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i += 2;
}
else {
++i;
}
}
printf("\n");
printf("Sum of the squares of odd integers between %d and %d = %d\n", firstNum, secondNum, sumOdds);
只需使用循环的增量即可添加剩余的值。
for (int i = firstNum; i <= secondNum; i++) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i++;
}
}
printf("\n");
您可以用 for
循环替换,并以 ++i
作为其终止语句;然后,您可以省去整个 else {...}
块并将 i += 2
(在 if
块中)替换为另一个 ++i
(与终端增量相结合,将有与 i += 2
).
像这样:
for (i = firstNum; i <= secondNum; ++i) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
++i;
}
}
for循环可以像下面这样找例子
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
{
sumOdds += i * i;
}
这是一个演示程序。
#include <stdio.h>
int main(void)
{
int firstNum = 0, secondNum = 0;
printf( "Enter two numbers: " );
scanf( "%d %d", &firstNum, &secondNum );
if ( secondNum < firstNum )
{
int tmp = firstNum;
firstNum = secondNum;
secondNum = tmp;
}
long long int sumOdds = 0;
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
{
sumOdds += ( long long int )i * i;
}
printf( "The sum of squares of odd numbers is %llu", sumOdds );
return 0;
}
它的输出可能看起来像
Enter two numbers: 10 20
The sum of squares of odd numbers is 1165
程序的一些注释。首先,变量 i
仅在 for 循环中使用。所以应该在使用的最小范围声明
for ( int i = firstNum + ( firstNum % 2 == 0 ); i <= secondNum; i += 2 )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
其次,为了减少溢出的风险,最好将变量 sumOdds
至少声明为 long long int
.
您可以使用没有增量的 for 循环。
for(i = firstNum; i <= secondNum;) {
// checks if number is odd or even
if (i % 2 != 0) {
sumOdds += i * i;
i += 2;
}
else {
++i;
}
}
为您提供与 while
循环完全相同的行为。