3.5 综合自测
一、选择题
1.以下叙述中,不正确的是( )。
A.在C程序中,%是只能用于整数运算的运算符
B.在C程序中,无论是整数还是实数,都能准确无误地表示
C.若a是实型变量,C程序中a=20是正确的,因此实型变量允许被整型数赋值
D.前缀和后缀运算符,作为表达式来说有不同的作用
2.若变量x、y、z均为double类型且已正确赋值,不能正确表示x/y×z的C语言表达式是( )。
A.x/y*z B.x*(1/(y*z)) C.x/y*1/z D.x/y/z
3.设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( )。
A.0 B.1 C.2 D.3
4.设w、x、y、z、m均为int型变量,有以下程序段:
w=1;x=2;y=3;z=4;
m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;
则该程序运行后,m的值是( )。
A.4 B.3 C.2 D.1
5.以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int a=5,b=4,c=6,d;
printf("% d\n",d=a>b?(a>c?a:c):(b));
}
A.5 B.4 C.6 D.不确定
6.在C语言中,如果下面的变量都是int类型,则输出的结果是( )。
sum=pad=5;pad=sum++,pad++,++pad;
printf("% d\n",pad);
A.7 B.6 C.5 D.4
7.以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int i=010,j=10;
printf("% d,% d\n",++i,j--);
}
A.11,10 B.9,10 C.010,9 D.10,9
8.已知inti;floatf;,以下选项中正确的语句是( )。
A.(intf)%i; B.int(f)%i; C.int(f%i); D.(int)f%i;
9.若有定义:intx=3 ,y=2;floata=2.5 ,b=3.5;则下面表达式的值为( )。
(x+y)% 2+(int)a/(int)b
A.1.0 B.1 C.2.0 D.2
10.假设所有变量均为整型,则表达式 (a=2,b=5,a++,b++,a+b)的值为( )。
A.7 B.8 C.9 D.10
11.若有定义"intx=1,y=1;",表达式(!x||y--)的值是( )。
A.0 B.1 C.2 D.-1
12.有以下程序:
main()
{ unsigned char a,b,c;
a=0x3;
b=a |0x8;
c=b< <1;
printf("% d % d\n",b,c);
}
程序运行后的输出结果是( )。
A.-11 12 B.-6 -13 C.12 24 D.11 22
13.若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( )。
A.1 B.2 C.2.0 D.2.5
14.执行以下程序段后,c3的值为( )。
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
A.0 B.0.5 C.1 D.2
15.以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int y=3,x=3,z=1;
printf("% d % d\n",(++x,y++),z+2);
}
A.34 B.42 C.43 D.33
二、操作题
下列给定程序中,函数fun()的功能是:将形参n中各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
请在标号处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。
试题程序
#include <stdio.h>
unsigned long fun(unsigned long n)
{ unsigned long x=0;int t;
while(n){
t=n% 10;
/*****found*****/
if(t% 2==【1】)
/*****found*****/
x=【2】 +t;
/*****found*****/
n=【3】;
}
return x;
}
main()
{ unsigned long n= -1;
while(n>99999999||n<0){
printf("Please input(0 < n <100000000):");
scanf("% ld",&n);
}
printf("\nThe result is:% ld\n", fun(n));
}