C语言编程 调试!!

n 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:
⑴ 2个数的和。
⑵ 2个数交换值。
要求用函数指针调用这两个函数,结果在主函数中输出。
main()
{ int a,b,c,(*p)();
scanf("%d,%d",&a,&b);
p=sum;
*p(a,b,c);
p=swap;
*p(a,b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",a,b);
}
sum(int a,int b,int c)
{ c=a+b;}
swap(int a;int b)
{ int t;
t=a;
a=b;
b=t;
}
调试程序时注意参数传递的是数值还是地址。
拜托各位快一点!

方法/步骤

1.要对编程环境左边的一条竖直的空开的地方进行点击,点击的是你要调试的相应的语句

2.点击窗口上方的工具栏的调试界面,点击逐语句或逐过程,都没关系

3.开始调试,在调试过程中每个调试语句都要按一次F5键,在键盘上按下,你可以看到执行的当前的语句中,左边位置的红点有个箭头

4.在每次调试语句中,变量值发生改变时,下方的小界面都会显示出来,看是否正确

5.不断地重复这个步骤,知道发现错误的地方为止

6.发现错误后,停止调试,修改相应的代码,即完成此次调试

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-06
第2个回答  推荐于2018-04-30
int sum(int *a,int *b);
int swap(int *a,int *b);
void main()
{ int a,b,c,(*p)(int*,int*);//函数指针定义时 必须和其要指向函数的类型一样 所以都得带两个形参
scanf("%d,%d",&a,&b);
p=sum;
c=p(&a,&b);
p=swap;
p(&a,&b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",a,b);
}
int sum(int *a,int *b)
{ int c=*a+*b;
return c;}
int swap(int *a,int *b)//函数形参中间是逗号
{ int t;
t=*a;
*a=*b;
*b=t;
return 1;
}本回答被网友采纳
第3个回答  2009-09-01
这块我多了一个process函数,虽然看起来有点复杂,但其功能很强大,也将非常通用。通过将函数指针作为参数,只要函数满足函数指针的参数形式,都可用此函数处理。
int process(int *,int *,int(*p)(int *,int *));
int sum(int *,int *);
int swap(int *,int *);
void main()
{
int a,b,sum0;
printf("Plese input an integer:\na=");
scanf("%d",&a);
printf("Plese input another integer:\nb=");
scanf("%d",&b);
printf("sum0=%d\n",sum0=process(&a,&b,sum));
process(&a,&b,swap);
printf("After swaping:\na=%d,b=%d\n");
}
int sum(int *a,int *b)
{
return *a+*b;
}
int swap(int *a,int *b)
{
int *p=a;
a=b;
b=p;
return 1;
}
int process(int *a,int *b,int(*p)(int *,int *))
{
return p(a,b);
}
第4个回答  2009-09-03
void main()
{ int sum(int*,int*),swap(int*,int*);
int (*p)(int*,int*);
int a,b,c;
printf("a,b=");
scanf("%d,%d",&a,&b);
p=sum;
c=p(&a,&b);
printf("sum=%d\n",c);
p=swap;
p(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
int sum(int *a,int *b)
{ int c;
c=*a+*b;
}
int swap(int *a,int *b)
{ int t;
t=*a;
*a=*b;
*b=t;
}
相似回答