递归实现10进制转8进制,字符串数字互转,判断数组正逆向

简介:  1.通过递归的方式打印八进制,使用递归的方式一般会有if,else。 2.将数字转字符串,字符串转数字 //#define _CRT_SECURE_NO_WARNINGS    //取消安全性检查,如果不加这一句的时候scanf将报错。 #include <stdio.h> #include <stdlib.h>


1.通过递归的方式打印八进制,使用递归的方式一般会有ifelse

2.将数字转字符串,字符串转数字

//#define _CRT_SECURE_NO_WARNINGS    //取消安全性检查,如果不加这一句的时候scanf将报错。

#include <stdio.h>

#include <stdlib.h>

 

/************************************************************************/

/* 获得数字的长度                                                      */

/************************************************************************/

int getNumLength(int num)

{

    int numLength = 0, inum;

    for (inum = num; inum; inum /= 10)

    {

        numLength++;

    }

    return numLength;

}

 

/************************************************************************/

/* 获得10位的值                                                        */

/************************************************************************/

int get10(int n)

{

    int res = 1;

    for (int i = 0; i < n; i++)

    {

        res *= 10;  //不断相乘

    }

    return res;

}

 

/************************************************************************/

/* 将一个字符串变成数字                                                                    */

/************************************************************************/

int character2Integer(char *str)//-1代表失败

{

    char *istr = str;//保留副本

    int num = 0;

    while (*str != '\0')

    {

 

        if ((*str)<'0' || (*str)>'9')

        {

            return  -1;

        }

        //printf("%c\n",*str);//取出每一个字符

        *str++;

        num++;//计数,判断有多少位

    }

    printf("%d", num);

    int lastres = 0;   //12345  1 12  123 1234 12345

    for (int i = 0; i < num; i++)

    {

        lastres *= 10;   //结果乘以10

        int wei = istr[i] - 48;//取出字符

        lastres += wei;//累加

        printf("\nwei=%d", wei);//打印字符转换为整数的位

    }

    return  lastres;

 

}

 

/************************************************************************/

/* 将数字转换成为字符串                                                */

/************************************************************************/

void interger2character(int num,char *str)

{

    int i;

    int size = getNumLength(num);

    //printf("%d",size);

    if (num < 0)

    {

        str[0] = '-';

        num *= -1;

        for (i = size; num; num /= 10, i--)

        {

            str[i] = num % 10 + 48;

        }

    }

    else {

        for (i = size - 1; num; num /= 10, i--)

        {

            str[i] = num % 10 + 48;

        }

    }

}

 

int main(int argc, char *argv[])

{

    char *str = "1234567890";//编号为0的字符

    char str2[20] = {0};

    //1、整形转字符串

    int num = -123456,i;

    interger2character(num,str2);

    //2、打印字符串

    for (i = 0; i < 20;i++)

    {

        putchar(str2[i]);

    }

    putchar(10);

   

    printf("-------------------------------------\n");

    num = character2Integer(str);

    printf("\n得到的数字是:%d\n", num);

 

    system("pause");

    return 0;

}

3、判断数组正逆序,文件案例结构如下:

judgeArrayIfDecreaseByRecursion.h

#ifndef _JUDGEARRAY_

#define _JUDGEARRAY_

 

/************************************************************************/

/* 随机生成数组                                                        */

/************************************************************************/

extern void initArray(int *arr,int n);

 

/************************************************************************/

/* 打印数组内容                                                        */

/************************************************************************/

extern void printArray(int *arr,int n);

 

/************************************************************************/

/* 选择排序,升序                                                      */

/************************************************************************/

extern void sortArrayASC(int *arr, int n);

 

/************************************************************************/

/* 选择排序,降序                                                      */

/************************************************************************/

extern void sortArrayDESC(int *arr,int n);

 

/************************************************************************/

/* 通过递归的方式查找数组是否是递减0表示非递减,1表示递减               */

/************************************************************************/

extern int judgeArrayIfDesc(int *arr, int n, int i);

 

#endif

 

judgeArray.c

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include "judgeArrayIfDecreaseByRecursion.h"

 

/************************************************************************/

/* 生成范围在n之内的数组                                                                    */

/************************************************************************/

void initArray(int *arr, int n)

{

    //初始化随机种子

    srand((int)time(NULL));

    for (int i = 0; i < n; i++)

    {

        arr[i] = rand()%n;

    }

}

 

/************************************************************************/

/* 打印数组内容                                                        */

/************************************************************************/

void printArray(int *arr, int n)

{

    int i = 0;

    for (i; i < n; i++)

    {

        printf("%d ",arr[i]);

    }

    putchar(10);

}

 

/************************************************************************/

/* 选择排序,升序                                                      */

/************************************************************************/

void sortArrayASC(int *arr, int n)

{

    int i, min, j, tmp;

    for (i = 0; i < n;i++)

    {

        min = i;   //a[i]

        for (j = i + 1; j < n;j++)

        {

            if (arr[min] > arr[j])

            {

                min = j;

            }

        }

        tmp = arr[i];

        arr[i] = arr[min];

        arr[min] = tmp;

    }

}

 

/************************************************************************/

/* 选择排序,降序                                                                    */

/************************************************************************/

void sortArrayDESC(int *arr, int n)

{

    int i, max, j, tmp;

    for (i = 0; i < n;i++)

    {

        max = i;

        for (j = i + 1; j < n;j++)

        {

            if (arr[max] < arr[j])

            {

                max = j;

            }

        }

        tmp = arr[i];

        arr[i] = arr[max];

        arr[max] = tmp;

    }

}

 

/************************************************************************/

/* 通过递归的方式查找数组是否是递减0表示非递减,1表示递减               */

/************************************************************************/

int judgeArrayIfDesc(int *arr, int n,int i)

{

    //int i = 0,j;

    /*for (i = 0; i < n;i++)

    {

    for (j = i + 1; j < n;j++)

    {

    if (arr[i] < arr[j])

    {

    return 0;

    }

    }

    }*/

 

 

    if (i + 1 < n )

    {

        return (arr[i] < arr[i + 1]) ? 0 : judgeArrayIfDesc(arr, n, i + 1);

    }

    return 1;

}

judgeArrayIfDecreaseByRecursion.c

#include <stdio.h>

#include <stdlib.h>

#include "judgeArrayIfDecreaseByRecursion.h"

#define N 20

 

int main(int argc, char *argv[])

{

    int arr[N];

    int res;

    initArray(arr,N);

    printArray(arr, N);

    sortArrayDESC(arr,N);

    //sortArrayASC(arr, N);

    printArray(arr, N);

 

    res = judgeArrayIfDesc(arr, N,0);

    switch (res)

    {

    case 0:printf("非递减\n"); break;

    case 1:printf("递减\n");break;

    }

   

    system("pause");

    return 0;

}

 

 

目录
相关文章
|
算法 前端开发
前端算法-罗马数字转整数
前端算法-罗马数字转整数
|
7月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
8月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
存储 算法
算法之字符串问题(第415题字符串相加、第43题字符串相乘、第316题去除重复字母)
算法之字符串问题(第415题字符串相加、第43题字符串相乘、第316题去除重复字母)
82 0
|
8月前
|
小程序 C语言
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
123 0
|
8月前
|
机器学习/深度学习 Java
java字符串练习题3、字符串中字符是否相同判断
java字符串练习题3、字符串中字符是否相同判断
72 0
|
8月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
56 0
|
存储 C语言
探索编程中的字母转换:如何将字母变为二进制矩阵?
二进制是学习计算机语言中一个非常重要的知识点,笔者将通过这篇文章帮助读者了解进制转换在程序中的运用,借助进制转化实现火柴形状的字母输出。
161 0
1. 实现含有中文字符的字符串逆转,如: “我是小萌新” 转换成“新萌小是我”(指针项目练习1)
1. 实现含有中文字符的字符串逆转,如: “我是小萌新” 转换成“新萌小是我”(指针项目练习1)
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】

热门文章

最新文章