您的位置:首页 > 编程语言 > C语言/C++

华为面试题:从1开始将数据无限制的打印下去(c语言版)

2011-08-26 08:47 375 查看
下面是到华为面试答的一道题,题意是从1开始,1,2,3,3.... 无穷近的打印下去,我是用c语言写下来做法;

#include <stdio.h>

#include <math.h>

#include <string.h>

int main(int argc, char *argv[]) {

char *arr, *p, *phead;

int length, i, j;

int argLen;

argLen = atoi(argv[1]);

length = pow(2, 30);

arr = calloc (length, sizeof(char)); /** 申请1G内存 **/

memset(arr, 0, length);

*(arr + length - 1) = '\0';

p = arr + length - 2;

phead = p;

for (i = 0; i < argLen; i++) {

while (1) {

p = arr + length -2;

for (j = 0; j < 10; j++) {

*p = j + 48;

printf("%s,", phead);

}

printf("\n");

//向前进一位;

while (phead <= p && *p == (9 + 48)) {

*p = 0 + 48;

p--;

}

if (phead <= p) (*p)++;

else {phead--; *phead = 1 + 48; break;}

}

}

free(arr);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐