6、设先有定义:int a=10;
则表达式a+=a*=a的值为( D ) 10 100 1000 200
7、以下语句的输出结果是(B) unsigned int b=-1; printf(\
65535 -1 0 1
8、为了避免嵌套的if~else语句的二义性,C语言规定else总是(C ) 与缩排位置相同的if组成配对关系 与在其之前未配对的if组成配对关系
与在其之前未配对的最近的if组成配对关系 与同一行上的if组成配对关系
9、下面这个程序的输出是什么? d
#include main() {
int y=10; while(y--);
printf(\
。 }
A. y=0 B. while构成死循环 C. y=1 D. y=-1
10、在TC中,若x=0,y=1,则语句while(x==y){x++; break;} 循环体执行次数是(d )。 a)3 b)2 c)1 d)0
11、关于下面for循环语句描述正确的是:( B ) for(i=0,k=-1;k=1;i++,k++) printf(\循环结束条件不合法 循环是一个无限循环 循环体执行2次 循环体执行1次
12、下面有关for循环的正确描述是(D ) for循环只能用于循环次数已经确定的情况 for循环是先执行循环体语句,后判定表达式 在for循环中,不能用break语句跳出循环体
13、for循环语句中,可以包含多条语句,但要用花括号括起来36、C语言中( D ) 不能使用do~while语句构成的循环
do~while语句构成的循环必须用break语句才能退出 do~while中,当while语句中的表达式值为非零时结束 do~while中,当while语句中的表达式值为零时结束 14、对于for(表达式1;;表达式3)可理解为( B ) for(表达式1;0;表达式3) for(表达式1;1;表达式3)
for(表达式1;表达式1;表达式3) for(表达式1;表达式3;表达式3) 16、16、下列循环体执行( D )次. k=70;
while(k=0) k-=1; 70次 69次 无限次 0次
17、一个函数返回值的类型取决于( B ) 调用该函数的主调函数的类型 定义函数时指定或缺省的函数类型 调用函数时临时决定
return语句中表达式的类型
18、在一个源程序文件中定义的全局变量的有效范围为( C )
一个C程序的所有源程序文件 该源程序文件的全部范围
从定义处开始到该源程序文件结束
函数内全部范围
19、在C语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为(d )。 a)9 b)6 c)7 d)8
20、在TC中,若有定义和语句:
char s[10];s=\
则结果是(以下u代表空格)(d) a)输出abcd b)输出a c)输出abcduuuuu d)编译不通过
21、在C语言中,引用数组元素时,其数组下标的数据类型允许是(C ) 字符常量; 浮点型常量;
整型常量或整型表达式; 任何类型的表达式;
22、对于下面程序段,执行的结果是(B )。
char c[5]={‘a’,’b’,’\\0’,’c’,’\\0’}; printf(“%s”,c); ‘a’’b’ ab ab c a,b
23、有以下程序 D
main()
{ int a[9]={1,2,3,4,5,6,7,8,9},i,*p,*q; p=a;q=&a[7]; while(p!=q)
{(*p)++;p++;q--;}
for(i=0;i<8;i++)printf(\}
程序运行后的输出结果是 ( a )
A)2,3,4,5,5,6,7,8,9, B)1,2,3,4,5,6,7,8,9, C)2,3,4,5,6,7,8,9,10, D)1,2,3,4,5,7,8,9,10,
24、在TC中,定义 int s[]={1,2,3,4},*p=&s[1];表达式*(p+2)的值是( d ) a)1 b)2 c)3 d)4
25、若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是( C )
A) a,p,&*a B) *&a,&a,*p C) &a,p,&*p D) *&p,*p,&a
26、有语句:int a[10],*p =a;,则下面的语句中,不正确的是(D )。
a) p=p+1;
。
b) *p=*p+1; c) a[0]=a[0]+1; d) a=a+1;
27、若有以下说明和定义 C
union dt
{int a;char b;double c;}data; 以下叙述中错误的是
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段:data.a=5;printf(\输出结果为5.000000 D)data可以作为函数的实参
28、当说明一个结构体变量时,系统分配给它的内存是( A )。 各成员所需内存量的总和。 结构体中第一个成员所需内存量 成员中占内存量最大者所需的容量 结构体中最后一个成员所需内存量
29、下面关于文件的操作方式说明错误的是: d “r” 为只读打开一个字符文件
“w” 为只写打开一个字符文件,文件指针指向文件首部
“a” 打开字符文件,指向文件尾,在已存在的文件中追加数据 “rb” 为只写打开一个二进制文件
30、下面关于标准设备文件及其FILE结构指针变量名对应错误的是: d 标准输入(键盘),对应stdin 标准输出(显示器),对应 stdout 标准辅助输入输出(异步串行口),对应stdaux 标准打印(打印机),对应stderr
二、判断题:
1、 _55a是合法的标识符。 对 2、C语言中字符型、整型、实型都能用八进制表示 错 3、switch语句中,每一个case的冒号后面都允许跟有多条语句。 对 4、函数不能调用本身。 错 5、若一个函数的返回类型为void,则表示其没有返回值 对 6、数组元素可以像普通变量一样使用。 对 7、c语言中,允许用字符串来直接初始化字符数组。 对 8、假设int型数组a的起始地址为2400,则元素a[3]的地址为:2400+4×2=2408。 错 9、一个变量的指针即该变量的地址,专门存放地址的变量,称为指针变量。 对 10、有int a=2,*p; p=&a; 假设变量a的地址为1000,执行 p=p+3以后,p的值为1003。 错
三、改错题:
2、下列程序的功能是:求出以下分数序列的前n项之和,
2/1,3/2,5/3,8/5,13/8,21/13,??
请改正程序中的错误,并运行修改后程序,给出n=30时程序的结果(按四舍五入保留6位小数)。 程序:
#include #include f(long x)
{ long a,b,c,k; double s; clrscr();
s=0.0; a=2; b=1; for(k=1;k<=x;k++) s=s+a/b;
c=a; a=a+b; b=c; return s; }
main() { long n;
scanf(“%ld”,&n);
printf(\结果: %.6lf\\n\}
double {s=s+(float)a/b; c=a; a=a+b; b=c;} 48.840601
四、填空题:
例4:求 nm+(n+1)m-1+(n+2)m-2+??+mn,其中m>n,当n=25,m=92时的值。 double f(double x,double y ) { double I,a=1;
for(I=1;I<=y;I++) a=a*x; return a; } main( )
{ double s=0,n,m,I,j;
double f(double x,double y); scanf(“%lf%lf”,&n,&m); for(I=n,j=m;I<=m;I++,j--) s=s+f(I,j); printf(“\\n%lf”,s); }
五、编程题:
2、求1000以内的最大的20个素数之和。18580