1.通过递归的方式打印八进制,使用递归的方式一般会有if,else。
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;
}