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

题目描述
输入n个数,每个数的进制由其后面的数字k指定,k>=2且k<=10, 输出最大的数对应的十进制数。
要求程序定义一个KTod()函数和一个main()函数,KToD() 函数的功能是将k进制数转化为十进制整数,其余功能在main()函数中实现。
int KToD(char str[], int k)
{
//函数返回k进制数str对应十进制整数
}
输入
首先输入整数n,然后是n行,每行包含一个字符串和一个整数k,用空格隔开,该字符串表示一个k进制数。所有输入均为非负数。

输出
输出最大的数对应的十进制数。

样例输入
4
1101 2
22121 3
276 8
134 10

样例输出
232

提示
提示:将这四个数转化为10进制数分别是:13 232 190 134,故最大值是232.

#include <stdio.h>
int KToD(char str[],int k);
int main()
{
int n,k,i,a[],max;
char ch[][33];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%*s%*d\n",ch[i][33],&k);
for(i=0;i<n;i++)
a[i]=KToD(ch,k);
max=a[0];
for(i=1;i<n;i++)
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=0;str[i]!=0;i++)
d=d*k+(str[i]-'0');
return d;
}

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

#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=0;i<n;i++)
    {
        memset( ch, 0, 64 );
        fscanf( stdin, "%s %d", &ch, &k );
        a[i] = KToD(ch,k);
    }
    max=a[0];
    for(i=1;i<n;i++)
        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=0;str[i]!=0;i++)
        d=d*k+(str[i]-'0');
    return d;
}

追问

请问为什么要加一个 #include 头文件

追答

memset()函数是在string.h中

温馨提示:答案为网友推荐,仅供参考
相似回答