【发布时间】:2021-09-16 02:30:40
【问题描述】:
我正在编写一个 c 程序,它读取输入的数字并从该数字开始倒数,直到数字中的所有数字都是奇数。因此,如果输入 22,则输出将是:22、21、20、19。然后程序需要找到这些数字的平均值。问题是我不知道如何将输入的数字分解为单个数字以识别它们是偶数还是奇数。这是我开始的:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main(void) {
int num, sum;
double avg;
printf("Enter a number:");
scanf("%d", &num);
while (num % 2 == 0) {
printf("%d ", num);
--num;
printf("%d ", num);
}
return(0);
}
写完后,我意识到它只能判断输入的数字是偶数还是奇数,而不是单个数字。
【问题讨论】:
-
也许将字符串转换为数字不是正确的开始:-) 但是,老实说,“倒计时”并不是解决这个问题的方法。如果你是为一些编程比赛做这个,那肯定是 TLE。
-
ejcar,将问题分解。形成一个函数
int is_all_odd_digits(int x);,使用%10隔离最小的数字,/10减少剩余的x。 -
一旦掌握了迭代数字中数字的方法,找到它们的平均值应该是微不足道的。
-
建议:编写一个函数来判断是否已经达到结束条件(
/10和%10)并在你的while 条件中使用它:while (hasevendigits(num)) { /*...*/ } -
是的 - 将其作为字符串输入,或者,如果您无法避免输入 int,则使用 sprintf() 对其进行字符串化。