c语言中,程序段分析

c语言中,程序段分析,第1张

同学,第一个答案确是是"y=0"原因如下,首先我们要说自增和自减运算符“++”和“--”,如果该运算符的位置在 *** 作数之前,则 *** 作数在进行任何计算之前就已经发生改变,如果运算符在 *** 作数后面,则 *** 作数在完成表达式的计算之后才发生改变,例如int

a=5,b=8,cc=a++*b

//"++"在 *** 作数a后面,先计算a*b=40,赋值给c,然后a++,a值为6,c的值为40c=++a*b

//"++"在 *** 作数a前面,先a++,a=7,再a*b,c=56然后我们来看你给的程序,因为是y--,"--"在y后面,则先判断while的条件,此时银纤y=1,即true,为真,然后y--,y=0,然后输出y:y=0;然后再判断while,因为此时y=0,为假,跳出循环,结束。要注意顺序,先判断whlie,然后y--,若while条件为真,则执行while的语句

若改成"--y"的话,则先计算"--y",y=0,再判断while的条件,此时y=0,即false,为假,直接跳出循环,即什么都不做,结束。

第二题,你要注意的是while的条件不是"k==1"而是"锋晌仿k=1",不是一个判断语句,而是一个赋值语句。即while的条谨高件永远都是“k被赋值为1,然后k作为条件”进行判断,此时k是1,即true,为真会永远进行下去。

26 已知int x=1,y;执行下述语句后变量x的值是__C_。

y=++x>5&&++x<10;

A) 1 B) 2 C) 3 D) 4

27 为判断字符变量c的值不是胡册数字也不是字母时,应采用下述表达式____。

A) c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122

B) !(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)

C) c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122

D) !(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)

28 已知 int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是__D_。

A) 0.166667 B) 1 C) 0 D) 错误的表达式

29 已知 int x=1,y=1,z=1;表达式"x+++y+++z++"的值是__C__。

A) 3 B) 4 C) 5 D) 表达式错误

30 用十进制表示表达式"12|012"的值是___D_。

A) 1 B) 0 C) 12 D) 14

31 已知以下程序段:

int a=3,b=4;

a=a^b;

b=b^a;

a=a^b;

则执行以上语句后a和b的值分别是__A__。

A) a=3,b=4 B) a=4,b=3 C) a=4,b=4 D) a=3,b=3

32 在位运算裤辩宏中, *** 作数每右移一位,其结果相当于_B__。

A) *** 作数乘以2B) *** 作数除以2

C) *** 作数除以16 D) *** 作数乘以16

33 已知 char a=222;执行语句a=a&052;后,变量a的值是_A___。

A) 222 B) 10 C) 244 D) 254

34 已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是__A__。

A) 11110000 B) 00001111 C) 11111111 D) 00000000

35 已知 int a=15,执行语句a=a<<2以后,变量a的值是__C__。

A) 20 B) 40 C) 60 D) 80

36 已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是__C__。

A) 0 B) 1 C) 5 D) 6

37 使用语句scanf("x=%f,y=%f",&x,&y);输入变量x、y的值(□代表空格),正确的输入是__C__。

A) 25,2.4 B) 25□2.4 C) x= 25,y=2.4 D) x= 25□y=2.4

38 下列循环语句中有语法错误的是__C__。

A) while(x=y) 5; B) while(0) ;

C) do 2;while(x==b); D) do x++ while(x==10);

39 已知int x=(1,2,3,4);变量x的值是__A__。这个正则表达式??

A) 1 B) 2 C) 3 D) 4

40 表达式sizeof(double)是 。 C

A) 函数调用B) double型表达式

C) int型表达式 D) 非法表达式

41 执行语句printf("2:%d,",printf("1:%d,",scanf("%d",&x)));以后的输出结果是___A_。

A) 2:1,1:1, B) 1:1,2:1, C) 2:4,1:1 D) 1:1,2:4,

42 已知:int x,y;double z;则以下语句中错误的函数调用是 。 C

A) scanf ("%d,%lx,%le",&x,&y,&z); B) scanf ("%2d*%d%lf",&x,&y,&z);

C) scanf ("%x%*d%o",&x,&y);D) scanf ("%x%o%6.2f",&x,&y,&z);

43 与条件表灶册达式"(n)?(c++):(c--)"中的表达式(n)等价的表达式是__C__。

A) (n==0) B) (n==1) C) (n!=0) D) (n!=1)

44 已知int i=1,j=0;执行下面语句后j的值是__D__。

while(i)

switch(i)

{ case 1: i+=1;j++;break; 2 1

case 2: i+=2;j++;break; 4 2

case 3: i+=3;j++;break; 6 4

default: i--;j++;break; 3 3

}

A) 1 B) 2 C) 3 D) 死循环

45 求取满足式 12+22+32+ …… +n2 ≤1000的n,正确的语句是__C__。

A) for(i=1,s=0;(s=s+i*i)<=1000;n=i++) ;

B) for(i=1,s=0;(s=s+i*i)<=1000;n=++i) ;

C) for(i=1,s=0;(s=s+i*++i)<=1000;n=i) ;

D) for(i=1,s=0;(s=s+i*i++)<=1000;n=i) ;

这个应该是 (s =s+ ++i * 10 +2) 才行吧


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12255359.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存