打印1到最大的n位数
2013-08-31 12:14
211 查看
输入:非负整数n。
输出:如输入3,则输出1~999。
基本的方法涉及到大数,通过用字符串模拟加法运算。
知识点:判断溢出
逆序打印字符串
基本的代码如下
输出:如输入3,则输出1~999。
基本的方法涉及到大数,通过用字符串模拟加法运算。
知识点:判断溢出
逆序打印字符串
基本的代码如下
#include <stdio.h> #include <stdlib.h> #include <memory.h> size_t inc_num(char* num_str, size_t len) { int i = 0; int carrier = 0; num_str[0] += 1; do { if (num_str[i] > 9) { carrier = 1; num_str[i] -= 10; } else { carrier = 0; } if (++i > len) { break; } num_str[i] += carrier; } while (carrier); return i; } void put_num(const char* num_str, size_t len) { // ignore high zero while (len && !num_str[len - 1]) { --len; } while (len) { putchar(num_str[--len] + '0'); } putchar('\n'); } void print_num(size_t len) { if (len <= 0) { return; } char* num_str = (char*)malloc(len); if (!num_str) { return; } memset(num_str, 0, len); size_t curr_len = 0; while ((curr_len = inc_num(num_str, len)) <= len) { put_num(num_str, len); } free(num_str); } int main(int argc, char *argv[]) { if (argc != 2) { printf("usage ./instance num\n"); return -1; } int num = atoi(argv[1]); print_num(num); return 0; }
相关文章推荐
- 打印1到最大的n位数
- 打印1到最大的n位数。
- 打印1到最大的n位数
- 打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 【剑指offer】面试题12、打印 1 到最大的 n 位数
- 1515:打印1到最大的N位数 @jobdu
- 算法题21 打印1到最大的n位数
- P94、面试题12:打印1到最大的n位数
- 剑指offer-面试题12.打印1到最大的n位数
- 剑指offer-面试题12-打印1到最大的n位数
- 打印1到最大的N位数
- 打印1到最大的n位数
- 打印 1 到最大的 n 位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 07 打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 打印1到最大的n位数