天天看点

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



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

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

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

//#define

_crt_secure_no_warnings   

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

#include

<stdio.h>

<stdlib.h>

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

/*

获得数字的长度                                                      */

int

getnumlength(int

num)

{

numlength = 0,

inum;

for (inum

= num;

inum /= 10)

numlength++;

}

return

numlength;

获得10位的值                                                        */

get10(int

n)

res = 1;

for (int

i = 0;

i <

n;

i++)

res *= 10; 

//不断相乘

res;

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

character2integer(char

*str)//-1代表失败

char *istr

= str;//保留副本

num = 0;

while (*str

!= '\0')

if ((*str)<'0'

|| (*str)>'9')

return 

-1;

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

*str++;

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

printf("%d",

num);

lastres = 0;  

//12345 

1 12  123 1234 12345

num;

lastres *= 10;  

//结果乘以10

wei =

istr[i]

- 48;//取出字符

lastres +=

wei;//累加

printf("\nwei=%d",

wei);//打印字符转换为整数的位

lastres;

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

void

interger2character(int

num,char

*str)

i;

size =

getnumlength(num);

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

if (num

< 0)

str[0] =

'-';

num *= -1;

for (i

= size;

num /= 10,

i--)

str[i]

= num % 10 + 48;

else {

= size - 1;

main(int

argc,

char *argv[])

char *str

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

char

str2[20] = {0};

//1、整形转字符串

num = -123456,i;

interger2character(num,str2);

//2、打印字符串

= 0; i < 20;i++)

putchar(str2[i]);

putchar(10);

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

num =

character2integer(str);

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

system("pause");

return 0;

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

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

judgearrayifdecreasebyrecursion.h

#ifndef

_judgearray_

#define

随机生成数组                                                        */

extern

initarray(int

*arr,int

n);

打印数组内容                                                        */

printarray(int

选择排序,升序                                                      */

sortarrayasc(int

*arr,

选择排序,降序                                                      */

sortarraydesc(int

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

*/

judgearrayifdesc(int

n,

i);

#endif

judgearray.c

<time.h>

"judgearrayifdecreasebyrecursion.h"

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

//初始化随机种子

srand((int)time(null));

arr[i]

= rand()%n;

for (i;

printf("%d

",arr[i]);

i,

min,

j,

tmp;

= 0; i <

n;i++)

min =

i;  

//a[i]

for (j

= i + 1;

j <

n;j++)

if (arr[min]

> arr[j])

j;

tmp =

arr[i];

= arr[min];

arr[min]

= tmp;

选择排序,降序                                                                    */

max,

max =

if (arr[max]

< arr[j])

= arr[max];

arr[max]

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])

}*/

if (i

+ 1 < n )

return (arr[i]

< arr[i

+ 1]) ? 0 : judgearrayifdesc(arr,

i + 1);

return 1;

judgearrayifdecreasebyrecursion.c

n 20

arr[n];

initarray(arr,n);

printarray(arr,

sortarraydesc(arr,n);

//sortarrayasc(arr, n);

res =

judgearrayifdesc(arr,

n,0);

switch (res)

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

break;

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

继续阅读