9. 写出下列程序运行时输入 3 4 5 的输出结果。 #include
{ float a1,a2,a3,s,d;
scanf(\ s=(a1+a2+a3)/2;
s=sqrt(s*(s-a1)*(s-a2)*(s-a3));
printf(\边长为%.2f,%.2f,%.2f的三角形面积为:%-10.3f\\n\ } 10. 编程题
⑴ 编程,用getchar函数接收2个字符,用putchar函数输出这2个字符。 解答: #include
x=getchar(); putchar(x); x=getchar(); putchar(x); }
⑵ 编程,用scanf函数输入1个10进制整数、1个单精度浮点数、1个双精度浮点数,并通过printf函数把输入的3个数分别输出。
解答: #include
{ int k; float x; double d; scanf(\ printf(\ }
⑶ 编程,输入1个整数,然后分别以8进制、10进制、16进制形式输出该数。 解答: #include
{ int x; scanf(\
printf(\ }
习 题 三
1. 根据下列数学式,写出C的算术表达式。
?(a2?b)?y342?10tan?125?ba?6b?5?c?d5
x??
解答:-(a*a+pow(b,3))*pow(y,4) (sqrt(2)+100)/(atan(x)+3.141593) (5+b)/((a+6)/(b+5)-c*d) 2. 按照要求写出下列C的表达式。
⑴ 数学式 (x+1)e所对应的C算术表达式。
⑵ 将double类型变量x的整数部分与y的小数部分相加的算术表达式。 ⑶ 将非零实型变量x四舍五入到小数点后2位的算术表达式。 ⑷ 为变量s赋值:取变量x 的符号,取变量y的绝对值。 ⑸ 条件“-5≤x≤3”所对应的C逻辑表达式。
⑹ a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母的逻辑表达式
⑺ int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。
⑻ 计算变量a、b中较小值的条件表达式。 ⑼ 判断变量ch 是英文字母的表达式;
⑽ 若字符变量ch的值为大写字母,则重新赋值为对应的小写字母。 解答: ⑴
(x+1)*exp(2*x)
⑵
(int)x+y-(int)y
⑶
(int)(x*100+fabs(x)/x*0.5)/100.0
⑷ s= fabs(y)*x/fabs(x) ⑸ -5<=x && x<=3 ⑹ b-a=='a'-'A' ⑺ a==b/10 && b==a/10 ⑻ a
3. 声明“int k=12;float x=9.5;double d=2.7;char zf='B';”,写出下列表达式值。 ⑴ (int)x%k*d ⑵ k+5.6
⑴ 声明“float x=2.5,y=4.7; int a=7;”,表达式x+a%3*(int)(x+y)%2/4值为 2.5 。 ⑵ 设整型变量a、b值分别为10与20,计算c=(a%2==0)?a:b后,c的值为 10 。 ⑶ 设整型变量d的值为7,表达式“3
⑸ 下列程序的输出结果是 (0.00,0.5) 。 #include
double d=3.4, x; x=(y=d/2.0)/2;
printf(\ }
⑹ 判断a、b是否绝对值相等而符号相反的逻辑表达式为 a==-b 。
⑺ 判断变量a、b中必有且只有一个为0的逻辑表达式为 a*b==0 && a+b!=0 。 ⑻ c初值为3,计算赋值表达式“a=5+(c+=6)”后表达式值、a、c的值依次为 14、14、
2X
6
9 。
⑼ 求解赋值表达式“a=(b=10)%(c=6)”后,表达式值、a、b、c的值依次为 4、4、10、6。
⑽ 求解逗号表达式“x=a=3,6*a”后,表达式值、x、a的值依次为 18、18、3 。 ⑾ 若a=13、b=25、c=-17,表达式“((y=(a='a'&&s<='z')?s-32:s;”后字符变量s的值为 'D' 。 5. 写出下列程序的输出结果。 程序 ⑴ #include
{ unsigned k,n; scanf(\ k=n*10+n/10;
printf(\ }
运行时输入数据为:69 72 输出结果为: n=69 k=96 程序 ⑵ #include
{ int x=40,y=4,z=4;
x=y==z; printf(\ x=x==(y=z); printf(\ }
输出结果为: 1 4 4 0 4 4
程序 ⑶ #include
y=x++-1; printf(\ y=--z+1; printf(\ x=y=z=0; ++x&&++y||++z;
printf(\
--x&&++y&&++z; printf(\ }
输出结果为: 3 1 3 3 3 2 1 1 0 0 1 0
6. 编程,输入长方形的长和宽,求长方形的面积和周长并输出。 解答: #include
{ float a,b,x,y;
scanf(\ printf(\面积=%.4f 周长=%.4f\\n\ }
7. 编程,输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。 解答: #include
7
void main()
{ char a,b,c,x,y,z; scanf(\
x=(x=ab?a:b)>c?z:c; y=a+b+c-x-z; printf(\ }
8. 编程,输入3个整数,要求按绝对值从小到大输出它们的值。 解答: #include
#include
{ int x,y,z,a; scanf(\ if(fabs(x)>fabs(y)) { a=x;x=y;y=a;} if(fabs(x)>fabs(z)) { a=x;x=z;z=a;} if(fabs(y)>fabs(z)) { a=y;y=z;z=a;} printf(\ }
9. 编程,输入3个数,计算这三个数的平均值,并求出与平均值最接近的值。 解答: #include
{ float a,b,c,v,x; scanf(\ v=(a+b+c)/3; x=a;
if(fabs(b-v) 10. 编程,输入1个3位正整数,输出其个位、十位、百位反序的数(如123反序数为321)。 解答: #include { int n,m; scanf(\ m=n*100+n0/10*10+n/100; printf(\ } 习 题 四 1. 填空题 ⑴ 求1至100的和,写作 for(s=0,i=1; i<=100 ;++i) s+=i; ⑵ 执行程序段“y=1;x=5; while(x--); y++;”后,y的值为 2 。 ⑶ 顺序输出26个大写英文字母的循环结构,写作 for( ch='A';ch<='Z';ch++ ) putchar(ch); ⑷ 输入若干个以问号结束的字符,同时输出这串字符(不包括问号),写作 while( (ch=getchar()) !='?') putchar(ch); 8