1 c
我有二十个左右的整数,我希望它们能够在设置时按名称引用,但我也希望能够像数字一样用数字来引用它们,所以我可以将它们打印出来一个接一个地使用for循环.任何想法如何在C中编码?这是我在伪代码中谈论的内容:
/* a data structure to keep a count of each make of car I own */
my_cars;
/* set the counts */
my_cars.saabs = 2;
my_cars.hondas = 3;
my_cars.porsches = 0;
/* print the counts */
for(all i in my_cars) {
print my_cars[i];
}
Run Code Online (Sandbox Code Playgroud)
这是否过多地要求像C这样的低级语言?
struct car {
const char *name;
int count;
} my_cars[] = {{"Saab", 2}, {"Honda", 3}, {"Porsche", 0}};
int i;
for (i = 0; i < sizeof(my_cars) / sizeof(my_cars[0]); i++)
printf("%s: %d\n", my_cars[i].name, my_cars[i].count);
Run Code Online (Sandbox Code Playgroud)
为此,您应该使用数组而不是独立的数据字段
#include <stdio.h>
typedef enum CarType {
CART_SAAB,
CART_HONDA,
CART_PORSHE,
CART_COUNT_
} CarType;
typedef struct MyCars {
unsigned ncars[CART_COUNT_];
} MyCars;
int main(void)
{
MyCars my_cars = { 0 } ;
unsigned i;
my_cars.ncars[CART_SAAB] = 2;
my_cars.ncars[CART_HONDA] = 3;
for (i = 0; i < CART_COUNT_; ++i)
printf("%u\n", my_cars.ncars[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C可以做任何其他语言都可以做的事情.这确实看起来像家庭作业,我打赌你应该用钥匙做一些东西.请记住,您的教师希望您使用他或她试图教您的数据结构.他并不是真的希望以任何随机的方式解决问题,他希望它能够解决你所讨论的主题.
因此,考虑一个包含字符串和计数的数据结构,一个可以搜索的数据结构,并提供执行此操作的功能.你可能会得到的是这个问题的好,专业,简单的解决方案.这不是你教练想要的......
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |