进制转换

好久没写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; 
} 
                


















