如何比较数字任务

时间:2016-11-25 14:47:00

标签: c list loops

所以我在C中得到了以下任务:用户输入两个整数,让他们称之为n1和n2,这样n1 <= n2。 程序必须打印n1和n2之间的所有可能的整数(包括n1和n2),并且数字中的所有数字的值都在增加。 例如,如果用户输入1234和1260,则程序将打印1236,1237,1238,1239,但不打印1240,因为0小于4。 然后它将打印1356,1357,1358,1359。

我不允许使用数组(否则会很容易),功能,甚至是电源功能。 所以我想出了下一个伪代码:

  1. 创建一个带有数字n1的循环,并计算它拥有的位数。
  2. 然后创建一个循环,将n1(位数-1)除去,然后用其结果的余数,它将执行%。 在这一点上,你留下了一些数字。
  3. 然后再次取n1,然后除以它(数字的位数-2)次,然后用结果的其余部分,它将做%。 此时你还剩下一些数字。
  4. 比较两位数。如果第一个数字小于第二个数字,则通过提升数字位置(digitsNum--)继续计算数字。
    • 执行循环步骤2-3-4。
    • 如果一切都结账,请打印n1;
    • 提升n1(n1 ++),(最多n2)
    • 再次循环一切。
  5. 问题是,由于对我可以使用的所有限制,我发现我的解决方案很难实现,一旦我开始,我只会得到一个大问题。 关于如何改进它的任何建议?

1 个答案:

答案 0 :(得分:0)

希望它对你有所帮助。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
        int num;;
        int num2;
        int flag=-1;
        int i=0,j=0;
        int rem,rem2;
        printf("Enter First Number\n");
        scanf("%d",&num);
        printf("Enter Second Number\n");
        scanf("%d",&num2);
        if(num>num2)
        {
                printf("Wrong inputs have given\n");
                exit(0);
        }
        int div=num2-num;
        for(i=0;i<=div;i++)
        {
                num2=(num+i);
                rem=(num2)%10;
                num2/=10;
                rem2=(num2)%10;
                if(rem>rem2)
                {
                        printf("....%d\n",num+i);
                }
        }
        return 0;
}