匿名用户
1级
2015-06-12 回答
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
* vim:tabstop=4,shiftwidth=4
* ============================================================
*
* Filename: get_even_bit.c
* Description: 随机生成10个数,并且将偶数位的数输出
* Version: 1.0
* Created: 2015/6/12 21:00:00
* Revision: none
* Compiler: gcc V3.4.5
* Organization: Copyright (c) 2015, ZT
*
* ============================================================
*/
#include 62616964757a686964616fe58685e5aeb931333337393537/* For command line input and output */
#include
#include
#include /* For limits on integer types */
#define CAP 10 //宏定义数组的大小
#define MAX INT_MAX //宏定义区间的最大值
//随机产生10个数
int* get_data(inta[])
{
srand(time(NULL));
inti = 0;
//printf("type int values from %d to %d\n", INT_MIN, INT_MAX);
for(i=0; i
{
a[i]=rand() % MAX + 1 ;//随机数的区间[1~MAX]
}
returna;
}
//打印数组
voidprint(inta[])
{
inti = 0;
for(i = 0; i
{
//printf("a[i] = %d\n",a[i]);
printf("%d\t",a[i]);
}
printf("\n");
}
//得到一个数的位数
intget_bit_number(intnum)
{
inti = 0;
while(num != 0)
{
num = num / 10;
++i;
};
returni;
}
//将一个数的偶位取出
intget_even_bit(intnum)
{
inti = 0;
intj = 0;
intk = 1;
int* buf=(int*)malloc(get_bit_number(num) * sizeof(int));
while(num != 0)
{
buf[i] = num % 10;
i++;
num /= 10;
}
//若从j=0开始,则取得是奇数位
for(j = 1; j
{
num += buf[j] * k;
k *= 10;
}
free(buf);
buf = NULL;
returnnum;
}
intmain()
{
inti = 0;
inta[CAP] = {0};
print(get_data(a));
for(i = 0; i
{
a[i] = get_even_bit(a[i]);
}
print(a);
return0;
}