你们这个简单的问题:
我写了这个循环,它打印了一些数组的值。 我想在每个值之间留出空格,但我不希望在代码打印的最后一个值之后有空格。
任何想法我如何做到这一点而不会太复杂?
for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
pre=i_talltrees-1;
post=i_talltrees+1;
if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
printf("%d ", talltrees[i_talltrees]);
}
}
答案 0 :(得分:3)
试试这个:
int flag = 0;
if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post])
{
if(flag)
{
printf(" ");
flag = 0;
}
printf("%d", talltrees[i_talltrees]);
flag = 1;
}
答案 1 :(得分:1)
这应该可以防止前导或尾随空格:
int have_printed = 0;
for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
pre=i_talltrees-1;
post=i_talltrees+1;
if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
if (have_printed) {
printf(" ");
}
else {
have_printed = 1;
}
printf("%d", talltrees[i_talltrees]);
}
}
答案 2 :(得分:0)
改变格式
const char *format = "%d";
for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
pre=i_talltrees-1;
post=i_talltrees+1;
if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
printf(format, talltrees[i_talltrees]);
format = " %d"; // next, if any, begin with a space.
}
}