c++ - 12天的圣诞节C程序

标签 c++ c

所以我尝试自己编写 12 天的圣诞节代码。虽然我还没有完成歌词,但我仍在努力弄清楚。但我不明白为什么我的圣诞节“第一天”会加倍并搭配不同的礼物,而在第 12 天却没有礼物出现。我检查了我的开关盒,我猜它们似乎是对的。我是否可以减少我的代码来打印出完整的歌词?

#include <stdio.h>
#include <conio.h>

int main() // Main Function
{
    int days, counter, num;
    //int counter = 1;  

    printf("\t\t***TWELVE DAYS OF CHRISTMAS***\n");
    printf("\t\t______________________________\n\n\n");

    for (counter=0; counter<=12; counter++)
    {   
        // counter++;
        switch(counter)
        {
            case 1: printf("\t\tA Partridge in a Pear Tree\n");break; // Day 12
            case 2: printf("\t\tTwo Turtle Doves\n"); break;
            case 3: printf("\t\tThree French Hens\n"); break;
            case 4: printf("\t\tFour Calling Birds \n"); break;
            case 5: printf("\t\tFive Golden Rings\n"); break;
            case 6: printf("\t\tSix Geese a Laying\n"); break;
            case 7: printf("\t\tSeven Swans a Swimming\n"); break;
            case 8: printf("\t\tEight Maids a Milking\n"); break;
            case 9: printf("\t\tNine Ladies Dancing\n"); break;
            case 10: printf("\t\tTen Lords a Leaping\n"); break;
            case 11: printf("\t\tEleven Pipers Piping\n"); break;
            case 12: printf("\t\tTwelve Drummers Drumming\n"); break; // Day 1 
        }
        printf("\n\tOn the ");

        switch(counter){
            case 1:
                printf("1st");
                break;  
            case 2: 
                printf("2nd");
                break;
            case 3: 
                printf("3rd");
                break;
            case 4: 
                printf("4th");
                break;
            case 5: 
                printf("5th");
                break;      
            case 6: 
                printf("6th");
                break;
            case 7: 
                printf("7th");
                break;
            case 8: 
                printf("8th");
                break;  
            case 9: 
                printf("9th");
                break;
            case 10:    
                printf("10th");
                break;  
            case 11:    
                printf("11th");
                break;  
            case 12:    
                printf("12th");
                break;                                                                                      
                default: 
                printf("1st", num);
                break;
            }
            printf(" day of Christmas my true love sent to me\n");

        }   

        getch();
        return 0;
    }

说明上说,“你的函数只会在 main() 函数中被调用,不会返回任何东西”那么这是否意味着我不会创建更多函数?还是我应该将所有代码仅放在主函数中?还是创建单独的代码?

最佳答案

再次查看 switch 语句,记住 break 并不是完全必要的。

switch (day) {
  case 2: printf("two turtle doves ");
  case 1: printf("and a partridge in a pear tree");
}

这将使“第 2 天”从“两只斑鸠”开始,然后跌落到“和梨树上的鹧鸪”。

同时,“第 1 天”的开始是“和梨树上的鹧鸪”。

关于c++ - 12天的圣诞节C程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446186/

相关文章:

c++ - 如何使用GTest测试命令行选项解析器

c++ - 是否可以在 constexpr 函数中遍历枚举成员,因此值是 constexpr?

c - memcpy regex_t 安全吗?

c++ - 当需要修改元素时,替代的类似集合的数据结构是什么?

c++ - C++ 中的互斥量必须绑定(bind)到某个对象或变量吗?

c - 使用 C 从传感器获得的值中获取平均值

c - C(Linux) 中的 fopen 返回 "Too many open files"

C:读取二进制并写入编码文本

c - 替换 C 数据中的字节

c++ - STL中的列表如何不存储在连续的内存中?