c - 为什么我没有得到正确的输出
问题描述
好的,所以对于我的问题,一个神奇的数字定义如下:如果它的每个数字都大于该数字右侧的数字之和。例如 94210 9 > 4+2+1+0 4 >2+1+0 等等...我看不到我的代码的问题,但我没有得到正确的输出
#include <stdio.h>
void Magic_number(int left, int right, int digit) {
int remainder;
for (; left < right; left++) {
int flag = 1; int sum = 0; int y = left;
remainder = y % 10; y = y / 10;
sum += remainder;
while (y != 0 && flag)
{
if (remainder == digit)
flag = 0;
if (remainder < sum)
flag = 0;
y = y / 10;
remainder = y % 10;
sum += remainder;
}
if (y == 0 && flag) {
printf("%d ", left);
}
}
}
int main() {
int l, r, d;
printf("please enter the right bound \n");
scanf_s("%d", &r);
printf("please enter the left bound \n");
scanf_s("%d", &l);
while (l>r)
{
printf("please enter the left bound that is less than the right bound \n");
scanf_s("%d", &l);
}
printf("please enter the arbitrary digit\n");
scanf_s("%d", &d);
printf("the Magic numbers from left bound%d and the right bound %d while exluding %d\n", l, r, d);
Magic_number(l, r, d);
}
expected output
magic number in rande left=740 right 850 with excluding digit m=2
740 741 750 751 760 810 830 831 840 841 843 850
the output I get
740 750 760 770 780 790 800 810 820 830 840
解决方案
您的代码中有许多错误。 y = y / 10;
一个示例是在计算余数之前执行的循环内。由于您已经在循环之前除以 10,因此您实际上跳过了一个数字。此外,还有一些地方你做<
而不是<=
试试看:
void Magic_number(int left, int right, int digit)
{
int remainder;
for (; left <= right; left++) {
int flag = 1; int sum = 0; int y = left;
remainder = y % 10; // Get first digit
y = y / 10; // Update y
sum += remainder; // Update sum
if (remainder == digit) // Check if first digit must be skipped
flag = 0;
while (y != 0 && flag)
{
remainder = y % 10; // Get next digit
y = y / 10; // Update y
if (remainder == digit) // Check if current digit must be skipped
flag = 0;
if (remainder <= sum) // Check if current digit is higher than current sum
flag = 0;
sum += remainder; // Update sum
}
if (y == 0 && flag) {
printf("%d ", left);
}
}
}
推荐阅读
- node.js - 如何使用 terraform -automated 在 aws ec2 上配置反应应用程序和节点 js?
- django - 在 Django OAuth Toolkit 中自动注册应用程序
- bash - 如何避免 BASH 脚本中的下一行
- java - 为什么我得到这个找不到符号错误?
- python - pandas agg() with mean(standalone vs list)
- javascript - Javascript Face-api.js 无法识别人脸
- reactjs - React Hooks - 将状态设置为初始状态
- azure-active-directory - Dynamics 365 Business Central 地形范围
- azure - 用户旅程完成后的 B2C 重定向
- c# - 使用 --login-path 配置的 C# MYSQL 连接?