给出下列程序的输出结果? 写出下面程序的输出结果
下列程序的输出结果是( )。
本程序输出的结果是:a = ‘A’, b = 'b'。也就是说实参b的值加了1,而a的值则没变,为什么呢?首先,我们说一下b的值为什么会加1:在函数fun中的第一个形参是一个指针变量,fun(&b,a);中&b的意思是取b的地址,而*c在这里其实就是b的值,这里的*c = *c+1;是对b的值直接进行操作的,因此,b的值会变。而a的值不变,是因为在C语言中,实参向形参的数据传递方向是单向传递,也就是说,只由实参传给形参,而不能由形参传回给实参。除非我们加个返回值,如int fun(char *c, int d) //带返回值得函数
{
*c法珐瘁貉诓股搭瘫但凯 = *c+1;
d = d + 1;
return d; //将加1后的d值返回
}
void main()
{
char a='A',b='a';
a = fun(&b,a); //将返回的值赋给a
printf("%c,%c\n",a,b);
}这个程序关系到C语言的两个内容,1、指针 2、函数的参数和函数的值 ,建议找一本C语言程序设计的书阅读这两个章节,一切都迎刃而解。
以下程序的输出结果是:
{
int x=2,y=1,z=2 //赋值
if (x if(y<0) z=0; //由于前一个判断为否,这一条不执行。 else z+=1; //此条被认为是跟随第二个if语句,因为if语句根本没有执行,所以这一条也不执行。 printf("%d\n",z); //z没有被更改过, z=2 } 选B 程序实际运行的命令: int x=2,y=1,z=3; printf("%d\n",z); 这是一个编程时候常容易产生的错误情况。else 被编译器判定为跟随第二个if。所以如果要得到A的答案应该写为: if (x { if (y<0) z=0; }else z+=1; 所以在遇到if嵌套时,一定要注意使用{},不要在 if后直接跟随第二个if而不加{}。否则容易引起人和编译器的歧义。 不要以为打多了空格,编译器就认识else跟哪个if了。 三次运行结果如下: x=0 y=-1 z=0 x=0 y=0 z=-1 x=0 y=-1 z=-1 先说下思想: 在C语言中, x&&y,如果x的值为0,那么就不执行操作y(即使是个表达式也不执行了。) x||y,如果x的值为1,那么就不执行操作y(即使是个表达式也不执行了。) ++x和x++又有点区别,前者是先执行自加操作之后再参与到运算中,后者是先参与运算再执行自加。 第一次: ++x&&++y||++z,由于x的值为0了,++y就不执行了,所以y的仍然为-1,而++x&&++y的值为0,因此还要执行++z的操作,所以z的值也为0。 同理,后面的你自己可以找出原因了。 1.for j=2 to 4 print j+2 next j 结果: 4 5 6 2.a=10 b=a*2 print a;"+";b;"=";a+b print a;"-";b;"=";a-b print "A+B=";a*b 结果: 10+20=30 10-20=-10 A+B=200写出下列程序的输出结果:
写出运行下列程序段输出的结果