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语言题目 帮帮小弟