新人,请教各位~~帮我看看程序哪里错了

polar_1995 2018-01-20 02:52:18
#include <stdio.h>
int s(int a[],int n);
int main(void)
{
int a[4][3]={{1,2,3},{4,5,6},{7,8,9}};
int *b[10];
int k=1;
for(int i=1;i<4;i++)
{
for(int j=1;j<3;j++)
{
b[k]=&a[i][j];
k++;
}
}


int sum;
sum=s(*b,10);
printf("%d ",sum);
return 1;
}
int s(int a[],int n)
{
int i,sum=1;
for(i=1;i<n;i++)
{sum+=a[i];}
return sum;
}
...全文
539 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-01-22
  • 打赏
  • 举报
回复
“多一少一”问题占程序员常犯错误的10%以上! 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个? <、<=、==、>、>=中的哪个?
自信男孩 2018-01-20
  • 打赏
  • 举报
回复
#include <stdio.h>

int s(int *a[],int n);

int main(void)
{
	int a[4][3]={{1,2,3},{4,5,6},{7,8,9}};
	int *b[12];
	int k = 0;
	for(int i = 0; i < 4; i++)
	{
		for(int j = 0; j < 3; j++)
		{
			b[k] = &a[i][j];
			k++;
		}
	}


	int sum;
	sum=s(b,12);
	printf("%d ",sum);
	return 1;
}
int s(int *a[],int n)
{
	int i,sum = 0;

	for(i = 0; i < n; i++) {
		printf("%d\t", *a[i]);
		sum += *a[i];
	}
	return sum;
}
参考一下; 数组下表是从0开始不是从1开始。出现异常,主要是数组越界。
小声逼逼 2018-01-20
  • 打赏
  • 举报
回复
C语言中数组下标从0开始.....
polar_1995 2018-01-20
  • 打赏
  • 举报
回复
#include <stdio.h> int s(int a[],int n); int main(void) { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b[9]; int k=1; for(int i=1;i<4;i++) { for(int j=1;j<3;j++) { b[k]=&a[i][j]; k++; } } int sum; sum=s(*b,9); printf("%d ",sum); return 0; } int s(int a[],int n) { int i,sum=1; for(i=1;i<n;i++) {sum+=a[i];} return sum; } 改成这样,编译通过 但结果显示(段错误,核心已转储)
faihung 2018-01-20
  • 打赏
  • 举报
回复
你4行3列的数组怎么变成了,3行3列的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧