我正在编写一个程序来显示公寓名称和公寓数量,但是,存储名称的数组无法显示名称,表明他们未被识别。反正有没有显示数组中包含的字符串?此外,我似乎得到n显示在显示器公寓数量之下的价值,无论如何要摆脱这个?这是我的代码:
#include <stdio.h>
int main(void)
{
int i;
char name[] = {North, West, South, East};
int apt[] = {24, 30, 14, 18};
const int n = 5;
printf("Name No. of Apartments\n");
for (i = 0; i < n; i++)
printf("%c %d\n", name[i], apt[i]);
return 0;
}
答案 0 :(得分:2)
以下是您的代码,已更正:
#include <stdio.h>
int main(void)
{
int i;
char *name[] = {"North", "West", "South", "East"}; /* You're declaring an array of characters, you need an array of strings/pointers */
int apt[] = {24, 30, 14, 18};
const int n = 4; /* you have 4 elements in your array, not 5 */
printf("Name No. of Apartments\n");
for (i = 0; i < n; i++)
printf("%s %d\n", name[i], apt[i]); /* %c is for characters, you need %s for strings */
return 0;
}
答案 1 :(得分:1)
当你需要一个二维数组时,你将一个名称声明为一维数组。
char name[number of names][length of longest name + 1]
此外,用于方向名称的字符串需要用双引号括起来。 所以你的声明应该是这样的:
char name[4][6] = {"North", "West", "South", "East"};
打印字符数组时,请使用指示符%s。 %c仅用于单个字符:
printf("%s %d\n", name[i], apt[i]);
此外,由于for循环从索引0开始,&#39; n&#39;应该从5改为4:
const int n = 4;
答案 2 :(得分:1)
您的问题中显示的是,您对C中strings
的概念不熟悉。
所以,你需要知道指针数组。
<强>解决方案强>
#include <stdio.h>
int main(void) {
// your code goes here
int i;
char *name[4];//Array of pointers to store 2d array of characters.
name[0]="North";name[1]="West";name[2]="South";name[3]="East";
int apt[] = {24, 30, 14, 18};
const int n = 5;
printf("Name No. of Apartments\n");
for (i = 0; i < n; i++)
printf("%s %d\n", name[i], apt[i]);
return 0;
}
由于数组中的字符串数量仅为4
,因此您不应该在n=5
次运行循环,否则会为i=4
生成一些垃圾值。