1.通過遞歸的方式列印八進制,使用遞歸的方式一般會有if,else。
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、判斷數組正逆序,檔案案例結構如下:
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;