如何在C中列出对?

时间:2011-10-30 09:33:56

标签: c list

我想删除此代码中的重复:

printf( "%.2f: %s\n",  440.00f, "A4" );
printf( "%.2f: %s\n",  523.25f, "C5" );
printf( "%.2f: %s\n",  880.00f, "A5" );
printf( "%.2f: %s\n", 1046.50f, "C6" );

我的计划是列出一对并循环它。是否有可能和一个好的解决方案,或者我应该制作两个数组?

1 个答案:

答案 0 :(得分:7)

只需创建一个结构数组:

struct pair {
    double num;
    char str[32];
};

struct pair pairs[10] = {
    {440.00f, "A4"},
    {523.25f, "C5"},
    /* ... */
};

/* C99. */
pairs[2] = (struct pair){880.00f, "A5"}; 
pairs[3] = (struct pair){
    .str = "C6",
    .num = 1046.50f
};

for (i = 0; i < sizeof(pairs) / sizeof(pairs[0]); i++)
    printf("%.2f: %s\n",  pairs[i].num, pairs[i].str);