入栈c++十进制转化其他进制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入栈c++十进制转化其他进制相关的知识,希望对你有一定的参考价值。
入栈c++十进制转化其他进制急求
#include<stdio.h>#include<malloc.h>
typedef struct SqNode
int elem;
struct SqNode *next;
SqNode;
typedef struct SqStack
SqNode *base;
SqNode *top;
SqStack;
void systemConvert(int number,int system,SqStack *SS);
void InitStack(SqStack *SS);
int PushStack(SqStack *SS,int e);
int PopStack(SqStack *SS);
int main()
SqStack SS;
InitStack(&SS);
int number,system;
scanf("%d",&number);
scanf("%d",&system);
systemConvert(number,system,&SS);
while(SS.top!=SS.base)
PopStack(&SS);
return 0;
//10进制转换任意进制,number表示要转换的十进制数,system表示进制选择
void systemConvert(int number,int system,SqStack *SS)
int q;//商
int r;//余数
r = number/system;
q = number%system;
PushStack(SS,q);
//int i = 0;
while(r!=0)
q = r%system;
r = r/system;
PushStack(SS,q);
//初始化栈
void InitStack(SqStack *SS)
SS->base = (SqNode *)malloc(sizeof(SqNode));
SS->top = SS->base;
//压栈
int PushStack(SqStack *SS,int e)
SqNode *SN = (SqNode *)malloc(sizeof(SqNode));
if(!SN)
printf("内存申请失败!\\n");
return 0;
SN->elem = e;
SN->next = SS->top;
SS->top = SN;
return 1;
//弹栈
int PopStack(SqStack *SS)
SqStack *S = SS;
if(S->top == S->base)
printf("栈为空!\\n");
return 0;
printf("%d\\n",S->top->elem);
SqNode * ss = S->top->next;
free(S->top);
S->top = ss;
return 1;
参考技术A 入栈c++十进制转化其他进制
C语言-对字符串二维数组各个元素进行比较-十进制数转化为其他进制数-进行规则矩阵的输出-190225
//编写一个函数:从传入的num个字符中找到最长的一个字符,并通过max传回该串地址。
//重点:切记这里a[0]就是一个地址。
1 #include<conio.h> 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 char *fun(char (*a)[81], int num, char *max) 7 { 8 max = a[0];//切记这里a[0]就是一个地址。 9 for (int i = 1; i < num; i++) 10 { 11 if (strlen(a[i]) > strlen(max)) 12 { 13 max = a[i]; 14 } 15 } 16 return max; 17 } 18 void main() 19 { 20 FILE *wf; 21 char ss[10][81],*ps=NULL; 22 char s[3][81]={"abcd","deg","diegns"},*p=NULL; 23 int i=0,n; 24 system("CLS"); 25 printf("输入若干个字符串:"); 26 gets(ss[i]); 27 puts(ss[i]); 28 while(!strcmp(ss[i], "****")==0) /*用4个星号作为结束输入的标志*/ 29 { 30 i++; 31 gets(ss[i]); 32 puts(ss[i]); 33 } 34 n=i; 35 ps=fun(ss,n,ps); 36 printf("\nmax=%s\n",ps); 37 /******************************/ 38 wf=fopen("out.dat","w"); 39 p=fun(s,3,p); 40 fprintf(wf,"%s",p); 41 fclose(wf); 42 /*****************************/ 43 }
//函数fun的功能:将十进制正整数转化为k进制数,并按位输出。
1 #include <stdio.h> 2 #include <conio.h> 3 /*************found**************/ 4 void fun(int m,int k) 5 { int aa[20], i; 6 for(i=0;m;i++) 7 { 8 /*************found**************/ 9 aa[i]=m%k; 10 m/=k; 11 } 12 for(;i;i--) 13 /*************found**************/ 14 printf("%d",aa[i-1]); 15 } 16 void main() 17 { 18 int b,n; 19 printf("\nPlease enter a number and a base:\n"); 20 scanf("%d%d",&n,&b); 21 fun(n,b); 22 printf("\n "); 23 }
//函数fun功能是:建立一个N*N的矩阵,矩阵元素的构成规律是:最外层全是1,从外向内第二层全是2,依次类推。
//重点:第四行,以及赋值的规律。
1 #include <stdio.h> 2 #define N 7 3 /**********found**********/ 4 void fun(int (*a)[N])//这里是重点,省略第一个方括号。 5 { int i,j,k,m; 6 if(N%2==0) m=N/2 ; 7 else m=N/2+1; 8 for(i=0; i<m; i++) { 9 /**********found**********/ 10 for(j=i; j<N-i; j++) 11 a[i][j]=a[N-i-1][j]=i+1; 12 for(k=i+1; k<N-i; k++) 13 /**********found**********/ 14 a[k][i]=a[k][N-i-1]=i+1; 15 } 16 } 17 void main() 18 { int x[N][N]={0},i,j; 19 fun(x); 20 printf("\nThe result is:\n"); 21 for(i=0; i<N; i++) 22 { for(j=0; j<N; j++) printf("%3d",x[i][j]); 23 printf("\n"); 24 } 25 }
以上是关于入栈c++十进制转化其他进制的主要内容,如果未能解决你的问题,请参考以下文章