【发布时间】:2014-04-11 19:02:34
【问题描述】:
我正在为班级做作业:
创建一个允许用户输入最多 10 个朋友地址的程序。使用二维数组存储朋友的地址。输入每个地址后,用户应该可以选择输入另一个地址或打印一份报告,显示迄今为止输入的每个地址。
我创建了一个没有错误的代码,但我没有得到想要的结果。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
char name[10][10] = {0};
char address[10][10] = {0};
int choice;
printf("\n\nWelcome to the address book!\n\n");
printf("Please enter a name...\n");
scanf("%s",name);
printf("Please enter an address...\n");
scanf("%s",address);
printf("Would you like to (1)Enter another address, or (2)Print the address book?\n");
scanf("%i",&choice);
switch (choice)
{
case 1:
for (int i=0;i<10;i++)
{
printf("Please enter a name...\n");
scanf("%s",name[i]);
printf("Please enter an address...\n");
scanf("%s",address[i]);
printf("Would you like to (1) Enter another address, or (2)Print the address book?\n");
scanf("%i",&choice);
if (choice == 1)
{
for (int i=0;i<10;i++)
{
printf("Please enter a name...\n");
scanf("%s",name[i]);
printf("Please enter an address...\n");
scanf("%s",address[i]);
printf("Would you like to (1) Enter another address, or (2)Print the address book?\n");
scanf("%i",&choice);
}
} else if (choice == 2)
{
for (int i = 0; i<10; i ++)
{
printf("%s\n", name[i]);
printf("%s\n", address[i]);
}
}
}
break;
case 2:
for (int i = 0; i<10; i ++)
{
printf("%s\n", name[i]);
printf("%s\n", address[i]);
}
break;
}
return (0);
}
我的麻烦来自输出。我能够填充数组,但无法打印我想要的结果。我在哪里丢失了它?
【问题讨论】:
-
在我第一次输入之后,如果我在“地址”输入中有空格,程序就结束了。我不认为我以正确的方式构建了循环。
-
理论上应该有2个循环——一个循环不断询问客户是否要显示地址或输入一个,另一个循环显示地址。这里的代码有 4 个循环。所以你是对的,你应该把代码重新排列成两个循环。
-
感谢您的帮助 Alex,我确实希望您重新阅读我的代码。您正确地认为只有 2 个循环解决了我的大部分问题。不知道如何格式化数组以保存整个字符串。如果我添加空格,它似乎会添加到下一个名称/地址。
-
@Pabeyta 你知道如何完美地使用所有循环(for() , while(), do while()) 吗???
-
@MudassirHussain 正如我所说我是 c 新手。我正在尝试尽可能多地练习。所以我想你的问题的答案是否定的。你为什么要问?我应该使用不同的东西