我尝试从用户处获取输入并将其存储到数组中,然后使用for循环列出数组中的项。代码如下:
#include <stdio.h>
int a[5], i, i1;
int main()
{
printf("insert 5 integers");
for(i=0, i<5, i++){
scanf("%d\n", &a[i]);
}
for(i1=0, i<5, i++){
printf("%d\n", &a[i1]);
}
return 0;
}
所以在代码中,我得到以下错误:“expected”;' before ')' token”和“expected expression before ')' token”。当我尝试编码时,我似乎经常遇到这些错误。任何帮助都将不胜感激,让这个代码工作。
PS:我们被给出的一个具体的相关问题是“如何使用指针来遍历数组的元素”。我看不出使用指针有什么帮助。这里需要他们吗?
**更新:**感谢您的回复,我已经将逗号改为分号,并删除了i1变量。我还去掉了scanf中的“\n”和最后一个printf中的“&”,因为它会打印地址而不是值。下面是现在的工作代码:
#include <stdio.h>
int a[5], i;
int main()
{
printf("insert 5 integers\n");
for(i=0; i<5; i++){
scanf("%d", &a[i]);
}
for(i=0; i<5; i++){
printf("%d\n", a[i]);
}
return 0;
}
3条答案
按热度按时间sshcrbum1#
“期待”;' before ')' token”消息只是编译器告诉您在for循环语句中缺少分号。
你的第一个for循环应该是:
请注意逗号是如何被分号替换的。
在第二个循环中,当您想要迭代
i1
变量时,您正在迭代i
变量。所以,你的第二个for循环应该是:注意
printf
的表达式中如何省略&
。如果包含&
,则将打印出数组中内容的地址(在内存中)。使用scanf
时需要&
(以便写入内存中的内容),但打印内容本身时不需要。至于指针的情况,数组和指针在C中是紧密相连的.事实上,简单地写
会给予你数组的第一个元素。数组是指针算术的缩写。因此,您可以将
a
视为指向数组开头的指针(即索引0处的元素)。那么,(a+1)
就是索引为1的元素。因此,要打印位于indexi
的元素,只需要解引用正确的指针:5hcedyr02#
你的
for loop
的语法是错误的,它应该是for(i=0; i<5; i++)
,因为另一个for(;;)
的正确语法是错误的,这就是为什么你在代码中出现错误,它说'token'和expected expressiondfty9e193#
使用分号,你也应该取代行
与
因为在for循环中使用了i1而不是i
没有意义,因为你只需要在一个变量i1或i之后进行迭代,或者你可以将其命名为j或任何你想要的,但for循环中的变量应该与你的迭代相同。