簡體   English   中英

改進列出C語言中的奇數代碼

[英]Improvement list the odd numbers code in C language

void main() {
int low, high, odds = 0;
do {
    printf("Please enter a number:");
    rewind(stdin);
    scanf("%d", &low);
} while (low <= 0);
do {
    printf("Please enter the second number:");
    rewind(stdin);
    scanf("%d", &high);
} while (high < 2 * low);
printf("The odd numbers between %d and %d are: ", low, high);
for (odds = low;odds <= high;odds++) {
    if (odds % 2 != 0)
    {
        printf(" %d", odds);
    }
}
printf(".\n");
system("pause");  }

我輸入“1”代表“低”變量,而“10”代表“高”變量,然后它顯示結果:“1 到 10 之間的奇數是 1 3 5 7 9。”那么,我怎么能通過打印輸出改進或更改我的代碼:“奇數..... 1,3,5,7,9。”?

添加逗號

 int first = 1;
 for (odds = low;odds <= high;odds++) {
   if (odds % 2 != 0)
   {
     if(first){ // to prevent comma before first number
        first = 0;
     }  else {
         printf("%s",",");
     }
     printf(" %d", odds);
   }
 }

本來可以

 printf("%c", ',');

. 即單個字符,但我使用 %s 以防萬一您想添加更多填充

奇數的一個好處是您可以確切地知道它們在哪里。 而不是遍歷所有值並檢查每個值是否為奇數,只需找到第一個奇數並增加 2:

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
    int low = argc > 1 ? strtol(argv[1], NULL, 10) : 1;
    int high = argc > 2 ? strtol(argv[2], NULL, 10) : 10;
    printf("The odd numbers between %d and %d are: ", low, high);
    if( low % 2 == 0 ){
        low += 1;
    }
    for( int odd = low; odd <= high; odd += 2 ){
        printf("%s%d", odd == low ? "" : ", ", odd);
    }
    putchar('.');
    putchar('\n');
    return 0;
}

暫無
暫無

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

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