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 当我单击构建时,我指定数组中的值的行将突出显示此警告的几个实例: 警告:在隐式常量转换中溢出 …和我打印数组的内容的行突出显示与此警告: 警告:格式’%s’期望类型’char *’,但参数2具有类型’int’ 运行代码后,程序的其余部分工作正常,除了这个功能,这会产生一个“分段错误”或者一些这样的问题. 有人可以在这里给我一个手吗?任何帮助将不胜感激,以及任何链接到简单的C 2D / 3D字符串数组初始化教程! (我的两本书,K& R和教你自己C只提供不相关的模糊的例子) 提前致谢! 编辑:使用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},}; } 我收到以下错误: 在实际的代码窗口本身,每个符号被标记为“意外的令牌”. 解决方法
在这种情况下,您实际上并不想要一个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 %sn",point + 1,currencies[point].symbol,currencies[point].value); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |