内容正文:
专题六 数学函数和顺序结构
1、 选择题
1.设有说明:double y=0.5,z=1.5; int x=10;则能够正确使用C语言库函数的赋值语句是( )
A.z=exp(y)+fabs(x);
B.y=log(y)+pow(x,y);
C.z=sqrt(y-z);
D.x=(int)(tan2((double)x,y)+exp(y-0.2);
答案:B
解析:本题考察数学函数的使用规则,选项A中的fabs函数的参数为实型,选项C中的sqrt函数的参数要大于等于0,选项D中tan2错误。
2.若m为float型变量,则执行以下语句后的输出为( )。
m=1234.123;
printf("%-8.3f
",m);
printf("%10.3f
",m);
A. 1234.123 B. 1234.123 C. 1234.123 D. -1234.123
1234.123 1234.123 1234.123 001234.123
答案:C
解析:本题考察printf输出函数的格式中格式符%m.nf的使用方法。其中%-8.3f表示宽度为八位,小数点后三位有效数字,负号表示左对齐,右补空格;%10.3f表示宽度为十位,小数点后三位有效数字,右对齐,左边补空格。
3.以下不能输出字符A的语句是(注:字符A的 ASCI 码值为65,字符a的ASCII码值为97)
A. printf ("%c
", ‘a’-32);
B. printf("%d
", 'A’);
C. printf ("%c
", 65);
D. printf ("%c
”, ‘B’-1);
答案:B
解析:选项B的格式符为%d,输出的是字符A的ASCI 码值。
4. 有一如下程序:
#include<stdio.h>
main()
{ int a=1,b=0;
printf("%d,",b=a+b);
printf("%d",a=2*b);
}
程序运行后的输出结果是( )
A.0,0
B.1,0
C.3,2
D.1,2
答案:D
解析:执行完b=a+b表达式后,b的值为1,再执行a=2*b时,a的值变为2.
5.程序段:
int x=12; double y=3.141593;
printf("%d%8.6f",x,y);
输出结果是( )
A.123.141593
B.12 3.141593
C.12,3.141593
D.123.1415930
答案:D
解析:本题考察printf函数的输出格式。%8.6f表示宽度为8位,小数点后6位有效数字,右对齐,左边补空格,y的值3.141593,小数点后正好6为,总宽度为8位,所以原样输出。
6.有以下程序
#include <stdio.h>
main()
{ char c1,c2;
c1='A’+'8’-'4’;
c2='A'+'8’-'5’;
printf("%c,%d
",c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是( )
A.E,68
B.D,69
C.E,D
D.输出无定值
答案:A
解析:本题考察字符表达式的计算,以及printf的输出格式。表达式'A’+'8’-'4’的值为‘E’,表达式'A'+'8’-'5’的值为‘D’,第一次输出的是字符,第二次输出的是ASCII码值。
7.下列程序在编译时产生错误,其出错原因是( )
#include <stdio.h>
main()
{ int case;
float printF;
printf(”请输入2个数:");
scanf("%d %f" ,&case,&printF);
printf("%d %f
",case,printf);
}
A.定义语句出错,case 是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf 不能作为输入函数使用
D.定义语句无措,printf不能输出case 的值
答案:A
解析:case 是关键字,不能用作用户自定义标识符。
二、程序填空题
1. 计算一元二次方程ax2+bx+c=0的根。
#include <stdio.h>
[1]
main()
{
float a, b, c, d;
[2]
a = 5;
b=17;
c = 11;
d = [3] ;
xl =(-b + sqrt (d ) )/ ( 2*a );
x2= [4]