输入一个长为len的数字字符串和其对应的进制N,将其转换为10进制数输出
要求判断输入的数是否合法,若不合法则输出Error,
现输出情况都是转换后的数字(数字本身没错误),没有Error,为什么呢
#include<stdio.h>
#include<string.h>
int f(const char *str,int len,int N);
int main() {
int len,N;
scanf("%d %d\n",&len,&N);
char str[len];
gets(str);
int sum=0;
int i;
int c=0;
for(i=0; i<len; i++) {
if(str[i]>='N') {
c++;
}
}//字符串含不合法字符定c=1,都合法定c=0;
if(c==0) {
sum=f(str,len,N);
printf("%d",sum);
} else {
printf("Error");
}
}
int f(const char *str,int len,int N) {
int sum=0;
int i;
for(i=0; i<len; i++) {
if(str[i]>='A'&&str[i]<='Z')
sum=sum*N+str[i]-'A'+10;
else
sum=sum*N+str[i]-'0';
}
return sum;
}