3

我想制作一个程序,当用户输入AB1245并让程序将其更改为AB 12345(在第 2 和第 3 个字符之间添加空格)

char Bilnr[9];

for (i = 8; i < 3; i--) {
    Bilnr[i++]=Bilnr[i];

}

据我了解,该程序将从 Bilnr[9] 开始并将其设置为 Bilnr[8] 的值。

然后将 Bilnr[8] 设置为 Bilnr[7] 的值。

但它不会移动任何值。它只是打印AB1245

4

3 回答 3

4

我注意到的一件事是,如果您的循环实际执行过,它将是无限的

for (I=8; I<3; I--) {
    Bilnr[I++]=Bilnr[I];

}

I++不是说I+1,而是说I = I+1

但是您的循环不会执行,因为您的条件I<3在您初始化时从一开始就是假II=8

你也永远不会I[2]成为一个' '

您还必须意识到数组从 开始0,所以Bilnr[0]=='A'

尝试

for(int i = 8; i > 2; i--)
{
    Bilnr[i] = Bilnr[i-1];
}
Bilnr[2] = ' ';
于 2013-01-29T21:00:27.337 回答
2

这个循环条件是错误的:

for (I=8; I<3; I--) {
    Bilnr[I++]=Bilnr[I];
}

I永远不会小于 3,因此循环永远不会开始。你可能想要一个>. 如果它确实开始了,你也会有一个无限循环,因为你有I++and I--

你想要这样的东西:

for (I=7; I>1; I--) {
    Bilnr[I+1]=Bilnr[I];
}

此外,您必须用空格替换该位置,否则您将得到“AB112345”:

Bilnr[2] = ' ';
于 2013-01-29T21:00:15.393 回答
2

它打印相同,因为循环永远不会运行。循环条件错误,应该是I>3启动。for循环的工作方式如下:

for (initialization; condition-that-has-to-be-true; optional-increment-decrement) {
}

还要记住 C/C++ 数组从 0 开始计数,而不是 1。

要修复您的完整代码:

char Bilnr[9] = "AB12345";

for (I=7; I>2; I--) {
    Bilnr[I]=Bilnr[I-1];
}

那么你有AB112345. 然后,您需要的所有内容都放在空间中:

Bilnr[2] = ' ';
于 2013-01-29T21:04:22.237 回答