1. c语言二维数组 定义一个二维数组 a[2][2];scanf("%s",a[1]);是什么意思
就是将字符串 b拷贝到数组a中,这是一个复制函数,在string 头文件有定义,所以你可以查阅它的使用方法
那个二维数组就相当于 它的每个元素又是一维数组,上例相当于 有2个一维数组,每个数组又含有两个元素,所以a[1]就是第二个一维数组的首地址,可以用来输入字符串
2. 为什么C语言中二维数组的数组名a和*a表示的是同一个值
当定义二维数组a[M][N]时,数组名可以认为是二维指针,其指向二维数组的首地址。
于是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。
在二维数组中,所有元素都是紧密排列的,这样整个数组的首地址,第一行的首地址,和第一个元素的首地址,即a, a[0], &a[0][0] 都是相同的。
于是a和*a的值是相同的。
3. C语言从键盘上输入一个二维数组再输出!!谢谢
#include"stdio.h"
void main()
{
int a[3][3];
int i,j;
printf("please input the number:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
多了几个分号,还有输入时应该用空格或者回车分开各个数据
4. C语言二维数组问题
不是
这么说吧,数组名本身就是指针,指向数组的第一个元素
至于你所说的调用调用二级(二维吧)数组,难道不是如普通变量般直接调用吗?
根据问题补充说,这是不允许的,main()函数的形参是固定的不能传递指针。而一般的自定义函数只能用传递首地址的形式来传递二维数组,例子如下:
定义:int a[X][Y];
int func(int *p,int x,int y){ //x,y即为调用x行y列的元素
printf("%d\n",p+x*X+y); //这里是通过计算指针位置实现
return 0;}
调用: func(a,3,3);
这种通过计算地址方法调用相当麻烦。。可以考虑将数组定义在结构中,再将结构进行形参传递,当这样会降低效率...例子如下
#include<stdio.h>
typedef struct{
int a[5][5];}TE;
TE test;
int func(TE a,int x,int y){
printf("%d\n",a.a[x][y]);
return 0;}
int main()
{
test.a[3][3]=5;
func(test,3,3);
getch();
return 0;}
5. C语言 二维数组的使用
实际上是数据的一种组织方式,你可以想象成: 二维数组:行x列的长方形 三位数组:长x宽x高 的长方体 在c语言中,数组的意义,就是让数组的名字可以当作指针来使用,这样就能很方便的定位数据。 比如你有一个数组arry[300][300][300] 那么他能存储300*300*300=27000000个数据,如果要移动指针,那么非常浪费,你需要移动27000000次才能移动到最后,而用数组的名字*(arry[300][300]++)只要300次就可以移动到最后一个数据。 当然数组和指针不仅仅是这个用途,还有更多精妙的用法等你灵光一现。
6. c语言二维数组的一个问题
原程序没有打印过换行符啊,所以不会分行打印成你说的样子,如果需要,改成下面这样:
#include <stdio.h>
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int i,j;
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{ printf("%5d",a[i][j]);
}
printf("\n");
}
}
7. 急。。。。(c语言)定义二维数组表示一个矩阵,求上三角所有元素之和。代码 。。。。。
函数 fun() 计算上三角所有元素之和。参数1是数组,参数2是n*n数组大小n.
返回 上三角元素之和。
调用方法: fun(&a[0][0],n)
程序如下:
#include<stdio.h>
#include<stdlib.h>
float fun(float *a, int n){
int i,j;
float sum=0;
for (j=0;j<n;j++)
for (i=j;i<n;i++)sum = sum + a[j*n+i];
return sum;
}
main(){
float a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int n=4;
printf("%g",fun(&a[0][0],n));
return 0;
}
算例输出: 70
8. 急急!!!如何用c语言输入和输出一个二维数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[2][2];
int i,j;
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d",a[i][j]);
return 0;
}
运行成功