有人可以帮我完成 C 编程任务吗?

标签 c

我需要编写一个程序,它可以接受任意长度的数字,将其数字按相反的顺序排列(例如,从 12365 变为 56321),并检查这两个数字是否可以与其所有数字相除。如果两个数字都可以被每个数字整除,那么程序应该输出两个数字:给定的数字和相反的数字。目前我的程序只能反转该数字。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

    int i, m, n, atb = 0, nr = 1, skait = 0, j;
    printf("Iveskite intervalo pradzia ir pabaiga:\n");
    scanf("%d", &m);
    scanf("%d", &n);
    //---
    for(i = m; i <= n; i++)
    {
        int temp = i;
        int dalys[skait];
        do
        {

            atb = atb*10 + temp%10;
            dalys[skait] = temp;
            temp = temp / 10;
            skait++;

        }
        while (temp != 0);
//-------------------------------------------
        for(j = 1; j <= skait; j++){
            int dal = pow(10,(skait-1));

        }



//-------------------------------------------
        printf("\n%d skaicius: %d", nr, atb);
        printf("\nSkaicius susideda is %d skaitmenu.", skait);
        atb=0;
        skait=0;
        nr++;

    }




    return 0;
}

我已经开始尝试解决除法部分...但我找不到如何让程序获取每个数字并让它检查除法部分...

最佳答案

这个版本我也写过!我觉得比前面的好!该解决方案使用的 vector 小于其他回复中的版本,并且不会进行无用的除法! :) 此外,如果请求的条件得到验证,函数compute()返回1(其他地方为0),那么您可以轻松地将最终的printf移出主函数!

#include <stdio.h>
#include <stdint.h> 
#include <stdlib.h>
#include <string.h>
#define SEESTEPS
#ifdef SEESTEPS
#define Dprintf(a...) printf(a);
#else
#define Dprintf(a...) ;
#endif

int compute(uint64_t x,int zeroGo)
{
    uint64_t y,z,t;
    int div[10];
    int cntdiv,i;

    for(i=0;i<10;i++)
        div[i]=0;

    z=x;y=0;cntdiv=0;
    while(z) {
        t=(z%10);
        if (!div[t]) {
            cntdiv++;
            div[t]=1;
        }
        y*=10;y+=t;
        z/=10;
    }

    Dprintf("%lu => Inverted %lu\n",x,y);

    if (zeroGo || !div[0]) {
        t=div[0];
        for(i=1;i<10;i++) {
            if (!div[i])
                continue;
            Dprintf("%lu mod %d = %lu\n",x,i,x%i );
            if ( (x%i) )
                break;
            Dprintf("%lu mod %d = %lu\n",y,i,y%i );
            if ( (y%i) )
                break;
            t++;
        }
    } else {
        t=cntdiv-1;
    }

    //Dprintf("%d %d -",cntdiv,t);
    if ((int)t==cntdiv) {
        printf("%lu %lu\n",x,y);
        return 1;
    }

    return 0;
}

int main(void) {
    uint64_t f,t;
    int cnt=0;

    printf("From...: ");
    scanf("%lu",&f);
    printf("To.....: ");
    scanf("%lu",&t);

    for(;f<=t;f++)
        cnt+=compute(f,1);

    printf("%d\n",cnt);

    return 0;
}

关于有人可以帮我完成 C 编程任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773779/

相关文章:

复制文件跳过前 n 行和后 m 行

c - 函数 printf 在 C 中如何工作?

c - 模拟导致dump?

c - 指针和内存地址

c - C 中简单包装函数的用途

c++ - 计算代码的触发器!

c - C 代码的输出,例如通过引用调用

c - ^ 和 ! 的意义C语言中的运算符

c - 在 Linux 内核模块(驱动程序)临界区等待用户空间输入

c - 使用c中的文件操作写入文本文件时获取空格