26. 下列程序段的输出结果是____C___.(知识点6.4)
int x=3;
do {printf(“%3d”,x-=2);}
while(!(——x));
A)1 B)3 0 C)1 -2 D)死循环
为什么输出-2就停止了呀??不明白,帮解释哈
---------------------------------------------------------------------
“!”表示非的意思,while()括号中为-2时为真,加个“!”为“非真”即为“假”
---------------------------------------------------------------------
27. 有以下程序,其中x、y为整型变量;
for(x=0,y=0;(x<=1)&&(y= 1);x++,y——);
printf(“x=%d,y=%d”,x,y);
该程序的输出结果是_A____.
A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
这题答案是怎么算滴呀??说一下过程
---------------------------------------------------------------------
程序第一行(y= 1)这是一个赋值表达式,值为1,就是说它始终为真,并且它还执行给y赋值为1.for语句循环体为空语句,因为后面有一个分号,所以只有当x不满足(x<=1)时结束循环,即为2时。这里还涉及一个逻辑表达式中并不是所有运算符都被执行的问题,也就是说当x为2时,(x<=1)为假,这时不用执行(y= 1)就可以判断逻辑表达式(x<=1)&&(y= 1)为假所以(y= 1)并不被执行,所以由于上一个循环的y——得出y为0,即得出答案x=2,y=0
---------------------------------------------------------------------
24. 若x是int型变量,且有下面的程序片段: (知识点6.5)
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%d\n”),x);
该程序片段的输出结果是 _A______.
A)**5##6 B)##5 C)##5**6##7 D)**5##6**7 **7 **6##7
当x=7时,为什么不见输出捏??答案是怎么得呀??
---------------------------------------------------------------------
答案应该有问题吧?应该是第一行输出**5##6然后换行在输出**7
---------------------------------------------------------------------
17. 语句:printf(“%d”, !9);的输出结果是___A___.(知识点5.2)
A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
怎么知道答案是输出0呀??
---------------------------------------------------------------------
这个和判断真假一样,如果一个变量x,未给x赋值时,系统认为是真,这时!x值为0即为假,同理!9值为0.
---------------------------------------------------------------------
5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是_C_______. (知识点4.2)
A) scanf(“%d %d”,&a,&b);
x=getchar();y=getchar();
B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);
C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
这题是怎么算滴呀??分析一下...
---------------------------------------------------------------------
scanf输入多个数据可以用一个或多个空格将各个数据隔开,至于%c一次只能接收一个字符,并且scanf函数是从左向右扫描所以x和y分别取的第二个%c和第四个%c。还有就是%c之间的空格我不是很清楚,我试了一下它似乎没有影响!!!SORRY
---------------------------------------------------------------------
29. 在下述程序中,if (i>j) 语句共执行的次数是_D____.(知识点6.5)
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A)4 B)7 C)5 D)6
这题我怎么算得执行了4次也..6次是怎么得滴呀??
---------------------------------------------------------------------
第一次循环时i等2,第二次……第五次i等10,第六次i等12,满足if(i>j)执行break语句跳出循环。至于 s+=i ;语句应该没什么用吧?
---------------------------------------------------------------------
30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。
main()
{ int n,k;float score,ave;
ave=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score);
ave+=score/4 ;}
printf(“NO%d:%f\n”,n,ave);}
}造成程序计算结果错误的语句行是____A_.(知识点6.6)
A)ave=0.0; B)for(n=1;n<=10;n++)
C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave);
错误在ave=0.0;??讲一下错滴原因。。。
---------------------------------------------------------------------
这个程序段只能正确计算第一名学生的平均成绩,因为得出第一名学生成绩后ave的值不是0而是第一名学生的平均成绩,这时再计算第二个学生时它的平均值是加上第一名学生平均值后的结果。所以应该把ave=0.0;语句放到for(n=1;n<=10;n++)的循环体里面和for(k=1;k<=4;k++)是并列的,这样没算完一个同学的平均成绩后进行一次ave赋值为0.0。
---------------------------------------------------------------------
要是哪不懂发信息,要是写的不明白不好意思哈~~~~~~
26. 下列程序段的输出结果是____C___.(知识点6.4)
int x=3;
do {printf(“%3d”,x-=2);}
while(!(——x));
A)1 B)3 0 C)1 -2 D)死循环
为什么输出-2就停止了呀??不明白,帮解释哈
@@@因为不满足循环条件。你这个循环条件是当--x为0的时候,才会继续执行。
27. 有以下程序,其中x、y为整型变量;
for(x=0,y=0;(x<=1)&&(y= 1);x++,y——);
printf(“x=%d,y=%d”,x,y);
该程序的输出结果是_A____.
A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
这题答案是怎么算滴呀??说一下过程
24. 若x是int型变量,且有下面的程序片段: (知识点6.5)
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%d\n”),x);
该程序片段的输出结果是 _A______.
A)**5##6 B)##5 C)##5**6##7 D)**5##6**7 **7 **6##7
当x=7时,为什么不见输出捏??答案是怎么得呀??
17. 语句:printf(“%d”, !9);的输出结果是___A___.(知识点5.2)
A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
怎么知道答案是输出0呀??
5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是_C_______. (知识点4.2)
A) scanf(“%d %d”,&a,&b);
x=getchar();y=getchar();
B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);
C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
这题是怎么算滴呀??分析一下...
29. 在下述程序中,if (i>j) 语句共执行的次数是_D____.(知识点6.5)
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A)4 B)7 C)5 D)6
这题我怎么算得执行了4次也..6次是怎么得滴呀??
30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。
main()
{ int n,k;float score,ave;
ave=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score);
ave+=score/4 ;}
printf(“NO%d:%f\n”,n,ave);}
}造成程序计算结果错误的语句行是____A_.(知识点6.6)
A)ave=0.0; B)for(n=1;n<=10;n++)
C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave);
错误在ave=0.0;??讲一下错滴原因。。。
看了一道题,实在不想解释了,都是书上的。认真看下分支和循环就做出来了。
第26题:在do
{printf(“%3d”,x-=2);}
while(!(——x));执行一次后x=1,后在进行--x,x=0
继续执行循环,x-=2,x=-2,循环不执行,结束后,x=-2,程序结束。
第27题:循环第一次执行,x=0,y=0,x、y的值满足循环条件,循环继续执行;x++,y--
循环条件成立{(x<=1)&&(y=1)},当x=2时条件不成立,赋值y=1再执行y--,所以最后y=0,输出结果为:x=2,y=0.
第24题:单独再说,题意不是很清楚。
第17题:printf(“%d”,
!9)中“!9”一切数的非值都为0.
第5题:ab都为整型数据,xy为字符型数据,一个字符只能赋值一个,xy重复赋值两次,最后赋得值成为输出结果。
第29题:i执行的数值为0,2,4,6,8,10,所以执行6次。
第30题:ave已经被定义为float数据,直接赋值ave=0,数值0已为浮点型数据。
第26题:在do {printf(“%3d”,x-=2);}
while(!(——x));执行一次后x=1,后在进行--x,x=0
继续执行循环,x-=2,x=-2,循环不执行,结束后,x=-2,程序结束。
第27题:循环第一次执行,x=0,y=0,x、y的值满足循环条件,循环继续执行;x++,y--
循环条件成立{(x<=1)&&(y=1)},当x=2时条件不成立,赋值y=1再执行y--,所以最后y=0,输出结果为:x=2,y=0.
第24题:单独再说,题意不是很清楚。
第17题:printf(“%d”, !9)中“!9”一切数的非值都为0.
第5题:ab都为整型数据,xy为字符型数据,一个字符只能赋值一个,xy重复赋值两次,最后赋得值成为输出结果。
第29题:i执行的数值为0,2,4,6,8,10,所以执行6次。
第30题:ave已经被定义为float数据,直接赋值ave=0,数值0已为浮点型数据。
26题中判断条件只是返回0或1,开始判断(--x)=0,!(--x)返回的值是1,继续循环。但第二次判断(--x)=-2;!(-2)返回值为0,条件为假,故打印了-2后就跳出了循环