这是一个将10进制和其他进制(2到9进制)进行互相转化,并且程序能够自动帮助用户纠正输入错误,,这个程序我理解的不是很透彻,尽管是自己写的,,但是有参考书籍,,红色的不是很理解,,,大神有谁能够给我详细讲解下不,,谢谢啦。。。。。
#include <stdio.h>
void oth_to_ten();
void ten_to_oth();
long change(int arry[],int len,int n);
void main()
{
int flag;
while(flag!=0)
{
printf("\n1:ten_to_oth&");
printf("2:oth_to_ten&");
printf("0:exit");
printf("\n Enter a number");
scanf("%d",&flag);
switch(flag)
{
case 1:ten_to_oth;break;
case 2:oth_to_ten;break;
}
}
}
void ten_to_oth()
{
int sum,i=0,n,j;
int arr[80];
printf("qing shu ru shi jin zhi\n");
scanf("%d",&sum);
printf("xiang zhuan hua cheng ji jin zhi\n");
scanf("%d",&n);
do
{
i++;
arr=sum%n;
sum=sum/n;
if(i>=80)
printf("overflow\t");}
while(sum!=0);
printf("the result is:\t");
for(j=i;j>0;j--)
printf("%d",arr[j]);
printf("\n");
}
void oth_to_ten()
{int base,i,num,arr[80];
long sum=0;
char ch;
printf("the base you wan to change\n");
scanf("%d",&base);
printf("qing shu ru gai shu");
scanf("%d",&num);
for(i=1;num!=0;i++)
{
arr=num%10;
num=num/10;
}
sum=change(arr,i-1,base);
printf("the result is%ld\n",sum);
}
long change (int a[],int len,int b)
{long num=0;
int i,k=1;
for(i=1;i<=len;i++)
{num=num+a*k;
k=k*b;
} return num;
}
首先arr=sum%n;有错,无法把整型变量赋值给指针,arr是指向数组的指针。
long change (int a[],int len,int b)
{long num=0;
int i,k=1;
for(i=1;i<=len;i++)
{num=num+a*k;
k=k*b;
}有三个参数,第一个数组中的参数是你输入的要转换的数每一位的值,第二位len的参数是i-1,也就是数组中存储的最高位位数的位置,b是进制数。例如输入要把8进制765转换为十进制,则参数a[]为