关于C语言编程过程中遇到的问题?
我想实现一个主函数调用INTSHUCHU(INTA,INTB)函数SHUCHU函数中间用了printf输出了一个表达式可是主函数的参数在js在调用前赋值为0,在每次函数调...
我想实现一个主函数调用 INT SHUCHU(INT A,INT B)函数
SHUCHU 函数中间用了printf输出了一个表达式
可是主函数的参数在js在调用前赋值为0,在每次函数调用前执行JS=JS+1的操作,可是执行了函数调用之后,JS的值变为了254,
我调用过程是这样的:
SHUCHU(A,B)
不知道这是为什么啊?是不是我的调用过程不对啊??
哦,行,我马上贴出来,但是估计不是变量的问题,也不是什么堆栈的问题了!我猜应该是函数调用出现问题了!由于粘贴不下,我删除了定义变量和函数的部分.但是其中没有用到变量js,有空了加我QQ,查看全部代码!
#include<stdio.h>
char xianshi[3]; /*定义一个存放符号的数组*/
int jisuan/*完成对a,b之间的i运算*/
int shuch(int a,int b,int c,int d) /*完成对四个数字的运算,并且把结果输出*/
{shuchu[0]=a;shuchu[1]=b;shuchu[2]=c;shuchu[3]=d;
for(i=0;i<=3;i++)
{zhongjian1=jisuan(i,shuchu[0],shuchu[1]);
for( j=0;j<=3;j++)
{zhongjian2=jisuan(j,zhongjian1,shuchu[2]);
for(k=0;k<=3;k++)
{zhongjian3=jisuan(k,zhongjian2,shuchu[3]);
printf("%d %c %d %c %d %c %d=%f\n",shuchu[0],xianshi[i],shuchu[1],xianshi
[j],shuchu[2],xianshi[k],shuchu[3],zhongjian3);}}}}
main ()
{int js=0;
这一段实现对四个数字的12种排列
js=js+1;
shuch(shuru[0],shuru[1],shuru[2],shuru[3]);/*调用函数*/
这一段实现对最后两个数字的交换
js=js+1;同上一样,调用函数
}}} 展开
SHUCHU 函数中间用了printf输出了一个表达式
可是主函数的参数在js在调用前赋值为0,在每次函数调用前执行JS=JS+1的操作,可是执行了函数调用之后,JS的值变为了254,
我调用过程是这样的:
SHUCHU(A,B)
不知道这是为什么啊?是不是我的调用过程不对啊??
哦,行,我马上贴出来,但是估计不是变量的问题,也不是什么堆栈的问题了!我猜应该是函数调用出现问题了!由于粘贴不下,我删除了定义变量和函数的部分.但是其中没有用到变量js,有空了加我QQ,查看全部代码!
#include<stdio.h>
char xianshi[3]; /*定义一个存放符号的数组*/
int jisuan/*完成对a,b之间的i运算*/
int shuch(int a,int b,int c,int d) /*完成对四个数字的运算,并且把结果输出*/
{shuchu[0]=a;shuchu[1]=b;shuchu[2]=c;shuchu[3]=d;
for(i=0;i<=3;i++)
{zhongjian1=jisuan(i,shuchu[0],shuchu[1]);
for( j=0;j<=3;j++)
{zhongjian2=jisuan(j,zhongjian1,shuchu[2]);
for(k=0;k<=3;k++)
{zhongjian3=jisuan(k,zhongjian2,shuchu[3]);
printf("%d %c %d %c %d %c %d=%f\n",shuchu[0],xianshi[i],shuchu[1],xianshi
[j],shuchu[2],xianshi[k],shuchu[3],zhongjian3);}}}}
main ()
{int js=0;
这一段实现对四个数字的12种排列
js=js+1;
shuch(shuru[0],shuru[1],shuru[2],shuru[3]);/*调用函数*/
这一段实现对最后两个数字的交换
js=js+1;同上一样,调用函数
}}} 展开
展开全部
#include<stdio.h>
char xianshi[4] = {'+','-','*','/'}; /*定义一个存放符号的数组*/
float jisuan(int i, float a, float b)/*完成对a,b之间的i运算*/
{
switch(i)
{
case 0: return a+b;
case 1: return a-b;
case 2: return a*b;
case 3: return a/b;//此处b不为0的情况未处理
}
}
int shuch(int a,int b,int c,int d) /*完成对四个数字的运算,并且把结果输出*/
{
int i,j,k,shuchu[4],zhongjian1,zhongjian2;
double zhongjian3;
shuchu[0]=a;shuchu[1]=b;shuchu[2]=c;shuchu[3]=d;
for(i=0;i<=3;i++)
{
zhongjian1=jisuan(i,shuchu[0],shuchu[1]);
for(j=0;j<=3;j++)
{
zhongjian2=jisuan(j,zhongjian1,shuchu[2]);
for(k=0;k<=3;k++)
{
zhongjian3=jisuan(k,zhongjian2,shuchu[3]);
printf("%d %c %d %c %d %c %d=%f\n",shuchu[0],xianshi[i],shuchu[1],xianshi[j],
shuchu[2],xianshi[k],shuchu[3],zhongjian3);
}
}
}
return 0;
}
main ()
{int js=0;
//这一段实现对四个数字的12种排列
js=js+1;
int shuru[] = {5,2,5,3};
shuch(shuru[0],shuru[1],shuru[2],shuru[3]);/*调用函数*/
//这一段实现对最后两个数字的交换
js=js+1;//同上一样,调用函数
printf("%d\n",js);
}
我还是未能完全明白你的意思,我大致猜测了你的意图,修改了一下程序,但并没有发现js有何异常,希望能对你起到一定帮助
char xianshi[4] = {'+','-','*','/'}; /*定义一个存放符号的数组*/
float jisuan(int i, float a, float b)/*完成对a,b之间的i运算*/
{
switch(i)
{
case 0: return a+b;
case 1: return a-b;
case 2: return a*b;
case 3: return a/b;//此处b不为0的情况未处理
}
}
int shuch(int a,int b,int c,int d) /*完成对四个数字的运算,并且把结果输出*/
{
int i,j,k,shuchu[4],zhongjian1,zhongjian2;
double zhongjian3;
shuchu[0]=a;shuchu[1]=b;shuchu[2]=c;shuchu[3]=d;
for(i=0;i<=3;i++)
{
zhongjian1=jisuan(i,shuchu[0],shuchu[1]);
for(j=0;j<=3;j++)
{
zhongjian2=jisuan(j,zhongjian1,shuchu[2]);
for(k=0;k<=3;k++)
{
zhongjian3=jisuan(k,zhongjian2,shuchu[3]);
printf("%d %c %d %c %d %c %d=%f\n",shuchu[0],xianshi[i],shuchu[1],xianshi[j],
shuchu[2],xianshi[k],shuchu[3],zhongjian3);
}
}
}
return 0;
}
main ()
{int js=0;
//这一段实现对四个数字的12种排列
js=js+1;
int shuru[] = {5,2,5,3};
shuch(shuru[0],shuru[1],shuru[2],shuru[3]);/*调用函数*/
//这一段实现对最后两个数字的交换
js=js+1;//同上一样,调用函数
printf("%d\n",js);
}
我还是未能完全明白你的意思,我大致猜测了你的意图,修改了一下程序,但并没有发现js有何异常,希望能对你起到一定帮助
展开全部
把程序完整贴出来,这样才能帮你看。但是要注意是不是你的变量有问题,不要随便使用全局变量,再有就是参数压栈别搞错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你的源程序完整的写出来看看!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询