求大神指教怎么改,
16進制字串轉10進制整數值,
#include<stdio.h>
#include<string.h>
#include<math.h>
void check(char *b[20])
{
int n,i,flag=0;
n=strlen(b);
for( i=0;i<n;i++)//判斷輸入是否正確
{
if((b[i]>='0'&&b[i]<='9')||(b[i]>='A'&&b[i]<='E'))
flag++;
else
{printf("請檢查,第%d個數開始有錯誤\n",i+1);
return 0;}
if(flag==n)
printf("數字輸入正確\n") ;
}
}
int turn(char *c[20],int *cccc[20])
{
int s=0,m,k;
while(c[s]!='\0')
{
if((c[s]>='A')&&c[s]<='Z')
{
cccc[s]=c[s]-'A'+10;
s++;
continue;
}
cccc[s]=c[s]-'0';
s++;
}
for(m=0;m<s;m++)
cccc[s-m-1]=cccc[s-m-1]*pow(16,m);
for(k=0;k<s;k++)
sum+=cccc[k];
printf("%d",sum);
}
int main()
{
char a[20];
int m=0,n=0,h=0,aaaa[20];
gets(a);
turn(a,aaaa);
}
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
//void check(char *b[20])
void check(char b[20])
{
int n,i,flag=0;
n=strlen(b);
for( i=0;i<n;i++)//判斷輸入是否正確
{
if((b[i]>='0'&&b[i]<='9')||(b[i]>='A'&&b[i]<='E'))
flag++;
else
{printf("請檢查,第%d個數開始有錯誤\n",i+1);
//return 0;
return;
}
if(flag==n)
printf("數字輸入正確\n") ;
}
}
//int turn(char *c[20],int *cccc[20])
int turn(char c[20],int cccc[20])
{
int s=0,m,k, sum = 0;
while(c[s]!='\0')
{
if((c[s]>='A')&&c[s]<='Z')
{
cccc[s]=c[s]-'A'+10;
s++;
continue;
}
cccc[s]=c[s]-'0';
s++;
}
for(m=0;m<s;m++)
cccc[s-m-1]=cccc[s-m-1]*pow(16,m);
for(k=0;k<s;k++)
sum+=cccc[k];
printf("%d",sum);
}
int main()
{
char a[20];
int m=0,n=0,h=0,aaaa[20];
gets(a);
turn(a,aaaa);
}
供參考~
代碼編譯不通過,做了修改;試試,有問題再問吧
uj5u.com熱心網友回復:
你這么歧視十六進制數字F,F知道么?
uj5u.com熱心網友回復:
不但要檢查字符還需檢查進制
uj5u.com熱心網友回復:
而且O(N)即可無需那么多次回圈,當然求長度的回圈不計在內。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274208.html
標籤:C語言
上一篇:c語言輸入兩個數判斷在第幾象限
