本帖最后由 雪山的肥猫 于 2013-5-25 07:20 编辑
- #include<stdio.h>
- #include<string.h>
- int f(char c)
- {
- if(c>='0'&&c<='9')
- return 1;
- else
- return 0;
- }
- int y(long int n)
- {
- int i,k,b[201];
- if(n!=0)
- {
- k=0;
- while(n>0)
- {
- b[k++]=n%16;
- n=n/16;
- }
- for(i=k-1;i>=0;i--)
- printf("%c", b[i]/10>0 ? b[i]-10+'A': b[i]+'0');
- printf("\n");
- }
- else
- printf("0\n");
- return 0;
- }
- int main()
- {
- char s[201];
- long int i,a[201],len;
- while(scanf("%s",s)!=EOF)
- {
- len=strlen(s);
- int k=0;
- long int g=0;
- for(i=0;i<len;i++)
- {
- if(f(s[i])==1)
- g=g*10+(s[i]-'0');
- if(i==len||f(s[i])==1&&f(s[i+1])==0)(我不让大家分析代码的对误,它就是对的。我就是想问下这了‘i==len’是啥意思?我认为的话i不可能大于l等于len呀,应该是‘i==len-1’呀!但是如果改成‘len-1’的话就会显示提交错误。纠结死我了。下面附上题目便于理解。谢谢!!!!)
- {
- a[k++]=g;
- g=0;
- }
- }
- for(i=0;i<k;i++)
- y(a[i]);
- }
- return 0;
- }
复制代码
对于一个里面含有数字字符的字符串(长度小于200),现在将连续的数字字符组成的整数转化为16进制输出。 Input
输入字符串(多组输入) Output
输出字符串中连续数字对应的16进制数 Sample Inputa123v456U17960?302tab5876
Sample Output7B 1C8 4628 12E 16F4
|