给出下列程序的输出结果? 写出下面程序的输出结果

6119℃ RAMON

给出下列程序的输出结果?写出下面程序的输出结果

下列程序的输出结果是( )。

本程序输出的结果是: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