怎么用别的网站做代理打开谷歌,wordpress ip被禁用,网站建设课程改进建议,erp软件定制公司二、利用栈实现数值转换#xff0c;先定义一个栈的顺序存储结构#xff0c;那么我们需要定义一个结构体#xff0c;结构体里面有个int类型的数组#xff0c;还有一个top用来存储栈顶元素的下标。栈是一种基本的数据结构#xff0c;它遵循先进后出的原则。这意味着最后添加…二、利用栈实现数值转换先定义一个栈的顺序存储结构那么我们需要定义一个结构体结构体里面有个int类型的数组还有一个top用来存储栈顶元素的下标。栈是一种基本的数据结构它遵循先进后出的原则。这意味着最后添加到栈中的元素将会首先被取出。栈通常具有两个主要操作压栈将元素添加到栈的顶部。出栈从栈的顶部移除元素。输入转化之前的数并且通过进制转化计算出他的sum再通过sum来转化成对应的进制程序运行结果如图2-1。
#include stdio.h
#include stdlib.h
#include string.h
#include math.h
#include stdbool.h
#define Maxsize 100// 定义顺序栈的结构体
typedef struct SqStack
{int data[Maxsize];// 存储栈中元素的数组int top;// 栈顶指针
}SqStack;// 初始化栈
void Init_Sqstack(SqStack *S)
{S-top -1;// 栈初始化为空栈顶指针设为-1
}// 进栈操作
bool push_SqStack(SqStack *S,int x)
{if(S-top Maxsize - 1)return false;// 栈满返回falseelseS-data[S-top] x;// 元素x进栈栈顶指针加return true;
}// 出栈操作
bool pop_SqStack(SqStack *S,int *x)
{if(S-top -1)return false;// 栈空返回falseelse{*x S-data[S-top];// 将栈顶元素赋值给xS-top--;// 栈顶指针减1}return true;
}// 展示栈中元素
void show_SqStack(SqStack S)
{for(int i S.top; i 0; i--){printf(%d ,S.data[i]);// 从栈顶开始打印栈中元素}
}// 将字符数组转换为对应进制的整数
int char_to_num(char *a,int x)
{int lenth strlen(a);// 字符串长度int num[100];// 存储转换后的每一位数字int sum 0;// 转换后的整数值for(int i 0; i lenth; i){if(a[i] 0 a[i] 9)// 如果是数字字符转换为数字num[i] (a[i]-0);elsenum[i] (a[i]-A10);// 如果是字母字符转换为对应的数字A-F为10-15}for (int i 0; i lenth; i){sum num[i] * pow(x, lenth - i - 1); // 按权展开求和}return sum;
}int main()
{SqStack S;Init_Sqstack(S);// 初始化栈 printf(请输入想要转化前数的进制);// 提示用户输入原数的进制int i;scanf(%d,i);// 读取用户输入的进制 printf(\n请输入想转化后的进制);// 提示用户输入目标进制int j;scanf(%d,j);// 读取用户输入的目标进制printf(\n请输入想要转化的数:);// 提示用户输入需要转换的数char s[100];scanf(%s, s);// 读取用户输入的数int m;m char_to_num(s,i);// 将字符数组转换为对应进制的整数// 将整数转换为目标进制的数并依次入栈 while(m){push_SqStack(S,m % j);// 取余数并入栈m m / j;// 整除目标进制数}show_SqStack(S);// 展示栈中元素即转换后的目标进制数 return 0;
} 图2-1 进制转化结果图