我刚开始学习C所以我不知道我在做什么。我正在编写一个程序,根据变量k将数字的倍数加在一起(即x + 10x + 100x ......)。 n是要添加/相乘的数字。有人能告诉我这件事我做错了吗?当输入n为12且输入k为3时,它应输出13332但输出13200.谢谢!
#include <stdio.h>
int main() {
int n;
int k;
scanf("%d", &n);
scanf("%d", &k);
int i = 0;
int t;
while (i < k) {
t = n + (n * 10);
n = n * 10;
i++;
}
printf("%d", t);
}
答案 0 :(得分:4)
您设置变量t
而不是添加变量
使用+=
添加计算的金额
您也可以只添加n
,因为n * 10
将在下次迭代时添加(如果需要)。
您还应该将t
设置为0
,因为目前它尚未初始化并且将保留不可预测的垃圾值。
#include <stdio.h>
int main() {
int n;
int k;
scanf("%d", &n);
scanf("%d", &k);
int i = 0;
int t = 0;
while (i < k) {
t += n; // See here?
n = n * 10;
i++;
}
printf("%d", t);
}
此外,为清楚起见,我建议您:
total
而不是t
等。n
和k
更加明亮即使您没有将其更改为amount
或initialNumber
答案 1 :(得分:0)
使用t = n + (n * 10);
,每次运行都会考虑n
两次。
只需写下:
int main() {
int n;
int k;
scanf("%d", &n);
scanf("%d", &k);
int i = 0;
int t = 0;
while (i < k) {
t = n + (t * 10);
i++;
}
printf("%d", t);
}
请注意,t
需要初始化,即int t = 0
,否则表达式t = n + (t * 10)
会导致未定义的行为。