【发布时间】:2019-11-01 01:08:54
【问题描述】:
我正在尝试解决一个需要我输入数字的问题。使用 % 和 / 取最右边的数字并将分开的数字相加。然后判断这个数是否能被 9 整除。
我创建了一个函数来分隔最右边的数字,然后我尝试获取该数字并通过 while 循环运行它。存在的问题是,当我运行 while 循环时。它会创建一个无限循环,否则将不会打印输出。
#include <stdio.h>
int loopnum(int n);
int main(void)
{
int num;
int sum = 0;
int d = loopnum(num);
printf("Enter a number:\n");
scanf("%d", &num);
while (loopnum(num) > 0) {
printf("d = %d", d);
printf(",sum = %d\n", sum);
}
if (num % 9 == 0) {
printf("n = %d is divisible by 9\n", num);
}
else {
printf("n = %d is not divisible by 9\n", num);
}
return 0;
}
int loopnum(int n)
{
n = n % 10;
n = n / 10;
return n;
}
输入一个数字:
9
n = 9 可以被 9 整除
此代码的结果假设输出 d = "the digit" ,sum = "digit + sum" 和 n = "digit" 可以被 9 整除。例如,如果我 输入 9。输出将是 d = 9,sum = 9。
【问题讨论】:
-
num在你的 while 循环中永远不会改变。 -
另外,
num永远不会为int d = loopnum(num);初始化 -
您正在按值传递数字。因此函数中所做的更改不会反映在调用函数中。你应该使用指针。
-
你从未改变过
num,那么你预计loopnum(num)什么时候会改变? -
我预计 loopnum(num) 会运行 while 循环并提取数字然后对数字求和。我注意到 while 循环中缺少对数字求和的行。
标签: c function split sum digits