下面是我自己编写的十六进制转十进制的c语言代码,通过了编译但运行闪退。不哪里有问题。

原问题:下面是我自己编写的十六进制转十进制的c语言代码,通过了编译但运行闪退。不哪里有问题。
分类:编程开发 > 最后更新时间:【2017-02-25 23:07:33】
问题补充:

#include<stdio.h>

#include<string.h>

#include<math.h>

//将字母转换为数字。

int tra(char a[],int i){

switch(a[i]){

case 'A':a[i]=10;break;

case 'B':a[i]=11;break;

case 'C':a[i]=12;break;

case 'D':a[i]=13;break;

case 'E':a[i]=14;break;

case 'F':a[i]=15;break;

default:break;

}

return a[i];

}

//计算每位十六进制数的单位大小。

int len(char a[],int i){

int l,j;

l=strlen(&a[i])-1;

j=pow(16,l);

return j;

}

//将各位求和得十进制数。

int add(char a[]){

int i,n;

long long s=0;

for(i=0;i<strlen(a);i++){

a[i]=tra(a,i);

n=len(a,i);

s+=a[i]*n;

}

return s;

}

int main(void){

char a[8];

long long sum=0;

int i;

//for(i=0;i<8;i++)scanf("%c",&a[i]);

gets(a);

//getchar();

sum=add(a);

printf("%ld",sum);

return 0;

}

最佳答案

#include<stdio.h>

#include<string.h>

#include<math.h>

//将字母转换为数字。

int tra(char a[],int i)

{

switch(a[i])

{

case 'A':a[i]=10;break;

case 'B':a[i]=11;break;

case 'C':a[i]=12;break;

case 'D':a[i]=13;break;

case 'E':a[i]=14;break;

case 'F':a[i]=15;break;

default:break;

}

return a[i];

}

//计算每位十六进制数的单位大小。

int len(char a[],int i){

int l,j;

l=strlen(&a[i])-1;

j=pow(16,l);

return j;

}

//将各位求和得十进制数。

int add(char a[]){

int i,n;

long long s=0;

for(i=0;i<strlen(a);i++){

a[i]=tra(a,i);

n=len(a,i);

s+=a[i]*n;

}

return s;

}

int main(void){

char a[8];

long long sum=0;

int i;

//for(i=0;i<8;i++)scanf("%c",&a[i]);

gets(a);

//getchar();

sum=add(a);

printf("%ld",sum);

return 0;

}

每个C语言程序都要调用一个名为main的函数(主函数),但你在开头定义了一个名为tra的函数,没有主函数,主函数就是什么都没有,所以该程序没有任何作用。

追答:
所以请加上主函数,为:另外,你的赋值了一个名为a[]的数组,但其实只要名为a的变量就行了,所以再改为#include<stdio.h>#include<string.h>#include<math.h>int tra(char a[],int i);int main(){char a;scanf("%c",&a);tra(a,i);}。。。//其他不用改return 0;}从你并不太美观的程序中看出你应该初学不久,我还是认为你最好不要做这种较为复杂的程序,我看你的程序有些杂乱无章,无法做较好的订正,只是解决了闪退的问题。
  • 追答:
    不好意思没把#include<stdio.h>打好
    最佳答案由网友  CREEPER_2017  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    11

    分享到:

    其他回答

    暂无其它回答!

      推荐