标签:print code 大小 进制 close sed amp div har
定义“异数”:数值序列中包含2~16进制整数,如果序列中有一个数,与序列中其他任何一个数大小都不相等,这个数叫做“异数”
输入:输入数值序列i行(0<i),每一行分别是进制和数值,以"#"分割。如:n#m,n是整数,代表n进制,m是n进制下的数值。输入序列以结束符“END”结束
输出:输出j行(0<j<i),每一行都是输入序列的异数。要求:按照输入系列的原序输出;如果没有异数,输出字符串"None";结束符"END"不用输出
example:
输入:10#2333
8#4434
2#100100011101
16#91D
输出:8#4434
1 #include<stdio.h> 2 #include<string.h> 3 #define Row 20 4 #define Column 20 5 6 char a[Row][Column]; 7 int b[Row]; 8 9 int Read(void) //将输入各行n#m以字符格式存入二维数组 a[][] 10 { 11 int i=0; 12 while(1) 13 { 14 scanf("%s",a[i]); 15 if(strcmp(a[i],"END")==0) 16 break; 17 else 18 i++; 19 } 20 return i; 21 } 22 23 int Converse(void) //将a[][]中各行转换为十进制放入b[] 24 { 25 int r=Read(); 26 int i,j; 27 int len,x; 28 int k,t; 29 for(i=0;i<r;i++) 30 { 31 int n=0,m=0; 32 len=strlen(a[i]); 33 for(j=0;j<len;j++) 34 { 35 if(a[i][j]==‘#‘) 36 x=j; 37 } 38 for(k=0;k<x;k++) 39 { 40 n*=10; 41 n+=(a[i][k]-‘0‘); 42 } 43 for(t=x+1;t<len;t++) 44 { 45 m*=n; 46 if(a[i][t]-‘0‘>9) 47 m+=(a[i][t]-‘A‘+10); 48 else 49 m+=(a[i][t]-‘0‘); 50 } 51 b[i]=m; 52 } 53 return r; 54 } 55 56 void Check(void) //在b[]中找出异数输出,没有则输出None 57 { 58 int r=Converse(); 59 int k,t; 60 if(r!=1) 61 { 62 int n=0; 63 for(k=0;k<r;k++) 64 { 65 for(t=0;t<r;t++) 66 { 67 if(k!=t && b[k]==b[t]) 68 { 69 n+=1; 70 break; 71 } 72 } 73 if(t==r) 74 printf("%s\n",a[k]); 75 } 76 if(n==r) 77 printf("%s\n","None"); 78 } 79 else 80 printf("%s\n",a[0]); 81 } 82 83 int main(void) 84 { 85 Check(); 86 return 0; 87 }
标签:print code 大小 进制 close sed amp div har
原文地址:https://www.cnblogs.com/bigdapi/p/9706128.html