剑指offer 面试题12 打印1到最大的n个数

来源:互联网 发布:剪切走的数据能恢复吗 编辑:程序博客网 时间:2024/05/18 00:43

E:\arithmetic\PrintN

注意用int 或者long可能不能满足范围 所以要用char[], 注意字符串加1的进位问题及边界取值,打印时候前面有0不需打印出来。

#include <stdio.h>#include <string.h> void print1toMaxN(int n);int add(char *str, int n); void printStr(char *str, int n);  int main(){  print1toMaxN(3);  return 0; }  void print1toMaxN(int n){ char *str = new char[n+1];  str[n] = '\0'; memset(str, '0', n); int flag = 0;while(!flag){flag = add(str, n);printStr(str, n);}/* test key code! char str1[] = "099"; printf("%d\n", add(str1, 3)); printf(str1);*/ delete []str; }  int add(char *str, int n){ int flag = 0; str[n-1]++; if(str[n-1] > '9') flag = 1;int k = n-1; while(flag && (k >= 0)){ str[k--] = '0'; if(k<0)//logic!! { flag = 1; break; } str[k]++; if(str[k] <= '9'){ flag = 0; } } return flag; }  void printStr(char *str, int n){int i = 0; int flag = 1;for(i = 0 ; i<n ; i++){if((str[i] == '0')&&(flag == 1))continue;flag = 0;printf("%c", str[i]);}printf("\t"); }  


0 0
原创粉丝点击