当前位置:编程学习 > C/C++ >>

C语言 指针与数组 加减问题 不知道哪里错了

#include<stdio.h> void print(int *a,int *b,int C); void add(int *a,int *b,int *c,int C); void sub(int *a,int *b,int *c,int C); int main(void) { int a[][3]={2,5,1,0,3,-1}; int b[][3]={1,0,2,-1,4,-2}; int c[][3]={0}; int i; print(a,2,3); printf("\n"); print(b,2,3); printf("\n"); for(i=0;i<2;i++) add(a[i],b[i],c[i],3); printf("\n"); for(i=0;i<2;i++) sub(a[i],b[i],c[i],3); printf("\n"); } void print(int *a,int r,int C) { int i,j; for(j=0;j<r;j++){ for(i=0;i<C;i++) printf("%3d ",a[j*C+i]); printf("\n"); } } void add(int *a,int *b,int *c,int C) { int i; for(i=0;i<C;i++){ c[i]=a[i]+b[i]; printf("%3d ",c[i]); } printf("\n"); } void sub(int *a,int *b,int *c,int C) { int i; for(i=0;i<C;i++){ c[i]=a[i]-b[i]; printf("%3d ",c[i]); } printf("\n"); }
答案:#include<stdio.h>

void print(int *a,int b,int C);             这里你先前写的是*b,应当是b;
void add(int *a,int *b,int *c,int C);
void sub(int *a,int *b,int *c,int C);

int main(void)
{
	int a[][3]={2,5,1,0,3,-1};
	int b[][3]={1,0,2,-1,4,-2};
	int c[][3]={0};
	int i;
	
	print(a[0],2,3);       这里应该给为  a[0],不应该是a;
	printf("\n");
	
	print(b[0],2,3);     同上!
	printf("\n");

		
	for(i=0;i<2;i++)
		add(a[i],b[i],c[i],3);
	printf("\n");


	for(i=0;i<2;i++)
		sub(a[i],b[i],c[i],3);
	printf("\n");
}
void print(int *a,int r,int C)
{
	int i,j;

	for(j=0;j<r;j++){
		for(i=0;i<C;i++)
			printf("%3d ",a[j*C+i]);
		printf("\n");
	}
}
void add(int *a,int *b,int *c,int C)
{
	int i;
	
	
	for(i=0;i<C;i++){
		c[i]=a[i]+b[i];
		printf("%3d ",c[i]);
	}
	printf("\n");
}
void sub(int *a,int *b,int *c,int C)
{
	int i;
	
	
	for(i=0;i<C;i++){
		c[i]=a[i]-b[i];
		printf("%3d ",c[i]);
	}
	printf("\n");
}

这样程序就没有错了,不知道结果是不是你要的!!
其他:int c[][3]={0};  系统会自动判定为int c[1][3] = { 0 };
改成 int c[2][3] = { 0 }; 应该就好了 

另外,你既然是 int main(void)
那最好有个return 0; 成功了,
#include<stdio.h>

void print(int *a,int b,int C);
void add(int *a,int *b,int *c,int C);
void sub(int *a,int *b,int *c,int C);

int main(void)
{
	int a[][3]={2,5,1,0,3,-1};
	int *ap=&a[0][0];
	int b[][3]={1,0,2,-1,4,-2};
	int *bp=&b[0][0];
	int c[][3]={0};
	int *cp=&c[0][0];
	int i;
	
	print(ap,2,3);
	printf("\n");
	
	print(bp,2,3);
	printf("\n");

		
	for(i=0;i<2;i++)
		add(a[i],b[i],c[i],3);
	printf("\n");


	for(i=0;i<2;i++)
		sub(a[i],b[i],c[i],3);
	printf("\n");
}
void print(int *a,int r,int C)
{
	int i,j;

	for(j=0;j<r;j++){
		for(i=0;i<C;i++)
			printf("%3d ",a[j*C+i]);
		printf("\n");
	}
}
void add(int *a,int *b,int *c,int C)
{
	int i;
	
	
	for(i=0;i<C;i++){
		c[i]=a[i]+b[i];
		printf("%3d ",c[i]);
	}
	printf("\n");
}
void sub(int *a,int *b,int *c,int C)
{
	int i;
	
	
	for(i=0;i<C;i++){
		c[i]=a[i]-b[i];
		printf("%3d ",c[i]);
	}
	printf("\n");
} 

上一个:一道有难度的C语言题目 帮帮忙 写下 会追加分数
下一个:一道有点难度的C语言题目 帮帮小弟

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,