【发布时间】:2018-02-22 04:29:03
【问题描述】:
我正在尝试创建一个程序,它将显示一个(5 位整数)。
例如,如果用户输入“23456”,它将输出“2 3 4 5 6”。
我只能用整数(%d)捕获输入(scanf)。我设法在没有 for/while 循环的情况下做到了。
fivedigit = num / 10000;
fivedigitr = num % 10000;
fourdigit = fivedigitr / 1000;
fourdigitr = fivedigitr % 1000;
threedigit = fourdigitr / 100;
threedigitr = fourdigitr % 100;
twodigit = threedigitr / 10;
twodigitr = threedigitr % 10;
onedigit = twodigitr / 1;
onedigitr = twodigitr % 1
printf("%d %d %d %d %d\n", fivedigit,fourdigit,threedigit, twodigit, onedigit);
但是,现在我需要使用循环创建版本 2。我不确定如何缩短计算时间以减少冗余。我设法弄清楚的唯一一件事是通过除以 10 来减少“10000”。
for(i=0; i<5; i++){
fivedigit = num / division2;
fivedigitr = num % division2;
division2 = division2/10;
}
任何帮助将不胜感激。我只需要知道如何减少冗余的基本方法,我就可以从那里继续前进并弄清楚。
谢谢。
【问题讨论】:
-
@SpencerWieczorek 我不允许将输入捕获为字符串/字符。要求是将输入捕获为整数。
-
@MFisherKDX 我理解使用字符串/字符更容易。这是分配给我的任务,这些是要求。
-
循环没问题,但是在循环之前你需要设置
fivedigitr = num,在循环内部你需要将num更改为fivedigitr。 OTOH,您可以在循环中将fivedigitr更改为num。 -
@user3386109 我假设需要 2 个变量?因为我正在计算它的商和余数。我需要余数(%)来计算以下数字等。
-
请注意,在您的第一个解决方案中,您仅在前两行中使用
num。然后一个计算的剩余部分成为下一个计算的输入。这就是您尝试使用循环复制的内容。
标签: c