进制转换
好久没写C,太生疏了,记一下我卡住的几个点
1.C没有字符串这种数据类型,要实现读入一个未知长度的字符串比较简单的方法
建立一个一定比这个字符串长的数组,而字符串在数组中的存储是会自动以'\0'结尾的,所以遍历时遍历到'\0'就是字符串的末尾
2.类型转换格式 (要转换到的类型)转换依赖的值
注意只是得到一个新的数,原变量的值不变
#include<stdio.h>
#include<string.h>
int main(){
int N;
scanf("%d",&N);
int i;
for(i=0;i<N;i++){
int K;
char n[10];
scanf("%d %s",&K,n);
int j,sum=0;
for(j=0;n[j]!='\0';j++){
int n2;
if(n[j]<='9' && n[j]>='0'){
n2=(int)(n[j]-'0');
}
if(n[j]<='G' && n[j]>='A'){
n2=(int)(n[j]-'A'+10);
}
sum=sum*K+n2;
}
printf("%d\n",sum);
}
return 0;
}
判断进制
#include<stdio.h>
int main(){
int N;
scanf("%d",&N);
int i;
for(i=0;i<N;i++){
char n[10];
scanf("%s",n);
int charge[4];
charge[0]=charge[1]=charge[2]=charge[3]=1;
int j;
for(j=0;n[j]!='\0';j++){
if(n[j]>='A' && n[j]<'G'){
charge[0]=charge[1]=charge[2]=0;
break;
}
if(n[j]>='G' && n[j]<='Z'){
charge[0]=charge[1]=charge[2]=charge[3]=0;
break;
}
if(n[j]>='8' && n[j]<='9'){
charge[1]=0;
}
if(n[j]>'1' && n[j]<='9'){
charge[0]=0;
}
}
for(j=0;j<3;j++){
printf("%d ",charge[j]);
}
printf("%d\n",charge[3]);
}
return 0;
}