c语言:怎样输出一个四行四列的二维数组?

c语言:怎样输出一个四行四列的二维数组?,第1张

按规律打印m行n列的数字:

#include<stdioh>
int main()
{
    int m,n,i,j,k;
    k=1;
    printf("请输入m:");
    scanf("%d",&m);
    printf("请输入n:");
    scanf("%d",&n);
    int a[m][n];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            a[j][i]=k;
            k++;
        }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    return 0;
}

输出一个如图所示的四行四列的二维数组

#include<stdioh>
int main()
{
    int i,j;
    for(i=1;i<4;i++)
    {
        for(j=0;j<4;j++)
            printf("%d",4j+i);
        printf("\n")
    }
}

#include<stdioh>
void main ()
{
int a[6] ={1,2,3,4,5,6};
int i,j,k;
for(i=0,k=0;i<6;i++,k++)
for(j=i;j<k+6;j++)
{
if(j>5)
{ printf("%d",0);
j=j%5;
}
else
printf("%d",a[j]);
}
printf(“\n”);
}
纯手打,你别复制,看一下思想就好,复制过去可能有错误。

1在你的程序中有这么一句for(i=9;i<=9;i++)
{
for(r=9;r<=9;r++)
在for循环语句中表达式1,也就是相当于i=0;这一句,初值表达式,是对循环变量赋初值的,输出a[i][r]当然要从i=0,r=0开始。
2for循环中,表达式2,也就是本题中的i<9,是循环的条件,有时也可以说是循环的次数。
3注意,在数组中,下标的合理长度是[0,
数组长度减1]所以应该是
for(i=0;i<9;i++){
for(r=0;r<9;r++)
修改后如下:
#include"stdioh"
void
main()
{
int
a[9][9]={
{10,11,15,19,18,45,66,22,99},
{50,40,61,85,67,41,63,51,30},
{25,29,84,66,11,26,18,59,19},
{10,88,98,89,31,36,39,28,32},
{22,34,41,32,75,73,78,45,11},
{12,35,38,23,21,59,17,44,47},
{31,41,16,76,91,16,14,67,42},
{49,54,59,56,87,78,25,26,93},
{60,34,34,32,56,33,38,37,95}
},i,r;
for(i=0;i<9;i++){
for(r=0;r<9;r++)
printf("%3d",a[i][r]);
printf("\n");
}
}
运行结果为:
不明白,还可以问啊!

#include <stdioh>
int a[10][10];
int main()
{
int i , j;
//input data
for( i = 0; i < 10; i++)//多少行
{
for(j = 0; j < 10; j++)//多少列
{
scanf("%d", &a[i][j]);//输入第i行j列的值
}
}
//ouput data
for( i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
printf("%d ",a[i][j]);
}
}
return 0;
}

#include <stdioh>
int main()
{
int a[100][100],b[100][100]; //n,m<100,所以定义100100的数组就够用了
int m,n,i,j;

scanf("%d %d", &n, &m );
for( i=0;i<n;i++ )
{
for(j=0;j<m;j++ )
{
scanf("%d", &a[i][j] );
b[j][i]=a[i][j] ;//交换位置存储
}
}

for( i=0;i<m;i++ ) //b是mn
{
for(j=0;j<n;j++ )
{
printf("%d ", b[i][j] );
}

}
printf("\n");
for( i=0;i<n;i++ )//a是nm
{
for(j=0;j<m;j++ )
{
printf("%d ", a[i][j] );
}

}
printf("\n");
return 0;
}

二维数组无法作为参数直接传递给函数,但是可以利用二维数组内部数据的连续性,将二维数组的地址按照一维数组的方式传递给函数,并传入对应的行列数,从而实现函数内打印二维数组的效果。

以整型为例,具体方式如下:

void print_array(int a, int m, int n)//a为一个m行,n列的二维数组的首地址。
{
    int i, j;
    for(i = 0; i < m; i ++)
    {
        for(j = 0; j < n; j ++)
        {
            printf("%d,", a[in+j]);//a[in+j]也就是原始二维数组第i行第j列的元素。
        }
        printf("\n");//每行结束输出换行。
    }
}

二维数组是由一维数组构成的,循环第一维输出就可以了——

#include "stdioh"
int main(int argc,char argv[]){
char s[][30]={"12345","abcde","647hfsdjka","ABCD","","Type","Moon","cxt"};
int i;
for(i=0;i<7;puts(s[i++]));
return 0;
}

运行结果:

空的那一行就是那个空字符串的输出结果。

代码,实现先输入二维数组的行数m和列数n,并再输入mn个整型数据存到动态二维数组中。最后输出所有二维数组的元素值。

int main()

{

intp;//定义二维指针

int m,n;//行数和列数。

int i,j;

scanf("%d%d",&m,&n);//输入行数和列数。

if(m&lt;=0||n&lt;=0)return-1;//行数或列数非法。

p=(int)malloc(sizeof(int)m);//申请一组一维指针空间。

for(i=0;i&lt;m;i++)

p&lt;i&gt;=(int)malloc(sizeof(int)n);//对于每个一维指针,申请一行数据的空间。

for(i=0;i&lt;m;i++)

for(j=0;j&lt;n;j++)

scanf("%d",&p&lt;i&gt;[j]);//输入第i行第j列的数据。其中&p&lt;i&gt;[j]也可以写作p&lt;i&gt;+j或者是(p+i)+j功能相同。

printf("输入的数组为%d行%d列:\n",m,n);

for(i=0;i&lt;m;i++)

{

for(j=0;j&lt;n;j++)//这个循环可以输出一行元素。

printf("%d",p&lt;i&gt;[j]);//输出i行j列的元素。

printf("\n");//每行输入结束加换行符。

}

//释放内存

for(i=0;i&lt;m;i++)

free(p&lt;i&gt;);

free(p);

return 0;

}

扩展资料:


函数:free

功能:与malloc()函数配对使用,释放malloc函数申请的动态内存。(另:对于free(p)这句语句,如果p是NULL指针,那么free对p无论 *** 作多少次都不会出问题。如果p不是NULL指针,那么free对p连续 *** 作两次就会导致程序运行错误。)

用法;void free(voidptr);

程序例:

C/C++代码如下:

#include&lt;stringh&gt;

#include&lt;stdioh&gt;

#include&lt;alloch&gt;//or#include&lt;malloch&gt;

int main(void)

{

charstr;

/allocate memory for string/

str=(char)malloc(10);

/copy"Hello"to string/

strcpy(str,"Hello");

/display string/

printf("String is%s\n",str);

/free memory/

free(str);

str=NULL;

return 0;

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12672946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存