参考答案:-1
4.89 若a=1,b=2,则表达式a>b?a:b+1的值是 。 参考答案:3
4.90 若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值是 。 参考答案:4
*4.91 设有变量定义:int a=10,c=9;则表达式(--a!=c++)?--a:++c的值是 。 参考答案:11
4.92 若有说明语句:int x=1,y=0;则表达式x>(y+x)?10:12.5>y++?'a':'A'的值是 。 参考答案:'a'
*4.93 若有说明语句:int a=1,b=0;则表达式++a*--a==b?12%5:'x'的值是 。 参考答案:'x'
4.94 若有x=1,y=2,z=3,则表达式(x **4.95 若有说明语句:int x=1,y=0;则表达式x-->(y+x)?5:25>y++?'1':'2'的值是 。 参考答案:5 参考分析:增量运算在条件运算的第一个表达式中时,关系运算符两侧各为一个处理单元。x--中的值是1,然后增为0,故y+x为0+0,因此整个表达式计算结果为真。 4.96 以下程序的运行结果是 。 #include {int a=-10,b=-3; printf(\printf(\printf(\} 参考答案:1,-13,-7 4.97以下程序的运行结果是 。 main() {int x=1,y=1,z=1; y=y+z; x=x+y; printf(\ printf(\printf(\} 参考答案:3,2,3,3 4.98 以下程序的运行结果是 。 main() {int x,y,z; x=3; y=z=4; printf(\printf(\} 参考答案:0,1 4.99 若运行时输入:-2 main() {int a,b; scanf(\b=(a>=0)?a:-a; printf(\} 参考答案:b=2 4.100 若运行时输入:100 main() {int a; scanf(\ printf(\} 参考答案:yes 4.101 如果运行时输入字符'Q',则以下程序的运行结果是 。 main() {char ch; scanf(\ ch=(ch>='A'&&ch<='Z')?(ch+32):ch; ch=(ch>='a'&&ch<='z')?(ch-32):ch; printf(\} 参考答案:Q 4.102 当运行时输入:1992 main() {int y,t; scanf(\ t=((y%4==0)&&(y0!=0)||y@0==0)?1:0; if(t) printf(\else printf(\printf(\} 参考答案:1992 is a leap year 4.103 以下程序是计算x,y,z三个数中最小的。请分析程序填空。 main() {int x=4,y=5,z=8; int u,v; u=x 参考答案:【1】x:y【2】u:z 4.104 设有变量定义:int a=5,c=4;则(--a==++c)?--a:c++的值是【1】,此时c的存储单元的值为【2】。 参考答案:【1】5【2】6 4.105 执行以下程序后,a=【1】,b=【2】,c=【3】。 int x=10,y=9; int a,b,c; a=(x-- == y++) ? x-- : y++; b=x++; c=y; 参考答案:【1】10【2】9【3】11 *4.106 设有int x=1,y=0;则以下表达式的值为 。 x-->(y+x)?10:12.5>y++?'A':'Z' 参考答案:10 参考分析:在本题中x-->(y+x)的实际比较运算是1>0+0为真。 *4.107 设有int x=0,y=1;则以下表达式的值为 。 x++*x--!='y'?8-4:y 参考答案:4 参考分析:此处x++*x—实际计算为0*0。 4.108 若运行时输入:3 5/ main() {float x,y; char o; double r; scanf(\switch(o) {case '+':r=x+y;break; case '-':r=x-y;break; case '*':r=x*y;break; case '/':r=x/y;break; } printf(\} 参考答案:0.600000 4.109 根据以下嵌套的if语句所给条件,填写switch语句,使它完成相同的功能。 (假设mark的取值在1-100之间) if语句: if(mark<60) k=1; else if(mark<70) k=2; else if(mark<80) k=3; else if(mark<90) k=4; else k=5; switch语句: switch(【1】) {【2】k=1;break; case 6 :k=2;break; case 7 :k=3;break; case 8 :k=4;break; 【3】k=5; } 参考答案:【1】mark/10 【2】default: 【3】case 9:case 10: 4.110 设有如下程序段,若grade的值为'C',则输出结果是 。 switch(grade) {case 'A':printf(\case 'B':printf(\case 'C':printf(\ case 'D':printf(\default:printf(\} 参考答案: 60-69 <60 error! 4.111 以下程序段的运行结果是 。 int x=1,y=0; switch(x) {case 1: switch(y) {case 0:printf(\ case 1:printf(\ } case 2:printf(\} 参考答案: **1** **3** 4.112 根据以下函数关系,对输入的每个x值,计算出相应的y值。请分析程序填空。 x y x<0 0 0≤x<10 x 10≤x<20 10 20≤x<40 -0.5x+20 main() {int x,c; float y; scanf(\if(【1】) c=-1; else c=【2】; switch(c) {case –1:y=0;break; case 0:y=x;break; case 1:y=10;reak; case 2:case 3:y=-0.5*x+20;break; default:y=-2; } if(【3】) printf(\else printf(\} 参考答案:【1】x<0 【2】x/10 【3】y!=-2 4.113 以下程序的运行结果是 。 main() {int a=2,b=7,c=5; switch(a>0) {case 1:switch(b<0) {case 1:printf(\ case 2:printf(\ } case 0:switch(c==5) {case 0:printf(\ case 1:printf(\ default:printf(\ } default:printf(\} printf(\} 参考答案:#& 4.114 下面程序的运行结果是 。 #include {int x=1,y=0,a=0,b=0; switch(x) {case 1:switch(y) {case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; } printf(\} 参考答案:a=2,b=1 4.115 假设奖金税率如下(a代表奖金,r代表税率) a<500 r=0% 500≤a<1000 r=5% 1000≤a<2000 r=8% 2000≤a<3000 r=10% 3000≤a r=15% 以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。请分析程序填空。 main() {float a,r,t,b; int c; scanf(\if(a>=3000) c=6; else c=【1】; switch(c) {case 0:r=0;break; case 1:r=0.05;break; case 2:case 3:【2】;break; case 4:case 5:r=0.1;break; case 6:r=0.15;break;