嗨所以我正在使用C代码并试图创建一个表格,其中数字从1到5的增量为5的倍数增加到...直到用户的输入。到目前为止我得到的是它从1开始然后将数字增加5,例如从1到6增加到11到16 ......直到它到达它不能再增加5的数字为止没有超出用户的输入。有人可以帮助我更好地设置for循环吗?
这是我所谈论的代码片段:
else //run this statement if the user inputs a number greater than 14
{
printf("Number Approximation1 Approximation2\n-----------------------------------------------------\n"); //prints the header for second table
for ( i = 1; i <= n; i += 5 )
{
printf("%d %e %e\n", i, stirling1( i ), stirling2( i )); //calls functions to input approximate factorials
}
}
所以使用这段代码,如果我输入n为28,我得i从1增加到6到11到16到21到26。
如果我输入n为28,则我希望代码执行的操作是将增量i从1增加到5到10到15到20到25到28之间。
提前致谢!
答案 0 :(得分:2)
试试这个:
{
printf("Number Approximation1 Approximation2\n-----------------------------------------------------\n"); //prints the header for second table
printf("%d %e %e\n", i, stirling1( 1 ), stirling2( 1 ));
for ( i = 5; i <= n; i += 5 )
{
printf("%d %e %e\n", i, stirling1( i ), stirling2( i )); //calls functions to input approximate factorials
}
}
这将打印1,5,10,15,20 ......等等的值
请注意,除了额外的代码行之外,它比添加&#34; if&#34;更快。在循环中。
答案 1 :(得分:0)
我添加了两个if
语句,这些语句可以帮助您处理在i = 1和i = n时打印语句的特殊情况,除了每5个语句打印一次。
else //run this statement if the user inputs a number greater than 14
{
printf("Number Approximation1 Approximation2\n-----------------------------------------------------\n"); //prints the header for second table
for ( i = 1; i <= n; i += 5 )
{
printf("%d %e %e\n", i, stirling1( i ), stirling2( i )); //calls functions to input approximate factorials
if (i == 1){
//when it iterates at the end of this loop, i = 5.
//In your example, you will get i from 1 to 5 to 10 up to 25 etc.
i = 0;
}
if ( (i + 5) > n){
// for the next loop, it will check if i will exceed n on the next increment.
// you do not want this to happen without printing for n = i.
//In your case if n = 28, then i will be set to 23, which will then increment to 28.
i = n - 5;
}
}
}
可能还有其他更优雅的方法来实现这一目标,但这只是您可以尝试的一个简单示例。