c语言计算二维数组的行数,c语言如何计算二维数组长度

发布时间:2022-11-24

本文目录一览:

1、用C语言编一个程序求一个二维数组各行数求和
2、C语言二维字符串数组的行数怎么求啊
3、C语言中如何取二维数组的一行(一列)?
4、C语言如何求一个二维数组有几行,还有为什么会提示gets()是一个未定义的标识符?
5、[c语言中 用函数计算二维数组每行之和以及每列之和 怎么编程?](#c语言中 用函数计算二维数组每行之和以及每列之和 怎么编程?)

用C语言编一个程序求一个二维数组各行数求和

#include stdio.h
int main()
{
    int a[5][5] = {{0, 1, 2, 3, 4}, {1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}};
    for (int i = 0; i < 5; ++i)
    {
        int sum = 0;
        for (int j = 0; j < 5; ++j)
        {
            sum = sum + a[i][j];
        }
        printf("Line %d sum = %d\n", i, sum);
    }
    return 0;
}

C语言二维字符串数组的行数怎么求啊

#include stdio.h
int main()
{
    char str[][6] = {"abcd", "ABC", "abc"};
    printf("str行内元素%d\n", sizeof(*str)); // 这个会显示出二维数组中每个行的元素个数(这里是指可容纳的个数)
    printf("str总%d\n", sizeof(str)); // 这个会显示出二维数组中元素的个数(这里是指可容纳的个数)
    // 其实就是利用了sizeof函数来判断,我们都知道sizeof()用来判断一个类型所占用的字节数的
    // 所以:你问‘C语言二维字符串数组的行数怎么求啊?’你应该是说在定义数组时候没有显示的写出行数,可是此时需要求出行数是吧?
    // 那么 行数 = 可容纳元素总数(这里是指可容纳的个数) / 行中元素个数(这里是指可容纳的个数)
    printf("行数=%d\n", sizeof(str)/sizeof(*str));
    return 0;
}

就是考你对二维数组的理解了,别忘了数组也是C的数据类型之一哦。 只要是数据类型就可以用sizeof判断其类型占用的内存字节数。 正好C的字符就是占用一个字节,所以sizeof返回的字节数=字符个数。 ^_^!

C语言中如何取二维数组的一行(一列)?

没有简单的函数或表示方法,只能使用循环输出或者使用数组中的值。

#include stdio.h
int main()
{
    int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int b[3], n = 3;
    printf("输出第三行:\n ");
    for(int i = 0; i < 3; i++)
    {
        b[i] = a[n-1][i];
        printf("%d ", b[i]);
    }
}

数组b中存储的就是第n行的数据。

数组的使用规则:

  1. 可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。例如:
    static int a[10] = {0, 1, 2, 3, 4}; 表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
  2. 只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:
    static int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    而不能写为:static int a[10] = 1;
    请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
  3. 如不给可初始化的数组赋初值,则全部元素均为0值。
  4. 如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。例如:
    static int a[5] = {1, 2, 3, 4, 5}; 可写为:static int a[] = {1, 2, 3, 4, 5};
    动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:


C语言如何求一个二维数组有几行,还有为什么会提示gets()是一个未定义的标识符?

C语言中求一个二维数组有几行的方法如下: 假设有定义:

int nums[10][20];

二维数组行数可以用sizeof计算:

rows = sizeof(nums) / sizeof(nums[0]);

第二个问题:为什么gets会提示未定义标识?

有两种可能:

  1. 编译器支持gets库函数,但是你没有包含头文件#include stdio.h
  2. 编译器本身不支持gets库函数,因为gets函数是一个不安全函数,容易导致数组越界,所以很多编译器都不再支持这个库函数了。取而代之的是gets_s或者fgets这类相对安全的函数,可以试试。

c语言中 用函数计算二维数组每行之和以及每列之和 怎么编程?

已通过测试:

#include stdio.h
void fun(int a[][10], int row, int col)
{
    int i, j, k, sum;
    int r[10], c[10];
    k = 0;
    for(i = 0; i < row; i++)
    {
        sum = 0;
        for(j = 0; j < col; j++)
            sum += a[i][j];
        r[k] = sum;
        k++;
    }
    k = 0;
    for(j = 0; j < col; j++)
    {
        sum = 0;
        for(i = 0; i < row; i++)
            sum += a[i][j];
        c[k] = sum;
        k++;
    }
    for(k = 0; k < row; k++)
        printf("the sum of NO.%d row is %d\n", k+1, r[k]);
    for(k = 0; k < col; k++)
        printf("the sum of NO.%d column is %d\n", k+1, c[k]);
}
main()
{
    int a[10][10], row, col;
    int i, j;
    printf("Input the row and column of array:");
    scanf("%d%d", &row, &col);
    for(i = 0; i < row; i++)
        for(j = 0; j < col; j++)
            scanf("%d", &a[i][j]);
    fun(a, row, col);
}