按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出。程序如下所示,有一处有误,请选择正确的语句:#include<stdio.h>intmain(){intn,k,score,sum;floatave;for(n=1;n<=10;n++){sum=0;for(k=1;k<=4;k++){scanf(“%d”,&score);sum+=score;}ave=sum/4;printf(“NO.%d:%f\n”,n,ave);}return0;}
score是整型,整数除整数,结果是整数, 而ave是浮点型,所以需要把4改成4.0,或者使用第二章介绍的强制类型转换。
对于以下程序,输出结果为:#include<stdio.h>intmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);return0;}
switch ( y ) { case 0:a++;break ; case 1:b++;break ; }这里没有break,会继续执行下面的case 2。
两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是#include<stdio.h>intmain(){intx;scanf("%d",&x);if(x++>5)printf("%d",x);elseprintf("%d\n",x--);return0;}
第一次:x=6,x++表达式的值为6>5,执行if子句,输出为值为7 第二次:x=4, x++表达式的值为4<5,执行else子句,因x—表达式的值为5,所以输出为5
对于以下程序,输出结果为#include<stdio.h>intmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);return0;}
x=1 执行case 1子句, y=0,执行case 0子句, a=1,有break,跳出当前switch,case 1子句执行完毕。 继续执行case 2子句 a=2,b=1,有break,跳出当前所在的swi...
对于以下程序,若从键盘输入2.0,则程序输出为#include<stdio.h>intmain(){floatx,y;scanf("%f",&x);if(x<0.0)y=0.0;elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);return0;}
x=2.0,x<0.0条件为假,x!=2.0条件为假,其后面对应的语句都不执行。 x<10.0条件为真,执行其对应的子句y=1.0/2.0=0.500000