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;