递归实现10进制转8进制,字符串数字互转,判断数组正逆向
2014-07-28 00:24
399 查看
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;
}
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;
}
相关文章推荐
- 递归实现10进制转8进制,字符串数字互转,判断数组正逆向
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- C# 判断字符串是否为2进制,8进制,10进制,16进制
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- delphi实现字符串中数字的判断及相应数字累加
- java 判断字符串是否为数字 十进制 十六进制
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- php 判断字符串是不是10进制正整数。
- c#如实现将一个数字转化为其他进制字符串输出
- Object-C 实现判断一个字符串是否是数字
- 通过实现字符串的正向输入逆向输出验证递归调用
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
- 回文字符串判断---递归实现
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)--来源CSDN
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- MFC 如何判断字符串的长度 如何实现字符串与数组之间的转换
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- 初步实现无循环(则递归)将任意整数转任意进制字符串