天天看點

遞歸實作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;

繼續閱讀