本文目录一览:
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
行的数据。
数组的使用规则:
- 可以只给部分元素赋初值。当
{}
中值的个数少于元素个数时,只给前面部分元素赋值。例如:
static int a[10] = {0, 1, 2, 3, 4};
表示只给a[0]~a[4]
5个元素赋值,而后5个元素自动赋0值。 - 只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:
static int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
而不能写为:static int a[10] = 1;
请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。 - 如不给可初始化的数组赋初值,则全部元素均为0值。
- 如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。例如:
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
会提示未定义标识?
有两种可能:
- 编译器支持
gets
库函数,但是你没有包含头文件#include stdio.h
; - 编译器本身不支持
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);
}