又出问题了。。。。
程序功能,实现16进制转换成10进制数,并且删点16进制开头的ox符号,我的想法是能够多次输入,多次转换,可是只有第一次输出的值正确,后面的值就乱了。。。程序如下:程序代码:
#include<stdio.h> #define MAXLINE 1000 int getline(char line[],int maxline); //控制输入字符串子函数 int calclen(char line[]); //计算字符串长度子函数 int htoi(char a); //字符转换成整形子函数 int main() { int len,s,i,j,index,temp=1; int int_line[MAXLINE]; char line[MAXLINE]; s=0; while((len=getline(line,MAXLINE))>0) { i=0; while(line[i]!='\0') //删除16进制数开头的ox字符 { if(line[0]=='o'||line[0]=='x'||line[0]=='O'||line[0]=='X') for(j=0;j<len;j++) line[j]=line[j+1]; else break; ++i; } index=calclen(line); //计算字符串长度 for(i=0;i<index;++i) //将转换好的整形数赋给int_line数组 int_line[i]=htoi(line[i]); for(i=index-1;i>=0;--i) //10进制转换 { s+=int_line[i]*temp; temp=temp*16; } printf("转换成十进制数为:%d\n",s); fflush(stdin); } return 0; } int getline(char s[],int lim) { int c,i; for(i=0;i<lim-1&&(c=getchar())!='`'&&c!='\n';++i) s[i]=c; if(c=='\n') { s[i]=c; ++i; } s[i]='\0'; fflush(stdin); return i; } int calclen(char line[]) { int i; i=0; while(line[i]!='\n') ++i; return i; } int htoi(int a) { int s; if(a>='0'&&a<='9') s=a-'0'; else if(a>='A'&a<='F') s=a-55; else s=a-87; return s; }