# 二.函数功能介绍

## 1.

int Tennum(char a[],int b)//将输入的数字转换为10进制数
{
int len, i, num;
int sum = 0;
len = strlen(a);//求字符长度
for (i = 0; i < len; i++)
{
if (a[i] >= '0' && a[i] <= '9')
{
num = a[i] - '0';
}
else if (a[i] >= 'A' && a[i] <= 'F')
{
num = a[i] - 'A' + 10;
}
sum = sum * b + num;
}
return sum;
}


## 2.

void Numchange(int m, int b)//将10进制数转化为任意进制数
{

int n = m;
int count = 0;
if (m == 0) printf("0");
while (n != 0)
{
n = n / b;
count++;
}
int number;
for (int i = count; i >= 1; i--)
{
number = m / (int)pow(b, i - 1);
if (number < 10) {
printf("%d", number);
}
else {
printf("%c", number + 55);
}
m = m % (int)pow(b, i - 1);
}
}


## 3.

int judge2810(char a[], int b)//用来判断2，8，10进制数是否正确
{
int len, i;
len = strlen(a);
int flag = 0;
int x = b - 1 + 48;
for (i = 0; i < len; i++)
{
if (a[i] >= 48 && a[i] <= x) {
flag = 1;
}
else {
flag = 0;
break;
}
}
return flag;
}
int judge16(char a[]) //用来判断16进制数是否正确
{
int len, i;
len = strlen(a);
for (i = 0; i < len; i++)
{
if (a[i] < '0' || a[i]>'9' &&a[i] < 'A' || a[i]>'F') {
return 0;
}
}
return 1;
}


# 三.main函数

#include <stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int l = 1;
while(l)
{
printf("进制转换器\n");
printf("十六进制数字母大写\n");
char a[100];
int b;
printf("请输入待转换数的进制：\n");
scanf("%d", &b);
printf("请输入待转换数\n");
getchar();
gets_s(a);
int m;
m = Tennum(a, b);
if (b == 2) {
if (judge2810(a, b))
{
printf("八进制数：\n");
Numchange(m, 8);
printf("\n");
printf("十进制数：\n");
printf("%d\n", m);
printf("十六进制数：\n");
Numchange(m, 16);
printf("\n");
l = 0;
}
else {
printf("Error\n请重新输入\n");

}
}
else if (b == 8) {
if (judge2810(a, b))
{
printf("二进制数：\n");
Numchange(m, 2);
printf("\n");
printf("十进制数：\n");
printf("%d\n", m);
printf("十六进制数：\n");
Numchange(m, 16);
printf("\n");
l = 0;
}
else {
printf("Error\n请重新输入\n");
}
}
else if (b == 10) {
if (judge2810(a, b))
{
printf("二进制数：\n");
Numchange(m, 2);
printf("\n");
printf("八进制数：\n");
Numchange(m, 8);
printf("\n");
printf("十六进制数：\n");
Numchange(m, 16);
printf("\n");
l = 0;
}
else {
printf("Error\n请重新输入\n");
}
}
else if (b == 16) {
if (judge16(a))
{
printf("二进制数：\n");
Numchange(m, 2);
printf("\n");
printf("八进制数：\n");
Numchange(m, 8);
printf("\n");
printf("十进制数：\n");
printf("%d\n", m);
l = 0;
}
else {
printf("Error\n请重新输入\n");
}
}
}
return 0;
}


# 六.代码互评

### 网络1914 林洁颖

int binaryconversion(int number) {
if (number / 2 == 0) {
return number % 2;
}
else {
return number % 2 + binaryconversion(number / 2) * 10;
}
}


#### 这个函数利用了递归来将二进制数转换为十进制数，而且这个思路也很不错。

            int sum = 0;
int product = 1;
do {
sum = sum + (number % 10) * product;
number = number / 10;
product = product * primitivesystem;
} while (number);


# 七.总结

## 2.

#### 每个函数是拥有自己独特的功能，能提高整体代码的可读性，变得简洁。当有相似功能的函数，可以合并成一个函数，使得函数功能更强大。函数的实参和形参，函数的调用，递归，嵌套等。

posted @ 2019-11-06 20:32  拒绝平庸*  阅读(545)  评论(0编辑  收藏  举报