用C语言将k进制的数转换成10进制的 并输出最大的十进制数

用C语言将k进制的数转换成10进制的 并输出最大的十进制数,第1张

上没大面代码不是基本完成了吗

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int KToD(char str[],int k)

int main()

{

    int n,k,i,*a,max

    char ch[64]

    scanf("%d",&n)

    fflush( stdin )

    汪察搭a = (int*)malloc( sizeof(int)*n )

    for(i=0i<ni++)

    {

        memset( ch, 0, 64 )

        fscanf( stdin, "%s %d", &ch, &k )

        a[i] = KToD(ch,k)

    }

    max=a[0]

    for(i=1i<困拿ni++)

        max=(max>a[i])? max:a[i]

    printf("%d\n",max)

    return 0

}

int KToD(char str[],int k)

{

    int d,i

    d=0

    for(i=0str[i]!=0i++)

        d=d*k+(str[i]-'0')

    return d

}

一、说明:

公式:Y=K*X+b

信号:4-20mA

PLC模拟量输入数据范围(变量X):0-32000

仪表量程(变量Y):10-100

对应关系:4-20mA 转换为6400-32000转换为10.0-100.0

二、求解过程

通过代入法求系数K、b

1、当X=6400时,Y=10,即:

10=K*6400+b ------(1)

2、当X=32000时,Y=100,即:

100=K*32000+b ------(2)

3、由(1)、(2)求解,得

Y=X*90/25600-12.5

三、程序

Network1

LD SM0.0

MOVW AIW0, VW100

-I +6400, VW100

Network2

LD SM0.0

ITD VW100, VD102

Network3

LD SM0.0

DTR VD102, VD106

Network4

LD SM0.0

MOVR VD106, VD110

*R 90.0, VD110

Network5

LD SM0.0

MOVR VD110, VD114

/R 25600.0, VD114

Network6

LD SM0.0

MOVR VD114, VD118

-R 12.5, VD118

注:在带入X求Y的过程中,如果系数K的分子与分母相除的结果是无限小数,X应先乘以分子并碰,锋腊再除以分母,最后再加上常数b。银蔽滑


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12369286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存