新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
网站的建设成都创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为成都橡塑保温等企业提供专业服务。
int main(void)
{
int ar[3][3]= { {1,2,3},
{4,5,6},
{7,8,9}
};
int num;
int i,j;
int k = 0,sum=0;
int (*ptr)[3];
ptr = ar;
num = sizeof(ar) / sizeof(ar[0]);
printf("num = %d\n",num);
printf("%d\n",*(*(ptr +0) + 1));
for(i = 0; i 3 ;i++)
{
for(j = 0 ;j 3; j++)
{
k += *(*(ptr + i)+j);
//sum += k;
}
}
printf("%d\n",k);
return 0;
}
扩展资料:
main()函数用法:
大多数UNIX系统对main函数提供了三个参数,原型如下:
intmain(intargc,char*argv[],char*env[]);
其中第三个参数是环境表地址。
ANSIC规定main函数只有两个参数,而且第三个参数与全局变量environ相比也没有带来更多益处,所以POSIX.1也规定应使用environ而不使用第三个参数。
通常用getenv和putenv函数来存取特定的环境变量,而不是用environ变量。
main函数的原型多是下面这种形式:
intmain(intargc,char*argv[]),参数argc代表了输入参数的个数,char*argv[]表示传入的参数的字符串,是一个字符串数组。
例如在linux平台下编写一个小程序:
int main(intargc,char*argv[])
{
int i;
printf("argc:%d\n",argc);
for(i=0;i<argc;i++)
{
printf("argv[%d]:%s\n",i,argv[i]);
}
exit(0);
}
用gcc编译后形成一个a.out的可执行的文件,运行a.out,其结果是:
argc=1,argv[0]=”a.out”
运行的程序的文件名,也占用一个参数位置,也就是说argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。这个赋值过程是操作系统完成的,只需要拿来用就可以了。
在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以for(i=0;i<argc;i++)这句也可以换成while(*argv!=NULL)
int main(intargc)省略其它参数的定义也是可以的,这样运行时候argc就直接返回参数个数,而不返回其它。
运行命令行参数带有char*argv[]的时候,如果输入参数带有空格,应该用双引号括起来。
至少应该要贴出你的错误代码吧?
目测my_arr的长度与参数的长度不一致。上面是[3][4],下面是[4]
求一个二维数组元素的周边之和:源程序如下:
#define N 3//宏定义N=3
#include stdio.h
void main()
{
int number[N][N] = { {1,2,3},{4,5,6},{7,8,9} };//定义二维数组并赋初值
int i, j;//定义循环变量
int sum = 0;//定义加和变量,并初始化赋值为0
for (i = 0; i N; i++)//控制行变量遍历
for (j = 0; j N; j++)//控制列变量遍历
if (i == 0 || i == (N-1) || j == 0 || j == (N-1))//判断是否为周边元素
sum += number[i][j];//进行求和运算
printf("%d", sum);//输出和
}
其中,上述程序中变量N,为数组的行列维数,可灵活进行修改。
程序运行结果如下:
扩展资料:
用行指针实现求一个二维数组四周元素的平均值。
#include stdio.h
#include stdlib.h
#define M 4
#define N 5
float fun(int(*p)[N], int m)
{
int i, j, k = 0;//定义循环变量
float sum, ave;//定义和变量、平均数变量
sum = 0;//初始化和变量为0
for (i = 0; i m; i++)//控制行变量遍历
for (j = 0; j N; j++)//控制列变量遍历
if(i == 0 || i == (m-1) || j == 0 || j == (N-1))//判断是否为周边元素
{
sum += p[i][j]; //进行求和运算
k++;
}
ave = sum / k;//求平均
return ave;//返回平均数
}
int main()
{
int a[M][N] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20} };
int i, j;
float ave;
for (i = 0; i M; i++)//遍历打印出数组全部元素
{
for (j = 0; j N; j++)
printf("%4d", a[i][j]);
printf("\n");
}
ave = fun(a,M);//函数计算并返回平均值
printf("average=%.2f\n", ave);//输出平均值
system("pause");//任意键继续
return 0;
}
扩展资料程序运行结果:
double my_sum(double paired_value[][2],int n ) //需要指定二维数组后面一位,这样编译器才知道二维数组的列数。
你也太天真了,如果不用数组的话,c语言怎么能一次返回一组数据呢??
如果要返回多个数,就要把数组弄进去,存放到数组中,要不就一次返回一个值。
个人建议,就一次返回一行的和就行了。程序改成:
int sum(int a[10000][6], int n) //n表示行号
{
int i,j;
int m=0;
for(j=0;j6;j++)
{
m=m+a[n][j];
}
return(m);
}
这样在主程序中,
将
printf("第%d行各数之和为:%d",i+1,sum(a));
printf("\n");/*使元素分行*/
改成
for(i=0;i10000;i++)
{
printf("第%d行各数之和为:%d\n",i+1,sum(a,i));
}
已通过测试
#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;irow;i++)
{ sum=0;
for(j=0;jcol;j++)
sum+=a[i][j];
r[k]=sum;
k++;
}
k=0;
for(j=0;jcol;j++)
{ sum=0;
for(i=0;irow;i++)
sum+=a[i][j];
c[k]=sum;
k++;
}
for(k=0;krow;k++)
printf("the sum of NO.%d row is %d\n",k+1,r[k]);
for(k=0;kcol;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;irow;i++)
for(j=0;jcol;j++)
scanf("%d",a[i][j]);
fun(a,row,col);
}