我想在每个新行的开头添加一个额外的空格。目前的输出是:
$****
$***
$**
$*
$
Press any key to continue . . .
我想要的是:
$****
$***
$**
$*
$
Press any key to continue . . .
我添加了for-loop!看起来几乎完美,除了“按任意键继续......”消息是标签。如何解决这个问题?
代码:
for(r=1; r<=5; r++) {
printf("$");
for(c=1; c<=5;c++) {
if(6-r<=c) {
printf(" ");
} else {
printf("*");
}
}
printf("\n");
n++;
for (f=0;n>f;f++)
{
printf(" ");
}
}
答案 0 :(得分:1)
最简单的形式:只打印空格,然后是'$',然后是星号。
int r, c;
for(r=0; r<5; r++) {
for(c=0; c<r; c++){
printf(" ");
}
printf("$");
for(c=r+1; c<5;c++) {
printf("*");
}
printf("\n");
n++;//What is this here for?
}
你可以用一个很好的printf技巧(已经由其他人提交,因此我不会在这里进入它:
int r, c;
for(r=0; r<5; r++) {
printf("%*s", r+1, "$");
for(c=r+1; c<5;c++) {
printf("*");
}
printf("\n");
n++;//What is this here for?
}
但等等,还有更多!使用句点(.
),您可以强制字符串截断,所以:
int r;
for(r=1; r<6; r++) {
printf("%*s%.*s\n", r, "$", 5-r, "*****");
}
的Bam!把整个事情归结为一个陈述!
答案 1 :(得分:1)
当您编写$
:
printf("%*s", r, "$");
字符串格式字段中的*
允许您指定填充宽度。
答案 2 :(得分:1)
目前您的n++;
什么都不做。要print(" ")
n次,你需要使用类似for循环的东西。一种方法:打印空格量,然后打印所需的星数,应该是4 - n。
#include <stdio.h>
int main(int argc, char *argv[]) {
int r;
int c;
int n = 0;
for(r=1; r<=5; r++)
{
for (int i = 1; i<=n; i++) { //Print " " n number of times.
printf(" ");
}
printf("$"); //Print dollar sign.
for(c=0; c<(4-n);c++) //Print * 4-n times.
{
printf("*");
}
printf("\n");
n++;
}
}
答案 3 :(得分:1)
嗯,你在问题本身得到了答案,“怎么说printf(”“);'n'次'最简单的方式说printf'n'次是运行它'n'次,就像怎么样你要求程序打印'*'(6-r)次!
这里有一个非常简单的代码可以帮助您获得所需的输出
#include<stdio.h>
void main()
{
int r,c,n=0;
for(r=1; r<=5; r++)
{
for(c=n;c>0;c--)
{
printf(" ");
}
printf("$");
for(c=1; c<=5;c++)
{
if((6-r)<=c)
{
printf(" ");
}
else
{
printf("*");
}
}
printf("\n");
n++;
}
}
如果您想查看代码,请转到Codepad.org here you can run your code and see the output