如何实施数字河流?
How to implement a Digital River?
数字河流是一个数字序列,其中每个数字后跟相同的数字加上其数字的总和。
我有一个逻辑问题,我无法弄清楚如何循环我的代码以使其执行 20 次。
第一个数字=> KUL_digitsum = sum = 6 => KUL_NEXTRIVERNUM = 123 + 6 = 129 => KUL_Digitsum * 20
Exercise
#include <stdio.h>
#include "KuL_RiverFkt.h"
int main()
{
int num;
printf("Eingabe der Zahl: ");
scanf("%d", &num);
KUL_NextRiverNum(KUL_digitsum(num), num);
for (int i = 0; i < 20; i++) {
KUL_NextRiverNum(KUL_digitsum(num), num);
KUL_digitsum(KUL_NextRiverNum(KUL_digitsum(num), num));
}
return 0;
}
int KUL_digitsum(int num)
{
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum = sum + digit;
num = num / 10;
}
printf("Die Summe der Zahl = %d\n", sum);
return sum;
}
int KUL_NextRiverNum(int KUL_digitsum, int num)
{
int summe = 0;
summe = num + KUL_digitsum;
printf("Die Nächste Riverzahl ist: %d\n", summe);
return summe;
}
您的代码过于复杂,您忽略了 KUL_NextRiverNum
的 return 值。
KUL_*
函数本身是正确的,但除非出于调试原因放置 printfs,否则它们不应进行任何打印。
你想要这个:
int main()
{
int num;
printf("Eingabe der Zahl: ");
scanf("%d", &num);
for (int i = 0; i < 20; i++) {
num = KUL_NextRiverNum(KUL_digitsum(num), num);
}
return 0;
}
- 只需在这些函数中注释
printf()
并更改主要内容,例如:
#define MAX_RIVER_TERMS 20
// KUL_NextRiverNum(KUL_digitsum(num), num);
for (int i=0; i < MAX_RIVER_TERMS; i++) {
if (i) printf (", ");
printf ("%d", num);
num = KUL_NextRiverNum(KUL_digitsum(num), num);
// KUL_digitsum(KUL_NextRiverNum(KUL_digitsum(num), num));
}
- 在源代码中使用
#define
宏值而不是幻数。
- Declare/qualify 参数作为
const
如果它们没有在函数内部被修改。
int KUL_NextRiverNum(const int KUL_digitsum, const int num) {}
数字河流是一个数字序列,其中每个数字后跟相同的数字加上其数字的总和。
我有一个逻辑问题,我无法弄清楚如何循环我的代码以使其执行 20 次。
第一个数字=> KUL_digitsum = sum = 6 => KUL_NEXTRIVERNUM = 123 + 6 = 129 => KUL_Digitsum * 20
Exercise
#include <stdio.h>
#include "KuL_RiverFkt.h"
int main()
{
int num;
printf("Eingabe der Zahl: ");
scanf("%d", &num);
KUL_NextRiverNum(KUL_digitsum(num), num);
for (int i = 0; i < 20; i++) {
KUL_NextRiverNum(KUL_digitsum(num), num);
KUL_digitsum(KUL_NextRiverNum(KUL_digitsum(num), num));
}
return 0;
}
int KUL_digitsum(int num)
{
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum = sum + digit;
num = num / 10;
}
printf("Die Summe der Zahl = %d\n", sum);
return sum;
}
int KUL_NextRiverNum(int KUL_digitsum, int num)
{
int summe = 0;
summe = num + KUL_digitsum;
printf("Die Nächste Riverzahl ist: %d\n", summe);
return summe;
}
您的代码过于复杂,您忽略了 KUL_NextRiverNum
的 return 值。
KUL_*
函数本身是正确的,但除非出于调试原因放置 printfs,否则它们不应进行任何打印。
你想要这个:
int main()
{
int num;
printf("Eingabe der Zahl: ");
scanf("%d", &num);
for (int i = 0; i < 20; i++) {
num = KUL_NextRiverNum(KUL_digitsum(num), num);
}
return 0;
}
- 只需在这些函数中注释
printf()
并更改主要内容,例如:
#define MAX_RIVER_TERMS 20
// KUL_NextRiverNum(KUL_digitsum(num), num);
for (int i=0; i < MAX_RIVER_TERMS; i++) {
if (i) printf (", ");
printf ("%d", num);
num = KUL_NextRiverNum(KUL_digitsum(num), num);
// KUL_digitsum(KUL_NextRiverNum(KUL_digitsum(num), num));
}
- 在源代码中使用
#define
宏值而不是幻数。 - Declare/qualify 参数作为
const
如果它们没有在函数内部被修改。
int KUL_NextRiverNum(const int KUL_digitsum, const int num) {}