㈠ c语言问题,会的帮帮忙(x1和x2为什么都是等于40)
要搞清楚C的形参值传递是单向的,即不能用形参返回值。还要注意各变量的作用域。
所以你的sub 函数不能起到交换值的作用,实际等效于:
void sub(int x,int y) //相当于把第一个参数的值赋给全局变量x1
{
x1=x;
}
你的程序相当于:
int x3=10,x4=20;
x1=x3;
x1=x2;
printf(……);
所以输出40,40,10,20
可将sub改为:
void sub(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
应用sub时参数加&,即sub(&x1,&x2),sub(&x3,&x4)用指针传回变量值。
你的编译环境VC的话,直接用C++别名解决值传递问题:
void sub(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
应用sub时参数不加&,即sub(x1,x2),sub(x3,x4)用别名传回变量值。
㈡ 怎么用c程序定义x1到x100
除了手写,没办法动态定义变量x1到x100
c语言不是脚本语言,需要经过预编译,编译,运行的。定义变量在编译时就被确定了的,循环生成字符串只能在运行里执行。没办法做的。建议使用数组。
或者你讲循环生成的字符串输出到c语言的文件里
㈢ C语言关系运算符的使用和理解,麻烦哪位大佬解答下下述源代码中x1,x2,x3分别是怎么得来的
你前面int就已经定义了x1,x2,x3为整型变量啦,但是没有赋初值而已
而你后面x1=a>b>d;就是判断a是否大于b是否大于d,是的话x1=1,否则x1=0;下面的语句也是如此
㈣ c语言 为什么第一个输出1,2 我看的是0,1 还有第二个 x1不是等于x2吗 输
第一个图:
第一个switch的第一个case后面没有break,所以做完case 0还会把下面的case 1做一遍
这时a++做了一次,b++做了两次,就是 1 , 2
第二个图:
strcmp函数判断字符串大小,先判断第一个字符的ACSII码值,如果相等就判断第二个
x1 , x2共同的部分判断都相等,但是x1更长,所以x1>x2输出一个正数(相等输出0)
㈤ c语言怎么编写x1,x2
请问你所述的x1,x2指的是什么?
补充: c语言的乘号是 *
㈥ C语言问题
不能去掉。
当while(fabs(y)>=1e-4);成立的时候,do{}while循环体没有终止还要继续执行,首先执行的就是x=xpoint(x1,x2);如果没有x1=x;那么xpoint(x1,x2)里面的x1仍旧是以前的值没有变,这个循环体里面一点改变都没有,执行到while(fabs(y)>=1e-4);时它还是成立的,这样就一直下去就变成无限循环了。如果有x1=x,
x=xpoint(x1,x2),x就会变,同时y=f(x);y也会改变,这样while(fabs(y)>=1e-4);这个语句就不一定向先前一样成立了。
㈦ C语言中x=x1什么意思
x和x1 是不同的标识符,
= 是赋值语句
就是将右边的值赋到左边
也是说
将x1 的值给x
㈧ c语言中这样写是对的吗
是一一对应的,
第一个%f对应第一个参数,
这个写法是不推荐的,因为这里想要表达的是当x1=x2的时候 随便输出x1,x2都是一样的结果
所以只需要写x1或者x2就行了
㈨ C语言的问题
难道没有下文了吗,从你这半来看是没什么用
下面呢,下面没有要用到的吗
补充:
当然不是,X1,X2跟X,Y一样,都是一个变量,等着你给它们赋值
㈩ C语言中,为什么x1y不能作为标识符使用
x1y可以作为标识符使用,没有任何问题