| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:数组问题
只看楼主 加入收藏
小乙哥
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2011-5-30
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
数组问题
定义一个double类型的二维数组data[12][5].用2.0~3.0的值初始化第一列元素(每步增加0.1)。如果行中的第一个元素值是x,该行的其他元素值分别是1/x,x的平方,x的3次方,x的4次方。输出数组中的值,每一行放在一行上,每一列要有标题。
求解,最好能有注释,还有解题思路。
2011-06-22 00:28
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:4 
2.0 + 0.1 * 11 = 3.1
这咋办?

[ 本帖最后由 voidx 于 2011-6-22 00:31 编辑 ]
2011-06-22 00:30
zy623132167
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:12
专家分:21
注 册:2011-6-22
收藏
得分:4 
题目的第一句话是不是有问题的,像楼上说的,值会超过3.0的。

如果三十年后这个世上还有坚持这个词!
2011-06-22 09:48
小乙哥
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2011-5-30
收藏
得分:0 
回复 2楼 voidx
就3.1吧,题目可能有点问题
2011-06-22 11:45
小乙哥
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2011-5-30
收藏
得分:0 
回复 2楼 voidx
还有个问题,我发现如果用循环来给初始值的时候,只能到2.9,到不了3,这是为什么
2011-06-22 11:50
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
不用数组这么写,用数组的情况楼主自己写写试试看

程序代码:
#include <stdio.h>
#include <math.h>
int main() {
    double i;
    printf("%10s%10s%10s%10s%10s\n", "i", "1 / i", "i ^ 2", "i ^ 3", "i ^ 4");
    for (i = 2; i < 3.15; i += 0.1) {
        printf("%10.5lf%10.5lf%10.5lf%10.5lf%10.5lf\n", i, pow(i, -1), pow(i, 2), pow(i, 3), pow(i, 4));
    }
    return 0;
}
2011-06-22 12:14
小乙哥
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2011-5-30
收藏
得分:0 
回复 6楼 voidx
好吧, 我就用数组写了一段代码,不过看起来真的很无奈的一段代码,感觉好像跟数组一点关系也没有。我知道你肯定还有更好的用数组的方法,教教我吧。
程序代码:
# include <stdio.h>

int main(void)
{
    double data[12][5];
    double a;

    data[0][0] = 2.0;
    data[1][0] = 2.1;
    data[2][0] = 2.2;
    data[3][0] = 2.3;
    data[4][0] = 2.4;
    data[5][0] = 2.5;
    data[6][0] = 2.6;
    data[7][0] = 2.7;
    data[8][0] = 2.8;
    data[9][0] = 2.9;
    data[10][0] = 3.0;
    data[11][0] = 3.1;

    printf("  1         2         3         4         5\n\n");

    for(int i = 0; i < 12; i++)
    {
        for(int j = 0; j < 5; j++)
        {
            switch(j)
            {
            case 0:
                a = data[i][0];
                break;
            case 1:
                a = 1.0 / data[i][0];
                break;
            case 2:
                a = data[i][0] * data[i][0];
                break;
            case 3:
                a = data[i][0] * data[i][0] * data[i][0];
                break;
            case 4:
                a = data[i][0] * data[i][0] * data[i][0] * data[i][0];
                break;
            }
            printf("  %lf", a);
        }
        printf("\n");
    }

    return 0;
}


[ 本帖最后由 小乙哥 于 2011-6-22 20:49 编辑 ]
2011-06-22 20:45
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
这样写不就好了

程序代码:
#include <stdio.h>
#include <math.h>

int main() {
    double data[12][5] = {0}, a;
    int i, j;
    for (i = 0, a = 2; i < 12; i++, a += 0.1) {
        data[i][0] = a;
        data[i][1] = pow(a, -1);
        for (j = 2; j < 5; j++) {
            data[i][j] = pow(a, j);
        }
    }
    printf("%10s%10s%10s%10s%10s\n", "i", "1 / i", "i ^ 2", "i ^ 3", "i ^ 4");
    for (i = 0; i < 12; i++) {
        for (j = 0; j < 5; j++) {
            printf("%10.5lf", data[i][j]);
        }
        printf("\n");
    }
    return 0;
}
2011-06-22 21:43
快速回复:数组问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016676 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved