C语言中怎样输出一个随机二维数组?
#include
#include
#include
int main()
{
int a[10][10];
int k=0;
int x,y;
for(int i=0;i
{
for(int j=0;j
{
a[j][i]=k;
k++;
}
}
for(int i=0;i
{
for(int j=0;j
{
printf(" %d",a[j][i]);
}
printf("\n");
}
printf("输入想生成多少个");
int n;
scanf("%d",&n);
srand(time(0));/*随机数种子*/
for(int i=0;i
C语言中如何将二维数组作为函数的参数传递?
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:它们是合法且等价,也可以使用如下形式:但不能省略第二维的大小,如下面的定义是不合法的,编译时会出错:因为从实参传递来的是数组的起始地址,如果在形参中不说明列数,编译器将无法定位元素的的位置。
函数原型typefun(type(name*)[size])type是你要定义的类型,fun是函数名,name是在函数中二维数组的名字,size是二维数组第2维的长度。这样调用这个函数只需要把二维数组函数名传递就可以了。
[C语言]用二维数组编写程序,输入3个字符串,然后反向输出每个字符串以及字符的长度?
多个字符串的输入输出#include <stdio.h>int main(){char a[3][20];char *p;int i;p=a[0];for (i=0;i<3;i++)gets(a[i])
;// for (i=0;i<3;i++)printf("%s\n",a[i])
; // 可以直接用 a[i]:for (i=0;i<3;i++)printf("%s\n",p+i*20)
; //指针寻址;//第二个字符串开始的地址,应该是a[0][0]后移20个字符的地方。p是指向字符的指针}
C语言二维数组如何交换两行或者两列?
方法有很多:
1、可以直接找到数组对应行的元素,进行交换数据,改变原数组内容。
2、可以定义指针数组指向每行的首地址,交换指针地址,按顺序打印每个指针为首的行数据,得到数据交换效果,原数组内容不变。我这里用第2种方法给你写了一个,你参考吧。#include <stdio.h>int main (){ int nArry[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}}; int *p[4],i,j,*psave,index[2];//p[]分别指向每行首地址 printf("打印原数组:"); i=16; p[0]=&nArry[0][0]; while(i-->0) { if((i+1)%4==0) printf("\n"); printf("%d ",*(p[0])); p[0]++; } while(1) { printf("\n\n输入2个你要交换的行号:"); scanf("%d%d",&index[0],&index[1]); for(i=0;i<4;i++) { p[i]=&nArry[i][0]; } psave=p[index[0]-1]; p[index[0]-1]=p[index[1]-1]; p[index[1]-1]=psave; printf("第%d行和第%d行调换后的数组为:\n",index[0],index[1]); for(i=0;i<4;i++) //按顺序打印 首地址指针开头的行数字 { for(j=0;j<4;j++) { printf("%d ",*(p[i]+j)); } printf("\n"); } } return 0;}
还没有评论,来说两句吧...