精华内容
下载资源
问答
  • 十进制整数num转换r进制数,其转换方法为辗转相除法,要求用链栈实现 算法分析 本题要完成的是将十进制整数num转化为r进制数,其转换方法为辗转相除法,要求用到链栈结构。程序设计中要用到栈的基本操作,...

    内容:

            将十进制整数num转换为r进制数,其转换方法为辗转相除法,要求用链栈实现

    算法分析

    1. 本题要完成的是将十进制整数num转化为r进制数,其转换方法为辗转相除法,要求用到链栈结构。程序设计中要用到栈的基本操作,分别用不同的函数分别来实现栈的入栈,判断栈空和出栈操作。主函数有两个输入,即输入待转化的数和要转化的进制,函数Convert算法思想为:对待转换的数先判断正负,用判断语句分别实现正数与负数的转化。具体转化的方法为辗转相除法,然后将所得到的数字放入栈中,通过栈的先进后出原则输出即可得到进制转换的结果

    概要设计 

    函数

      函数Pushlinkstack *top,int x) int

      函数Emptylinkstack top) int

      函数Poplinkstack *top,int *xint

      函数Convertint num,int mode void

    代码

    目录

    内容:

    算法分析

    概要设计 

    代码


    #include<stdio.h>
    #include<stdlib.h>
    typedef struct node
    {
    	int date;
    	node* next;
    }*linkstack;
    int Push(linkstack *top,int x)//入栈,将输入数字x放入栈顶top
    {
    	linkstack s = (linkstack)malloc(sizeof(struct node));//创建新的结点来进行入栈
    	if (s == NULL)
    		return 0;
    	s->date = x;//将数字放入节点中
    	s->next = (*top);//将结点放入到栈顶
    	*top = s;
    	return 1;
    }
    int Empty(linkstack top)//判断是否为空
    {
    	if (top == NULL)
    		return 1;//说明栈为空
    	return 0;//否则不为空
    }
    int Pop(linkstack* top, int* x)//出栈,每次出栈顶的值
    {
    	if (top != NULL)
    	{
    		linkstack p = *top;
    		(*x) = (*top)->date;
    		(*top) = (*top)->next;
    		free(p);
    		return 1;
    	}
    	return 0;
    }
    void Convert(int num, int mode)
    {
    	int h;
    	linkstack top = NULL;
    	printf("转化结果为");
    	if (num > 0)//当num大于零时
    	{
    		while (num != 0)
    		{
    			h = num % mode;//用辗转相除法添加到栈中
    			Push(&top, h);
    			num = num / mode;
    		}
    		while (!Empty(top))//利用循环结构不断访问栈顶取值
    		{
    			Pop(&top, &h);
    			printf("%d", h);
    		}
    		printf("\n");
    	}
    	else if (num < 0)//当num小于0时,将num乘以负一然后再求值再加上“-”然后与num>0的方法一样
    	{
    		printf("-");
    		num = num * (-1);
    		while (num != 0)
    		{
    			h = num % mode;
    			Push(&top, h);
    			num = num / mode;
    		}
    		while (!Empty(top))
    		{
    			Pop(&top, &h);
    			printf("%d", h);
    		}
    		printf("\n");
    	}
    	else
    		printf("%d\n", 0);//当输入的num为0时直接输出0
    }
    
    void main() 
    {
    	int num, mode;
    	printf("\n请输入要转化的数字:");
    	scanf_s("%d",&num);
    	printf("\n输入要转化的进制:");
    	scanf_s("%d",&mode);
    	Convert(num,mode);
    }

    展开全文
  • /* Note:Your choice is C IDE */ #include "stdio.h" ... printf("\n 该程序的功能是输入一个十进制整数,转换r进制数"); printf("\n 输入要转换的 整数和r进制数:"); scanf("%d%d" ,&.
    /* Note:Your choice is C IDE */
    #include "stdio.h"
    #define MAXLEN 100
    void main()
    {
        
        int top;
        int yushu[MAXLEN];
        int z,r,ys;
        
        printf("\n 该程序的功能是输入一个十进制整数,转换为r进制数");
        printf("\n 输入要转换的 整数和r进制数:");
        
        
        scanf("%d%d" ,&z,&r);
        printf("\n 你输入的十进制整数是 %d ,转换为 %d 进制数是:",z,r);
        
        
        top=-1;
        while(z!=0)
        {
        	ys=z%r;
        	z=z/r;
        	
        	top++;
        	yushu[top]=ys;
        }
        
        
        while(top>-1)
        {
        	printf("%d",yushu[top--]);	
        }
    }

     

    展开全文
  • do{ cout请输入一个正整数: "< cin>>i; Stack s; InitStack(s); while(i) { Push(s,i%16); i=i/16; } cout转为的16进制数为: "(!Empty(s)) { e=Pop(s,getResult); if(e!=NULL) cout*e; } cout您想继续求解十六进制...

    满意答案

    dcebd7a0de6265b6ccae5ead692f1eab.png

    puilbvuv2

    推荐于 2017.09.23

    dcebd7a0de6265b6ccae5ead692f1eab.png

    采纳率:46%    等级:9

    已帮助:814人

    #include

    #include

    #include

    #include

    #define STACKSIZE 50

    #define STACKINCREMENT 20

    #define OVERFLOW -1

    #define OK 1

    #define ERROR -1

    using namespace std;

    typedef struct

    {

    int *base;

    int *top;

    int stacksize;

    }Stack;

    int InitStack(Stack &s) //创建一个空栈

    {

    s.base=(int*)malloc(STACKSIZE*sizeof(int));

    if(!s.base)

    return (OVERFLOW);

    s.top=s.base;

    s.stacksize=STACKSIZE;

    return (OK);

    }

    int Push(Stack &s,int e) //入栈

    {

    if((s.top-s.base)>=s.stacksize)

    {

    s.base=(int*)realloc(s.base,(STACKSIZE+STACKINCREMENT)*sizeof(int));

    if(!s.base)

    return(OVERFLOW);

    s.top=s.base+s.stacksize;

    s.stacksize+=STACKINCREMENT;

    }

    *s.top++=e;

    return (OK);

    }

    int Empty(Stack s) //判断栈是否为空

    {

    if(s.base==s.top)

    return(1);

    else

    return(0);

    }

    int * Pop(Stack &s,int *e)

    {

    if(Empty(s))

    return (NULL);

    e=--s.top;

    return e;

    }

    void main()

    {

    int i,*e;

    e=new int ;

    int *getResult;

    getResult=new int ;

    char ch;

    do{

    cout<

    cin>>i;

    Stack s;

    InitStack(s);

    while(i)

    {

    Push(s,i%16);

    i=i/16;

    }

    cout<

    while(!Empty(s))

    {

    e=Pop(s,getResult);

    if(e!=NULL)

    cout<

    }

    cout<

    cout<

    cin>>ch;

    if(isupper(ch)==1)

    ch=tolower(ch);

    }while(ch!='n');

    }

    01分享举报

    展开全文
  • #include int transfer(int x){int p=1,y=0,yushu;while(1){yushu=x%2;x/=2;y+=yushu*p;p*=10;if(x<2){y+=x*p;break;}}return y;}void main(){//进制转换函数的声明int ...printf("请输入一个十进制数:");scanf(...

    #include

    int transfer(int x)

    {

    int p=1,y=0,yushu;

    while(1)

    {

    yushu=x%2;

    x/=2;

    y+=yushu*p;

    p*=10;

    if(x<2)

    {

    y+=x*p;

    break;

    }

    }

    return y;

    }

    void main()

    {

    //进制转换函数的声明

    int transfer(int x);

    int x;

    printf("请输入一个十进制数:");

    scanf("%d",&x);

    printf("转换成二进制数是:%d\n",transfer(x));

    }

    cc3bf58c8a36637c7713a0ea99ebfb4b.png

    扩展资料:

    c语言书写规则:

    1.一个说明或一个语句占一行。

    2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

    3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

    参考资料:

    展开全文
  • PTA,十二进制转十进制
  • /*功能:将十进制转换成十六进制数。-------------------------------------------------------*/#include "stdio.h"#include "string.h"void main (){int a,i,n;char s[20];printf("input a integer:\n");scanf(...
  • 十进制整数num转换r进制数,其转换方法为辗转相除法。要求用链栈实现。 算法设计 数制转换问题需要用到栈的基本操作,程序中用了三个函数分别实现链栈的入栈、判断栈空和出栈操作。主函数有两个输入,即输入待...
  • 输入一个十进制整数转换成对应的八进制数和十六进制数并输出。 #include<stdio.h> #pragma warning(disable:4996) void decShow(int n); void hexShow(int n); int main() { int num; printf("输入一个...
  • printf("将十进制数%d转化为%d进制是:\n",n,flag); while(n) { Push(s,n%flag); n=n/flag; } while(!stackempty(s)) { e=Pop(s,e); switch(e) { case 10: printf("A"); break; case 11: printf("B"); break; case ...
  • 十进制整数num转换r进制数,其转换方法为辗转相除法。要求用链栈实现。 步骤: 算法分析 本题需要将十进制整数num转换为任意进制数,要求使用链栈实现转换。程序中设计了四个函数,(1)函数InitStack()用来初始...
  • #include #include void transfer(int x,int* a) { int temp; temp = x; int cnt = 0; int key; for(int i=9;i>0;i--){ x = temp / pow(2, (i... printf("\n%d转换为二进制为:",x); transfer(x,a); }
  • 满意答案yhATL622013.05.05采纳率:45%等级:12已帮助:13717人我写了个10进制小数,转二进制的程序(包含整数部分和小数部分):#include #define NUM 2#define ZERO 0.000001void integer(int n){if(n>...
  • #include <stdio.h> void d2n( int x, int n ) { int a; a = x % n; x = x / n; if ( x != 0 ) d2n( x, n ); if ( a < 10 ) printf( "%c", '0' + a ); else printf( "%c", 'A' + a - 10 );...n .
  • 解析:采用除2留余法进行进制转换。... printf("请输入十进制整数n的值\n"); scanf("%d", &n); while (n != 0){ printf("%d", n % 2); n = n / 2; } return 0; } 以输入12为例,结果如下图: ...
  • 引言将IP地址转换十进制整数,或者将十进制整数转换成IP地址,在网络编程中经常会遇到,其中的转换算法非常简单,利用强大的Python,更是只需要1-2行代码就搞定了。算法描述IP地址转换整数算法1. 将 IP(A.B.C.D)...
  • 本代码可支持,10进制转换为任意进制的数 #include<stdio.h> #include<stdlib.h> #include<math.h> #define maxsize 100 typedef int status;//使后面可以使用status类型,用来表示成功或失败...
  • 7-8 把字符串中十六进制字符转换成十进制整数 (10 分) 输入一个字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六...
  • //分类讨论十进制整数的正负 if(n>0) { //辗转相除法求转换的数字并存入链栈 while(n!=0) { t=n%i; PushStack(S,t); n=n/i; } //出栈并打印 while((*S)!=NULL) { PopStack(S,&c); printf("%d...
  • 输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以...
  • //十进制数字的字符串 char b[1024];//存放k进制数字的字符数组 DecToK(a, b, 3);//转三进制 reverse(b); printf("%s = %s\n", a, b); DecToK(a, b, 24);//转二十四进制 reverse(b); printf("%s = %s\n", a, b); ...
  • 输入一个十进制整数,将其转换为二进制数并以字符串形式存放于字符数组中并输出。 【输入形式】从标准输入中输入一个整数 【输出形式】将转换后的二进制数字符串输出 【样例输入】:13 【样例输出】:1101 #include&...
  • 问题描述:提取字符串中的十六进制数字并转换为一个十进制整数输出源代码:/*十六进制转换成十进制*/#includeint main(void){int i,k;char hexad[80],str[80];long number;printf("Enter a string:");i=0;while((str...
  • 最佳答案这道题不算难,就是筛选除了a,b,c,d,e,f和数字之外的所有字符,然后把十六进制数转换十进制数,你等我写一下程序再发上来。追答:#include #include = "0" && ch = "a" && ch <= "f"))...
  • 题目描述:如大标题 #include<stdio.h> int main() { char *p, s[10];int n; p=s; gets(p); n=*p-'0'; while(*(++p)!='\0') n=n*8+*p-'0'; printf("%d", n); return 0; }
  • 代码实现十六进制字符串转换十进制整数的方法,具体实现如下: /* * 将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值 */ #include <stdio.h> #include <math.h> /*...
  • 1.//用转意字符⑴这是输出有前缀“0”的八进制数int main(void){int a;printf("\n");scanf("%d",&a);printf("%#o",a); /*"%#o"这里的“#”就是输出前缀的,“o”是八进制*/getch();return...
  • //将十进制n对16取余并逆序输出,然后将n/16作为参数再次调用递归函数,直到参数小于10 t=n%16; //因为要逆序输出,所以输出语句在递归语句之后 if(t>=10)cout<<char('A'+t-10);//将大于等.
  • 字符串转换成十进制整数

    千次阅读 2021-07-28 19:10:15
    输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数...
  • 你想啊data每次位移之后他的最低位就是我们当前要输出的二进制表示的位,用1(也就是二进制的00000001)来和当前的data来于的话就是每次于的都是最低位了,这个最低位和1来于自然data最低位是0就输出0是1就输出1了这...
  • 代码功能:输入一个十进制整数,将其转化为十六进制整数并输出 二.源码 #include<iostream> #include<cstring> #include<cmath> using namespace std; // 十进制数转化为十六进制数步骤...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 165,378
精华内容 66,151
关键字:

十进制整数部分转换成r进制