c – 新编程,不得2D3D阵列

c – 新编程,不得2D3D阵列,第1张

概述嗨,大家,我基本上是编程新手.我决定尝试开始使用C(不是C或C#),到目前为止我一直在做的很好.在我开始蹒跚前,我设法得到了二维阵列.虽然我觉得我广泛地了解2D整数数组,但我当然不了解3D字符串数组. 我正在通过采用技术并将其应用于我创建的实际程序中,汇率“计算器”基本上要求用户选择基础货币,然后以美元打印其价值.没有涉及到数学,我只是像谷歌/美元这样的谷歌搜索,并在下面讨论的数组中手动​​设置值 嗨,大家,我基本上是编程新手.我决定尝试开始使用C(不是C或C#),到目前为止我一直在做的很好.在我开始蹒跚前,我设法得到了二维阵列.虽然我觉得我广泛地了解2D整数数组,但我当然不了解3D字符串数组.

我正在通过采用技术并将其应用于我创建的实际程序中,汇率“计算器”基本上要求用户选择基础货币,然后以美元打印其价值.没有涉及到数学,我只是像谷歌/美元这样的谷歌搜索,并在下面讨论的数组中手动​​设置值.

但这里是我被卡住的地方.我认为学习多维数组的最佳方式是实际应用理论,所以这里是我迄今为止输入的内容(为简洁起见,我省略了我的程序的其他功能(包括调用这个函数的代码) :

char currencIEs[5][3][4] = {    {'1','2','3','4','5'},{'GBP','EUR','JPY','CAD','AUD'},{'1.5','1.23','0.11','0.96','0.87'}};int point,symbol,value;displayarraycontents(){    for(point=1;point<5;point++){        for(symbol=1;symbol<5;symboL++){            for(value=1;symbol<5;symboL++)                printf("%s ",currencIEs[point][symbol][value]);            printf("\n");        }}}

因为C不具有字符串数据类型,所以建立字符串数组完全混淆了我的头.

为什么货币[5] [3] [4]?因为我正在存储共5种货币,每种货币用3个字母的符号(如EUR,CAD)标记,最多可以包含4位数字,包括小数点.

我正在尝试显示此列表:

1 GBP 1.5
2欧元1.23
3日元0.11
4加元0.96
5澳元0.87

当我单击构建时,我指定数组中的值的行将突出显示此警告的几个实例:

警告:在隐式常量转换中溢出

…和我打印数组的内容的行突出显示与此警告:

警告:格式’%s’期望类型’char *’,但参数2具有类型’int’

运行代码后,程序的其余部分工作正常,除了这个功能,这会产生一个“分段错误”或者一些这样的问题.

有人可以在这里给我一个手吗?任何帮助将不胜感激,以及任何链接到简单的C 2D / 3D字符串数组初始化教程! (我的两本书,K& R和教你自己C只提供不相关的模糊的例子)

提前致谢!
-Ryan

编辑:使用struct更新的代码:

struct currency {    char symbol[4];    float value[5];};voID displayarraycontents(){        int index;        struct currency currencIEs[] {            {"GBP",1.50},{"EUR",1.23},{"JPY",0.11},{"CAD",0.96},{"AUD",0.87},};}

我收到以下错误:
main.c:99:error:嵌套函数被禁用,使用-fnested-functions重新启用
main.c:99:error:expected’=’,’,’;’,’asm’或’attribute’
main.c:100:error:expected’;’之前的’}’标记
main.c:100:error:在’,’标记之前的预期表达式

在实际的代码窗口本身,每个符号被标记为“意外的令牌”.

解决方法 在这种情况下,您实际上并不想要一个3D阵列.事实上,由于你有一个值表,所有你需要的是一个1D数组.

棘手的部分是数组的每个元素都需要存储两个东西:货币符号和相关联的汇率. C有一种构建一种存储两种东西的方式 – 它是结构体系.我们可以定义一个结构来保存单个货币:

struct currency {    char symbol[4];    char value[5];};

(注意,这不会创建一个变量;它创建一个类型.struct currency对char是分析的,除了我们自己定义了前者的含义).

…我们现在可以创建一个这样的数组:

struct currency currencIEs[5] = {     {"GBP","1.5" },"1.23" },"0.11" },"0.96" },"0.87" } };

要迭代它们并打印出来,代码将如下所示:

voID displayarraycontents(voID){    int point;    for(point = 0; point < 5; point++)    {        printf("%d %s %s\n",point + 1,currencIEs[point].symbol,currencIEs[point].value);    }}
总结

以上是内存溢出为你收集整理的c – 新编程,不得2D / 3D阵列全部内容,希望文章能够帮你解决c – 新编程,不得2D / 3D阵列所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存