在包含新行的重复命令之后,有没有办法在没有新行的情况下结束代码?
Is there a way to end the code without a new line after a repeat commnad that contains a new line inside it?
所以我写了一个代码来计算两个矩阵的乘法。
该程序通过产生正确的结果来完成它的工作。我在下面提供了大部分输出功能:
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf("%d ", result[i][j]);
if (j == column -1)
printf("\n");
}
}
最后两行有助于正确显示结果,例如:
xxx xx
x -xx
x x
其中 x 代表整数。
我要如何在没有新行的情况下结束程序?例如:
xxx xx
x -xx
x xPress any key to continue...
而不是我现在得到的:
xxx xx
x -xx
x x
Press any key to continue...
提前致谢。
要在没有换行的情况下结束,停止在末尾打印换行。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf("%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}
结束也没有 space,停止在最后打印 space。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf(i == row -1 && j == column -1 ? "%d" : "%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}
如果你想在没有结尾的情况下结束你的输出 \n
那么不要在每行的末尾打印它。您可以在开头打印它(好吧,这将使您的输出始终在开头有一个空行)或更好,行之间。例如:
char *sep = "";
while(whatever_you_like_to_test_to_continue_the_test) {
/* the separator has been initialized to the empty string, so it will
* print nothing the first time. */
printf("%s", sep);
/* now we change it, to whatever we like to use */
sep = "\n";
/* print the body of what you want to print */
printf("....", ...);
}
/* when you reach here, the last part you wrote was the body, not the separator */
例如,在您的示例代码中,您可以用每一行的一对括号装饰矩阵的元素,一个 return 行并将所有内容放在另一对括号中,如下所示:
#include <stdio.h>
int main() {
int rows = 10, i, cols = 6, j, number = 0;
char *sep1 = "{";
for (i = 0; i < rows; ++i) {
printf("%s", sep1);
sep1 = ",\n ";
char *sep2 = "{";
for (j = 0; j < cols; ++j) {
printf("%s", sep2);
sep2 = ",";
printf("%3d", number++);
}
/* this ends the row */
printf("}");
}
printf("}"); /* the last bracket, and no newline */
} /* main */
将产生:
$ ./a.out
{{ 0, 1, 2, 3, 4, 5},
{ 6, 7, 8, 9, 10, 11},
{ 12, 13, 14, 15, 16, 17},
{ 18, 19, 20, 21, 22, 23},
{ 24, 25, 26, 27, 28, 29},
{ 30, 31, 32, 33, 34, 35},
{ 36, 37, 38, 39, 40, 41},
{ 42, 43, 44, 45, 46, 47},
{ 48, 49, 50, 51, 52, 53},
{ 54, 55, 56, 57, 58, 59}}$ _
for (i = 0; i < row; ++i)
{
if (i != 0)
printf("\n");
for (j = 0; j < column; ++j)
{
if (j != 0)
printf(" ");
printf("%d", result[i][j]);
}
}
在循环之外做一些事情,之前而不是之后。
asnwer 是微不足道的,重点是以测试机器可接受的方式呈现输出,这意味着在每一个新行结束后必须没有 space 才能让测试被通过。我在理解它背后的逻辑时遇到了一些麻烦,但最终在经过一番搜索、上面的一些帮助和一天的反复试验后,我弄明白了。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf(j == column -1 ? "%d" : "%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}
所以我写了一个代码来计算两个矩阵的乘法。 该程序通过产生正确的结果来完成它的工作。我在下面提供了大部分输出功能:
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf("%d ", result[i][j]);
if (j == column -1)
printf("\n");
}
}
最后两行有助于正确显示结果,例如:
xxx xx
x -xx
x x
其中 x 代表整数。 我要如何在没有新行的情况下结束程序?例如:
xxx xx
x -xx
x xPress any key to continue...
而不是我现在得到的:
xxx xx
x -xx
x x
Press any key to continue...
提前致谢。
要在没有换行的情况下结束,停止在末尾打印换行。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf("%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}
结束也没有 space,停止在最后打印 space。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf(i == row -1 && j == column -1 ? "%d" : "%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}
如果你想在没有结尾的情况下结束你的输出 \n
那么不要在每行的末尾打印它。您可以在开头打印它(好吧,这将使您的输出始终在开头有一个空行)或更好,行之间。例如:
char *sep = "";
while(whatever_you_like_to_test_to_continue_the_test) {
/* the separator has been initialized to the empty string, so it will
* print nothing the first time. */
printf("%s", sep);
/* now we change it, to whatever we like to use */
sep = "\n";
/* print the body of what you want to print */
printf("....", ...);
}
/* when you reach here, the last part you wrote was the body, not the separator */
例如,在您的示例代码中,您可以用每一行的一对括号装饰矩阵的元素,一个 return 行并将所有内容放在另一对括号中,如下所示:
#include <stdio.h>
int main() {
int rows = 10, i, cols = 6, j, number = 0;
char *sep1 = "{";
for (i = 0; i < rows; ++i) {
printf("%s", sep1);
sep1 = ",\n ";
char *sep2 = "{";
for (j = 0; j < cols; ++j) {
printf("%s", sep2);
sep2 = ",";
printf("%3d", number++);
}
/* this ends the row */
printf("}");
}
printf("}"); /* the last bracket, and no newline */
} /* main */
将产生:
$ ./a.out
{{ 0, 1, 2, 3, 4, 5},
{ 6, 7, 8, 9, 10, 11},
{ 12, 13, 14, 15, 16, 17},
{ 18, 19, 20, 21, 22, 23},
{ 24, 25, 26, 27, 28, 29},
{ 30, 31, 32, 33, 34, 35},
{ 36, 37, 38, 39, 40, 41},
{ 42, 43, 44, 45, 46, 47},
{ 48, 49, 50, 51, 52, 53},
{ 54, 55, 56, 57, 58, 59}}$ _
for (i = 0; i < row; ++i)
{
if (i != 0)
printf("\n");
for (j = 0; j < column; ++j)
{
if (j != 0)
printf(" ");
printf("%d", result[i][j]);
}
}
在循环之外做一些事情,之前而不是之后。
asnwer 是微不足道的,重点是以测试机器可接受的方式呈现输出,这意味着在每一个新行结束后必须没有 space 才能让测试被通过。我在理解它背后的逻辑时遇到了一些麻烦,但最终在经过一番搜索、上面的一些帮助和一天的反复试验后,我弄明白了。
for (i = 0; i < row; ++i)
{
for (j = 0; j < column; ++j)
{
printf(j == column -1 ? "%d" : "%d ", result[i][j]);
if (i != row -1 && j == column -1)
printf("\n");
}
}