我有一个程序,我必须打印月份和特定数量的"〜"。我有一个名为: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 | ~~~~~~~~~
.......
由于
答案 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");
}