1,c语言求数组对角线之和亲,您好:输入有问题 scanf("%d",&a[i][j]);您定位到了a[3][3]
2,C语言编程 编写求和函数和求平均值函数在主函数中输入一组10#include <stdio.h>int sum(int a[])int i,s=0;for(i=0;i<10;i++)s+=a[i];return s;}double aver(int a[])int main()int i,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);printf("和:%d\n平均值:%f",sum(a),aver(a));return 0;}//运行示例:
3,C语言数组相加数组的下标是从0开始的,并非从1因此假设定义数组int a[3],那么有效的数组元素为a[0] a[1] a[2]楼组的代码里面的数组从1开始使用,输入3*3的数组会导致越界,踩内存发生错误void fun(int arr[M][N])int i,j;for(i=1;i<=M;i++) //应该是for(i=0;i<M;i++) for(j=1;j<=N;j++) scanf("%d",&arr[i][j]);}其他也按照这个修改就可以了【C语言数组求和,c语言求数组对角线之和】
4 , 求一个C语言程序关于求和和函数调用的#includeint Sum(int n) {int i,s=0; for(i=1;i<=n;i++)s+=i; return s; } int main() {int n=10; printf ("%d\n",Sum(n)); return 0; }#includeint Sum(int n) { int result = 0; for(int i = 1;i <= n;i++) result += i; return result; } int main() { int n; scanf("%d",&n); printf("%d",Sum(n)); return 0; }5 , C语言求二维数组之和for(p=a;p<a+12;p++)1,p = a; 是ok的 。2 , p < a + 12; 就不ok了:a是一个二维数组,他的长度是12 * sizeof(int),在32位机上是48,这里的a+12 就是 a 地址后面的12 * 48 的位置,a[0] + 12 是a地址后12 * 4的位置!简单的说:a[0]是一个数组中得一个元素 , 而a是一个变量,两个本质就不一样了 。再详细一点:p=a[0]是指指针p指向数组a[]的第一个元素a[0],而a[0]相当于第1个元素的地址 。p=a,这个本身就有错了撒a是一个变量名,p是指针,将变量值赋给指针??所以就错了撒,应该是把变量地址赋给指针p,所以应该是p=&a;但是你之前没有定义变量a,所以编译的时候还是会报错,说没定义变量a.打印了下a的地址是XXXXX1C0a[0]+1的地址是XXXXX1C4a+1的地址是XXXXX 1d0因为在二维数组中, a 相当于 &a[0],a[0] 相当于 &a[0][0];所以 p=a+1 指针p移动4个数(16个字节) a[0]+1 指针p移动1个数(4字节).综上 , p<a+12,指针P已经超出了数组范围 。所以S出错 。p=a[0],是把&a[0][0]赋给p,也就是p是指向列的,因此p++操作 , 是将指针移动一列,也就是从a[i][j]移动到a[i][j+1]如果你把a赋给了p,(先不说正确与否,实际上是错的,但是假定正确)那么实际上是把&a[0]赋给了p,那么p++操作,是将指针移动一行,也就是从a[i][j]移动到a[i+1][j], 。我们再来看看 为什么说p=a本身有错,因为定义中 int *p,a[3][4]; p是指向一个数据的指针,而a实际上是指向a[0] 、a[1]、a[2]的,但是a[0] a[1] a[2]他们都是一个一位数组 , 都包含多个数据,因此要想把a赋给p,p应该这样定义 int (*p)[4] ,也就是p也指向一个含有四个元素的地址,这样a+1相当于移动一行 , 也就是从a[i][j]一定到a[i+1][j],p+1也是一定移动了个元素(就是一行元素的个数) 。因此,指针赋值的时候要注意,指针指向的元素个数究竟匹配不匹配,并不是所有指针都可以互相赋值的 。修改如下:main() int i,s=0,(*p)[4],a[3][4]=for(p=a;p<a+3;p++)for(i=0;i<4;i++)s+=*(*p+i); printf("s=%d\n",s);}想学c的话,建议下载个c语言的chm格式帮助文档,里面都有很详细的讲解二维数组简单的说,就好比10只母猪,没只母猪又生n只小猪,组成的数组 。这就是关于普通量存到内存后 , 用指针引用的话,指针的不正确表示带来的,也就是指针其实和普通量(尤其是二维数组)取元素的位置不一致导致的 。相当于他两个的偏移量是不一致的 。
推荐阅读
- 北斗卫星导航系统哪一年启动建设,我国第一颗北斗导航卫星于几年几月发射
- 数据库培训,我想学习数据库技术哪里的数据库培训好啊
- c语言程序编译器下载,怎么样很快下载C语言编译器
- 14灵动岛怎么开,苹果14灵动岛怎么设置
- 好玩的免费手游排行榜,谁推荐几个好玩免费的手机游戏
- 可以编程的软件有哪些,有哪些编程序的软件
- 苹果手机怎么更改地区时区,iphone怎么改时区
- 苹果恢复大师免费版有用吗,苹果恢复大师可靠吗买了软件真的能恢复
- c语言中指针的定义是什么,C语言的指针是什么