如何用C中的循环打印特定数字?

时间:2015-12-01 14:25:16

标签: c

我有一个程序,我必须打印月份和特定数量的"〜"。我有一个名为:graphLine

的函数
    void graphLine(int month,const struct MonthlyStatistic* monthly){

    int totalStars;
    int i;
    int j;

    total = (monthly->totalPrecipitation * 10.0) / 10.0;

    for (j=0;j<total;j++) {
          printf("%d  | ~ \n", month);
    }


}

我有一个main函数,它使用循环调用这个函数:

for (i=0;i<12;i++){
    graphLine(i+1,&monthly[i]);
}

问题是我想根据graphLine中变量total的结果打印特定数量〜但是我不能在graphLine中使用循环,因为如果我这样做会与main中的for循环重叠。 那么如何在graphLine函数中使用循环,以便我打印出类似这样的结果:

1 | ~~~~
2 | ~~~
3 | ~~~~~~~~~
.......

由于

3 个答案:

答案 0 :(得分:2)

使用这个技巧:

void print_month_stats(int month, int count) {
    const char *maxbar = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

    printf("%d  | %.*s\n", month, count, maxbar);
}

printf将打印count代字号,最长为maxbar。 如果您想要打印某些模式,例如----+----+--\/\/\/\/\/\/\或甚至1234567890123456789012345,这个技巧最方便。

答案 1 :(得分:1)

这是一个解决方案:

total = (monthly->totalPrecipitation * 10.0) / 10.0;

printf( "%d | ", month );
for (j=0;j<total;j++) 
{
  putchar( '~' );
}
putchar( '\n' );

答案 2 :(得分:0)

为什么你不能在main~函数中的波浪号(graphLine)中打印月份?

main

for (i=0;i<12;i++){
   printf("%d | ",i+1); 
   graphLine(i+1,&monthly[i]);
}

graphLine函数

void graphLine(int month,const struct MonthlyStatistic* monthly){

int totalStars;
int i;
int j;

total = (monthly->totalPrecipitation * 10.0) / 10.0;

for (j=0;j<total;j++) {
      printf("~");
}
printf("\n");

}