又出问题了。。。。
程序功能,实现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;
}









