C 语言中的二维浮点数组问题

发布于 科技 2024-07-21
14个回答
  1. 匿名用户2024-01-31

    #include

    void main()

    int i,j,r,l;

    float num[50][50],num1[50][50];

    printf("请输入数组中的行数:");

    scanf("%d",&r);

    printf("请输入数组的列数:");

    scanf("%d",&l);

    for(i=0;ifor(j=0;jprintf("请输入列数 %d、列 d:",i+1,j+1);

    scanf("%f",&num[i][j]);

    转置*

    for(i=0;ifor(j=0;jnum1[i][j]=num[j][i];

    *printf("转调前:");

    for(i=0;ifor(j=0;jprintf("%.3f ",num[i][j]);

    printf("");

    printf("");

    *printf("转置后:");

    for(i=0;ifor(j=0;jprintf("%.3f ",num1[i][j]);

    printf("");

    如果您有任何错误,请查看。

  2. 匿名用户2024-01-30

    #include

    int main()

    int i,j,r,l;

    float num[10][10],num1[50][50];

    printf("请输入数组中的行数:");

    scanf("%d",&r);

    printf("请输入数组的列数:");

    scanf("%d",&l);

    for(i=0;ifor(j=0;jprintf("请输入列数 %d、列 d:",i+1,j+1);

    scanf("%f",&num[i][j]);

    转置*

    for(i=0;ifor(j=0;jnum[i][j]=num1[j][i];

    * for(i=0; ifor(j=0;jprintf("%f",num[i][j]);

    printf("");

    转置后 * for(i=0; ifor(j=0;jprintf("%f",num1[i][j]);

    printf("");

    一个小问题。

    for(i=0;ifor(j=0;jscanf("%f",&num[i][j]);

  3. 匿名用户2024-01-29

    1 2 3 4

    a[0][0]=1,a[0][1]=2,a[0][2]=3,a[0][3]=4

    a[1][0]=6,a[1][1]=6,a[1][2]=7,a[1][3]=8

    a[2][0]=6,a[2][1]=4,a[2][2]=5,a[2][3]=7

    你应该一一标记它们,不要犯错误,你没有彻底阅读这本书,这本书有这方面的所有知识,仔细阅读这本书。 一旦你读了这本书,你就会明白。

  4. 匿名用户2024-01-28

    你的理解是正确的,书中的说法是错误的。

  5. 匿名用户2024-01-27

    试着解释一下:

    int i[3] = ;我相信你明白它只是 3 个整数,一个接一个地在内存中。

    假设有一个名为 mytype 的类型,它占用 12 个字节。 然后我们还可以定义一个数组。

    mytype a[2] = ;

    它只是两个mytype,一个接一个地在内存中。

    所以我现在告诉你,我需要第二个 mytype 指针,它显然应该是 &a[1],或者 a+1,对吧? 什么是 a[1] 或 *(a+1)? 当然是 MyType。

    好了,现在让我们明确一下,这个 mytype 与前面的数组 i 相同,所以定义是:

    int a[2][3] = ;

    如何理解? a[1] 它是什么? 当然,它是一个 int [3],即三个整数的数组,我们可以添加一个双括号来取其中单个元素的值,即 a[1][0] 到 a[1][2] 表示 4、5、6

    现在你应该明白,a[1] 也被视为一个地址,对吧? a[1] 也可以写成 *(a+1)。

    等等,a+1 和 * (a+1) 都是地址,那么它们是一样的吗? 我告诉你,他们的价值观是一样的,如果你不相信,你可以打印出来看看。 但是,它们的意思并不相同,如果将 1 加到它们上,则编译器将 a+1+1 处理为 a+2,即 &a[2],这简直是越界的。

    但是 *(a+1)+1 被编译器处理为 a[1]+1,即 &a[1][1],它指向第二个数组的第二个元素 (5)。

    所以总结一下,它们都是地址,但编译器知道它们的含义不同,增量也不同。

  6. 匿名用户2024-01-26

    不理解的主要原因是数组名称和指针之间的区别不清楚。 这两者不是一回事。

    二维数组是一个连续空间,例如 int a[3][4] 那么 a 是 3*4 连续空间的名称。

    所以 sizeof(a) 是这个空间的大小,int **p; 指示 p 是一个指针,它指向指针数组。

    sizoef(p) 查找指针 p(实际上是一个整数)占用的空间量。

    当数组名称用于传递值时,它是数组的第一个地址,因此许多人将数组名称与指针 a == &a 混淆;没错,因为 a 是一个空格的名称,左边是 a 的 p == &p;不对。

    从上面,您可以大致知道数组名称和指针之间的区别。

    int *p = ;这是一个指针数组,其中的元素是指针!!

    int **q = q;合法。

    int a[3][4];二维数组。

    q = a;非法。

  7. 匿名用户2024-01-25

    您将包含四个 int 的一维数组视为一种类型,例如 int4

    那么 int a[3][4] 是 int4 a[3],那么 a 是 int4 地址,p 是 int* 地址。

  8. 匿名用户2024-01-24

    只有二级指针和二维数组,还有二维指针! 也许我没知道 *是指向地址字符的指针,而您定义的 int **p 是定义指针 *p;

    p=a 中的 a 表示数组 a 的第一个地址! 因此,*p=a 是合法的,这是不合法的。

  9. 匿名用户2024-01-23

    谭浩强的书说得很清楚。 翻转它。

  10. 匿名用户2024-01-22

    int* p=a;这对当前的编译器无效,a 的类型是 int(*)4],并且与 p 的类型不同,一些旧的编辑器。

    像 Turbo C 类型检查这样的翻译器并不严格,可以使用。

    int* p=a[0];这是有效的,但它不符合你的意图,例如,如果你想访问 a[1][1],你只能使用 p[5],而不能使用 p[1][1],并且这个指针 p 将 a 视为具有 12 个元素的一维数组,而不是具有 3 行和 4 列的矩阵。

    正确的做法是:

    int (*p)[4]=a;

    如果要使用指针来引用数组,则指针的类型应定义为数组第一个元素的地址类代码日历。

    比如。 int a[3]=;a 的元素是 int,元素地址类是 int*,那么你可以定义一个 int 指针来引用 a:

    int*p=a;

    而。 int[3][4];a 的元素是 int[4],它是 4 个 int 的数组,地址类型是 int(*)4],那么这个指针定义为:

    int (*p)[4]=a;

  11. 匿名用户2024-01-21

    我都试过了,但我不知道有什么区别。 袜子。

    其次,对于数组,指针是数组的名称,它指向数组的第一个地址,一般不使用指向数组的指针。

    再次,对于恒东来说,要刺激标准,或者采取这种分配方式:

    int a[3][4]=,

  12. 匿名用户2024-01-20

    1. name[num][10] 表示一行 num(10) 中 10 列的数组,num 代表 10 人,后面的 10 表示 name 字符串的长度(最长的是 9,后面系统会自动添加。'\0')

    2. 不能使用一维数组定义名称,因为它是字符类型的数组,并且名称包含多个字符。 一维数组只能包含一个名称。

    3. STMP 是一个存储字符串的一维数组。 它不用于存储 10 个人的名字,而只是作为字符串交换的临时变量。

  13. 匿名用户2024-01-19

    根据上图,*(a+0)+1) a[0][1]。

    数字的优先级高于数字的优先级,因此 *(*a+1)) 并非您错误地认为的情况。

    优先级表可以在这里找到。

  14. 匿名用户2024-01-18

    *(*a+0)+1) 相当于 *(*a+1),毕竟 a+0=a。 所以后者也意味着 a[0][1]。

相关回答
11个回答2024-07-21

这显然是一个二维数组,二维数组可以看作是一维数组,for(i = 0; ifor(j = 0; j < n; j++)printf("%d",a[i][j) >>>More

12个回答2024-07-21

大多数语言都以类似的方式使用数组,具有循环流控制。 >>>More

9个回答2024-07-21

new 是 C++ 中动态应用于堆内存的函数。

如果你想在 C 语言中使用 malloc,它包含在头文件 stdlib 中。 >>>More

14个回答2024-07-21

由于编译器默认为 16 基数写入的整数(如 0x40a80000),因此您无法这样做。 因此,不可能实现您的愿景。 如果必须以十六进制形式分配浮点数,则必须以其他方式执行。 >>>More