(2)int i=123; float x=-45.678;
语句printf(\的输出结果是 。 解:i= 123 x=-45.6780 (3)float alfa=60,pi=3
习 题 3
一、根据下列数学式,写出C的算术表达式。
1ab?c?d 2c?da?2b?cd?(a2?b3)?y42?10tan?1x??4
2|sin(x)|3.5x6?e5解:-(a+b)×y 的C表达式:-(a*a+b*b)*pow(y,4)
22
2?102 的C表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593) ?1tanx?? |sin(x)|653.5 的C表达式:sqrt(pow (fabs (sin(x)),3.5))
x?e 的C表达式:pow(x,6)-exp(5)
1ab?c?d2 的C表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d)
c?da?2b?cd二、按照要求,写出下列C的表达式。
1.写出int类型变量x为“奇数”的表达式。 解:x%2==1
  2.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。      解:x   3.将double类型变量y保留四位小数的表达式。      解:(int)(y*10000+0.5)/10000.0    4.为变量s赋值:取变量x 的符号,取变量y的绝对值。      解:s=(x>=0?1:-1)*(y>=0?y:-y)    5.条件“-5≤x≤3”所对应的C逻辑表达式。      解:-5<=x&&x<=3    6.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式      解:a+32==b  或 b-a==32?1:0    7.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。      解:a==b/10&&a/10==b    8.写出判断某个人是否是成年人(年龄大于21),且不是老年人(年龄大于65)的逻辑表达式。  5       解:y>21&&y<=65    9.写出取变量a、b、c中最大值的条件表达式。      解:(a>b?a:b)>c?(a>b?a:b):c    10.若字符变量ch为小写字母,则将其转换为对应的大写字母。  解:ch=ch>='a'&&ch<='z'?ch-32:ch 三、单项选择题  1.设int x=3,y=4,z=5;,下列表达式中值为0的是(  )。  A.'x'&&'y' B. x<=y   C.x||y+z&&y–z D. !((x A.'0'<=c<='9'  B.'0'<=c&&c<='9'  C.c>='0'||c<='9'  D.c>=0&&c<=9 4.下列运算符中,优先级最低的是(  )。 A.?:  B.&&   C.= =   D.*= 5.若有条件表达式“x?a++:b--”,则以下表达式中(  )等价于表达式x。 A.x==0  B.x!=0   C.x==1   D.x!=1 6.有定义int k=4,a=3,b=2,c=1;,表达式“k a=(--x= =y++)?--x:++y;b=x++;c=y; A.a=9,b=9,c=9    B.a=8,b=8,c=10 C.a=9,b=10,c=9   D.a=1,b=11,c=10 8.有定义int a=9;,语句“a+=a– =a+a;”执行后,变量的值是(  )。 A.18  B.9   C.–18   D.–9 9.设x和y均为int型变量,则语句“x+=y;y=x–y;x– =y;”的功能是(  )。 A.把x和y按从小到大排列  B.把x和y按从大到小排列 C.无确定结果    D.交换x和y中的值 10.有定义double x=1,y;,表达式“y=x+3/2”的值是(  )。  A.1  B.2   C.2.0   D.2.5 11.设有定义int x;double y;,则下列表达式中结果为整型的是(  )。  A. (int)y+x B.(int)x+y   C.int(y+x)  D.(double)x+y 12.设有整型变量x,下列说法中,错误的是(  )。  A.“5.0”不是表达式   B.“x”是表达式   C.“!x”是表达式   D.“sqrt(x)”是表达式  解:(1)D  (2)B  (3)B  (4)D  (5)B  (6)D  (7)B  (8)C  (9)D  (10)C  (11)A  (12)A 四、填空题。  1.设float x=2.5,y=4.7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4 值为       。   解:2.5  2.设int x=2,y=3;,执行语句“x*=x+y”后x的值为        。   解:10  3.设int x=17,y=5;,执行语句“x%=x–y”后x的值为         。   解:5  6  4.设 int a=6,b=4,c=2;,表达式 !(a-b)+c-1&&b-c/2 的值为         。   解:1  5.设 int a=2,b=4,x,y;,表达式!(x=a)||(y=b)&&!(2-3.5) 的值为         。   解:0  6.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为           。   解:a==-b   7.判断变量a、b中必有且只有一个为0的逻辑表达式为          。   解:a*b==0&&a+b!=0  8.设int m=2,n=2,a=1,b=2,c=3;执行语句d=(m=a==b)&&(n=b>c);后,m和n的值分别为       。    解:m为0,n为2 9.设int a=2;,表达式“a%2!=0”的值为            。   解:0  10.设char c='y';,表达式“c>='a'&&c<='z'|| c>='A'&&c<='Z'”的值为            。   解:1  x+2 11.写出与代数式  (x+2)e 对应的C表达式            。   解:(x+2)*exp(x+2)  12.设int a=2;执行语句a=3*5,a*4;后a的值为           。   解:15 五、写出下列程序的输出结果。  1.  #include              unsigned k,n;              scanf(\输入数据为:69     k=n*10+n/10;      printf(\}  解:n=69   k=96 2.  #include  int x=2,y=3;             x*=y+4;  printf(\x/=y=5;        printf(\x-=y%2;   printf(\} 解:14,3  7          2,5         1,5   3.  #include  int a, b;             a=8;  b=7;  a=(a-- ==b++)? a%3 : a/3; printf(\}   解:a=2 b=8 六、程序填空题。  1.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。例如输入1 2 3,输出a=2 b=3 c=1。     #include      { int a,b,c,   ①   ;        printf(“Enter a,b,c:”);       scanf(“%d%d%d”,   ②   );          ③   ; a=b; b=c;    ④   ;        printf(“a=%d b=%d c=%d\\n”,a,b,c);      }    解:① t      ② &a,&b,&c      ③ t=a      ④ c=t  2.以下程序不借助任何变量把a、b中的值进行交换。   #include       printf(“Input a,b:”);      scanf(“%d%d”,   ①   );       a+=   ②   ; b=a-   ③   ; a- =    ④   ;      printf(“a=%d b=%d\\n”,a,b);     }    解:① &a,&b      ② b      ③ b      ④ b 七、编程题。  1.输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。  解:#include        { char c1,c2,c3,t,min,mid,max;          c1=getchar();  c2=getchar(); c3=getchar();         min=(t=c1 8          max=(t=c1>c2?c1:c2)>c3?t:c3;         mid=c1+c2+c3-min-max;         putchar(min);         putchar(mid);         putchar(max);  }  2.输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离。  解:#include  #include           double x1,y1,x2,y2,d;           printf(“请输入两点坐标 (x1,y1),(x2,y2)\\n”);          scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);          d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));          printf(“两点间距离=%f\\n”,d);       }  3.编写程序,计算球体积并输出它的值。要求输入半径值,计算结果保留三位小数。  解:#include          printf(“请输入半径值:\\n”);         scanf(“%lf”,&r);         gv=4.0/3*PI*pow(r,3);          printf(“半径为%f的球的体积为:%.3f\\n”,r,gv);  }   4.输入三角形的底和高,求三角形面积。  解:#include      double a,h,s;      printf(“请输入三角形的底,高\\n”);     scanf(“%lf,%lf”,&a,&h);     s=a*h/2;      printf(“三角形面积=%f\\n”,s);  }  5.编写程序,输入一个实数后输出该数的绝对值。  解:#include      double x,y;  9