CodeSky 代码之空

随手记录自己的学习过程

C 转换说明符%g

2014-05-02 13:14分类: C评论: 0

题目: 编写一个函数,返回一个double数组中最大的和最小的数之间的差值,并在一个简单的程序中测试这个函数。 对于题目无感,很容易,只是有一点疑惑,因为答案写的时候是

1printf("The gap between  max and min is: %g\n",gap( array, WIDTH));
2

感觉很神奇,%g是什么?在我的笔记-说明符中并没有记录,然后翻到书上的章节里,也没有详细介绍,只是把它归类为解释成浮点型。

结果输出:

2.6
9.2
The dif between max and min is : 6.6

没有多余的0,看着很舒服。

于是乎,理解了%g,很好的东西。

我写的完整版:

1#include <stdio.h>
2
3#define WIDTH 6
4
5float dif(double [], int num);
6
7int main(void)
8{
9    double array[] = {4.3, 5.3, 2.6, 9.2, 2.8, 3.6};
10    printf("The dif between max and min is : %g", dif(array, WIDTH));
11
12    return 0;
13}
14
15float dif(double array[], int num)
16{
17    int i;
18    float max, min;
19
20    for (i = 0, max = *array, min = *array; i < num; i++) {
21        if (*(array + i) > max)
22            max = *(array + i);
23        if (*(array + i) < min)
24            min = *(array + i);
25    }
26
27    printf("%g\n", min);
28    printf("%g\n", max);
29
30    return max - min;
31}
32

评论 (0)