#include <stdio.h> #include <math.h> int main() { int i,k,l,x,y,z; char a[100],b[100]; i=0,l=-1,x=0,z=0; while ((a[i]=getchar())!='#'){ i++; } a[i]='\0'; for(k=0;k<i;k++){ if((a[k]>='0'&&a[k]<='9')||(a[k]>='A'&&a[k]<='F')||(a[k]>='a'&&a[k]<='f')){ l++; b[l]=a[k]; } } b[l+1]='\0'; while(a[x]!=b[0]){ x++; } for(k=0;k<x;k++){ if(a[k]=='-'){ printf("-"); break; } } for(k=0;k<=l;k++){ if(b[k]>='a'&&b[k]<='f'){ y=b[k]-'a'+10; } else if(b[k]>='A'&&b[k]<='F'){ y=b[k]-'A'+10; } else{ y=b[k]; } z=z+y*pow(16,l-k); } printf("%d,%d,%d",z,l,x); }为什么输入为1#时输出z等于49
时间: 2024-04-06 07:29:20 浏览: 109
这段代码实现的功能是将输入的十六进制数转换为十进制数,并输出该数、该十六进制数的位数和该十六进制数在输入字符串中的位置。
输入为1#时,程序会将字符'1'存入数组a中,然后遇到'#'结束输入。此时数组a中只有一个字符'1'和一个结束符'\0'。
根据程序中的逻辑,只有输入的字符串中包含十六进制数才会有输出。由于输入的字符串中只有一个字符'1',不是十六进制数,因此不会有输出。程序运行结束后会返回0。
阅读全文