输入数字n,按顺序打印出从0到最大n位十进制数
来源:互联网 发布:海纳百川软件下载 编辑:程序博客网 时间:2024/05/02 12:49
算法描述:
输入数字n,按顺序打印出从0到最大n位十进制数
算法实现:
/*************************************************************************> File Name: main.c> Author: cyf> Mail: XXX@qq.com> Created Time: 2016年05月22日 星期日 14时08分00秒 ************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "print1ToMax.h"// ====================测试代码====================void Test(int n){ printf("Test for %d begins:\t", n); print1ToMax_1(n); print1ToMax_2(n); printf("Test for %d ends.\n", n);}int main(){Test(1);Test(2);Test(3);Test(0);return 0;}
/*************************************************************************> File Name: print1ToMax.h> Author: cyf> Mail: XXX@qq.com> Created Time: 2016年05月22日 星期日 13时52分18秒 ************************************************************************/#ifndef _PRINT1TOMAX_H#define _PRINT1TOMAX_H#include <stdio.h>#include <stdlib.h>#include <string.h>/* * 输入数字n,按顺序打印出从0到最大n位十进制数 * 例如:输入3,输出:1,2,3,。。。99 * */void print1ToMax_1(int n);void print1ToMax_2(int n);#endif
/*************************************************************************> File Name: print1ToMax.c> Author: cyf> Mail: XXX@qq.com> Created Time: 2016年05月22日 星期日 13时53分23秒 ************************************************************************/#include "print1ToMax.h"int InCrement(char *number){int isOver = 0;int nStart = 0;int length = strlen(number);int i;for (i = length - 1; i>=0; i--){int nSum = number[i] -'0' + nStart;if (i == length - 1){nSum++;}if (nSum >=10){if (i == 0){isOver = 1;}else{nSum -= 10;nStart = 1;number[i] = '0' + nSum;}}else{number[i] = '0' + nSum;break;}}return isOver;}void printNumber(char *number){int ret = 1;int length = strlen(number);int i = 0;for (i=0; i<length; i++){if(ret&&number[i]!='0'){ret = 0;}if (!ret){printf("%c", number[i]);}}printf("\t");}void print1ToMax_1(int n){if (n <= 0)return ;char *number = (char *)malloc((n+1)*sizeof(char));memset(number, '0', n);number[n] = '\0';while ( !InCrement(number) ){printNumber(number);}printf("\n");free(number);}void Print1ToMaxRecursively(char *number, int length, int index){if (index == length - 1){printNumber(number);return ;}int i = 0;for (i = 0; i < 10; i++){number[index+1] = i + '0';Print1ToMaxRecursively(number, length, index+1);}}void print1ToMax_2(int n){if (n <= 0)return ;char *number = (char *)malloc((n+1)*sizeof(char));number[n] = '\0';int i = 0;for (i = 0; i < 10; i++){number[0] = i + '0';Print1ToMaxRecursively(number, n, 0);}free(number);}
.PHONY:clean allCC = gccCFLAGS = -g -O2 -WallBIN = mainall:$(BIN)%.o:%.c$(CC) -o $@ -c $(CFLAGS) $<clean:rm -rf *.o $(BIN)
0 0
- 输入数字n,按顺序打印出从0到最大n位十进制数
- 输入数字n,按顺序打印出从1到最大的n位十进制数
- 输入数字n,按顺序打印出从1到最大的n位十进制数
- 打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数。
- 输入数字n,顺序打印出1到n位的十进制最大数
- 题目:输入数字n,按顺序打印从1到n位十进制数;
- 面试题12:输入数字n,按照顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999
- 输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。
- 打印出从1到最大的n位十进制数,如输入3 打印 1到 999
- 输入数字n,按顺序输出从1到最大的n位10进制数
- (《剑指offer》笔记)打印从1到最大的N位十进制数
- 输入n,输出从1到n位最大十进制数。例如输入2,输出1、2...99
- 输入数字n,按顺序输出从1最大的n位10进制数
- 输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数
- 打印1到n位最大数
- 1.输入n,打印一到n位最大数字,比如输入3,打印1到999
- 第3天 打印1到最大的N位十进制数
- 每日一题21:从0打印到具有n位整数的最大数
- memcached 分布式实现原理
- linux学习精华帖
- @synthesize和@dynamic分别有什么作用?
- 离线安装Chrome扩展程序
- 被神化的海量数据处理和高并发处理
- 输入数字n,按顺序打印出从0到最大n位十进制数
- commons-fileupload上传文件
- hdu 2544 最短路 spfa 解题报告
- MySQL 初次装时密码为空 为其设置新密码
- 显示图像的SIFT flow描述子
- 判断用户是否有网络, wifi or moblie network
- LinuxC/C++编程(1)—文件操作
- C语言中常用计时方法总结
- leetcode #28 in cpp