c - 如何正确格式化 C 中的这些循环,我的教授希望它如何?
问题描述
对于我的实验室项目,我必须
对于 0 <
n
<= 100 的每个整数,找出所有介于 1 之间且n
除以无余数的整数n
。
我已经制定了代码,但我不确定如何按照他想要的方式格式化它。
格式: number(# of factors): factors
例子:
2:( 2) 1,2
3:( 2) 1,3
4:( 3) 1,2,4
当前输出的样子:
1: 1
2: 1
2: 2
3: 1
3: 3
4: 1
4: 2
4: 4
5: 1
5: 5
6: 1
6: 2
6: 3
6: 6
7: 1
7: 7
8: 1
8: 2
8: 4
8: 8
9: 1
9: 3
9: 9
10: 1
10: 2
10: 5
10: 10
#include <stdio.h>
int main() {
int ini[100], i, j, d, n = 0;
for (i = 1; i <= 100; i++){
n = n+1;
ini[i] = n;
for (d = 1; d <= n; d++){
if (ini[i] % d == 0)
printf("%d: %d\n", ini[i], d);
}
}
}
解决方案
哦,来吧,让我们在这里玩得开心。其他人都在建议“通常”的方式。但是回到过去(tm),我们没有内存可以浪费在诸如跟踪事物之类的事情上。我们只是把纸当作我们的记忆!:-)
我建议遍历要测试的值(1 - 100),然后在第一个循环内有另一个从 1 到 n 计数的循环,打印除数值,其余数为零。在循环结束时,我会叠印该n
值,然后添加找到的因子数,然后循环返回下一个值。
在代码中,这看起来很像:
#include <stdio.h>
int main()
{
int n, d, i;
int factor_count;
for (n = 1 ; n <= 100 ; n += 1)
{
printf("%3d( ): ", n);
factor_count = 0;
for (d = 1 ; d <= n ; d += 1)
{
if (n % d == 0)
{
printf("%c%d", (factor_count > 0 ? ',' : ' '), d);
factor_count += 1;
}
}
printf("\r%3d(%3d)\n", n, factor_count);
}
}
这段代码利用了这样一个事实:\r
将打印托架(或视频终端上的光标)返回到左边距而不推进滚轮(或光标 - 真的,光标太忙了,需要休息!:-)下一行,为了避免必须保留一个数组来存储因子。在旧的 ASR-33 电传打字机上观看运行会很有趣——有人要测试吗?
:-)
推荐阅读
- java - 由于尾随空格,无法验证服务器证书
- c# - C# foreach 意外行为
- c++ - 创建一个结构作为枚举类成员
- python - Beautifulsoup - 删除 HTML 标签
- ruby-on-rails - Gmail 未收到 ActionMailer 电子邮件
- python - Windows Edge webdriver 失败并出现 WebDriverException:消息:未知错误
- jenkins - 从 bitbucket 存储库推送触发 jenkins 作业
- python - 基于另一个有条件的系列更新系列中的值
- javascript - click(jquery) 在脚本加载后立即执行该函数并且不响应点击
- robotframework - 只有在 RobotFramework 中的第一个测试失败时才开始第二个测试