1、05 年 C 语言六、单项选择(10 分,每题 1 分)1.下列变量定义正确的是_A. int 2ab; B. float ab; C. char $123 D. int *per;2.若有说明 int a=1,x=2,y=3;下列不是 C 语言合法表达式的是A. +9 B. (float)(x) C. a+ D. (float)x+y3.若有说明 int i=1,j=2,k=3;表达式 i 下面输入函数调用语句正确的是A. scanf(“%d%d”,a,b); B. scanf(“%d%d”,C. scanf(%d%d,a,b); D. scanf(%d%d,5.下列不是关系表达式的是A.
2、35 B. 13 C. !35 D.1+236.下列对数组的定义正确的是A. int a(10); B. int a10; C. int a10; D.int a10;7.下列对 C 程序结构的说法不正确的是A.C 程序是由一系列函数构成的 B.C 程序可以有多个 main()函数C.C 程序中函数名不可以和变量名相同 D.C 程序中可以定义函数8.若有说明 int *p,a10,j=3;下列指针变量赋值错误的是A.p= B.p= C.p=a; D.p=0x1000;9.若有说明 int a=4;执行语句 a1 后,变量 a 的值A.1 B.2 C.3 D.410.以只读的方式打开文本文件“t
3、est.txt”的正确方法是A.fopen(“test.txt”,”r”); B. fopen(“test.txt”,”rb”);C. fopen(“test”,”r”); D. fopen(“test.txt”);七、填空题(10 分,每题 1 分)a) 若有说明 a=-1;printf(“%d,%x,%on”,a,a,a)的输出结果是 _。b) -32760 在内存中的存储形式是_(用十六进制表示)。c) 7%4 的值为_。d) 写出 C 语言中的三种逻辑运算符_。e) 循环语句有 for 语句、_和_。f) continue 语句的作用是 _。g) 字符串“123x4519abc” 的长
4、度为_。h) 数组 a10的第 i 个元素的指针是_。i) 若有结构体类型定义 struct STU int a; float x; char c; sizeof(struct STU)的值是_。j) FILE *fp;的作用是定义了一个_。八、写出下列程序的运行结果(10 分,每题 5 分)1.main() int i,s;for(i=10,s=0;i;s+=i,i-)printf(“result:%dn”,s);2.main()void fun();float x,y;x=10;fun(x,printf(“result:%.0f,%.0fn”,x,y);void fun(x,y)float
5、 x,*y;*y=x*x;九、编写程序(20 分)1.编写程序求某 1 三位数的平方和(8 分) 。2.编写程序求数列 1,1,2,3,5,8,13,.的前 100 项的和及平均值(12 分) 。06 年 C 语言六、单项选择(15 分,每题 1 分)1、C 语言程序的基本单位是( )A. 程序行 B. 语句 C. 函数 D. 字符2、可用作 C 语言用户标识符的一组字符串是( )A. void define WORD B.a3_b3 _123 IF C. For abc Case D.2a DO sizeof3、设 int a=12,则执行完语句 a+=a-=a*a;后 a 的值是( )A.
6、 552 B. 264 C. 144 D. 2644、以下叙述正确的是( )A.do-while 语句构成的循环不能用其它语句构成的循环来代替。B.do-while 语句构成的循环只能用 break 语句退出。C.用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。D. 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。5、设有说明 int (*ptr)10 其中的标识符 ptr 是( )A. 10 个指向整型变量的指针B. 指向 10 个整型变量的函数指针C. 一个指向具有 10 个整型元素的一维数组的指针D.具有 10 个指针元素
7、的一维指针数组,每个元素都只能指向整型量6、有以下程序段typedef struct NODEint num;struct NODE *next; OLD;则以下叙述中正确的是( )A.以上的说明形式非法 B. NODE 是一个结构体类型C.OLD 是一个结构体类型 D.OLD 是一个结构体变量7、以下不能正确计算代数式值的 C 语言表达式是( )A.1/3*sin(1/2)*sin(1/2) B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3 D.1/3.0*pow(sin(1.0/2),2)8、C 语言规定,程序中各函数之间( )A.既允许直接递归调用也允许间
8、接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用9、在宏定义define PI 3.14159 中,用宏名 PI 代替一个( )A.单精度数 B.双精度数 C.常量 D.字符串10、在 C 语言中,要求运算数必须是整型的运算符是( )A. B. / C. =y) k=ac?c:k;执行该程序段后,k 的值是( )A.3 B.2 C.1 D.013、若有定义 char *s=”NameAddressn”,则指针 s 所指字符串长度为( )A.19 B.15 C.18 D.说明不合法14、下述对 C 语言字符数组的描述
9、中错误的是( )A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入输出C.可以在赋值语句中通过赋值运算符对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较15、设有如下的函数exam(float x)printf(“n%f”,x*x);则函数的类型为( )A.与参数 x 的类型相同 B.是 voidC.是 int D.无法确定七、阅读下列程序,写出其运行结果(每小题 5 分,共 25 分)1.程序:main() int i,j,x;for(i=0;i0)switch(k)case 1:n+=k;case 2:case 3:n+=k;default:break;k-;
10、printf(“%dn”,n);3.程序:main()int i,j,row,column,m;static int array33=100,200,300,28,72,-30,-850,2,6;m=array00;for(i=0;iint p(int k,int a)int m,i,c=0;for(m=2;mb 的关系运算结果是_。10.若有定义 a10;则允许数组 a 的下标最小可以是_。五、请写出下列程序的运行结果(本题 10 分,每小题 2 分)1.main()int n=100;if(n100)printf(“*”);elseprintf(“#”);2.main()int a=2,b
11、= -1,c=2;if(a、*=、执行语句 printf(“%d“,+a);后,输出结果为_。10.执行下面程序段后,输出的结果为_。for(i=1;ivoid main()int a,b,max;scanf(“%d,%d“,if(avoid main()int x=0,1,2,3,4,5,6,7,8,9;int i,sum=0;for(i=0;ivoid main()char s=”ABC”,*p;for(p=s;p。3若 int 型变量占内存 2 个字节,double 型变量占内存 8 个字节,有如下定义:union data int i;double d;a;则变量 a 在内存中所占字节
12、数为_。4当文件关闭成功后,fclose 函数返回值为_。七、阅读程序题(15 分,每题 3 分)1下面程序的运行结果是_。#include main() int i=2,j=3,k;k=i+j; int k=8;if(i=3)printf(“%d”,k);else printf(“%d”,j);printf(“%d%d”,i,k);2.下面程序的运行结果是_。#include define SIZE 8main() char s=“GDBFHACE”;int i,j,t;for(i=0;isj)t=si;si=sj;sj=t;for(i=0;iint fun(int a,int b,int
13、*cn,int *dn) *cn=a*b+b*b;*dn=a*a-b*b;a=5;b=6;main() int a=2,b=3,c=5,d=6;fun(a,b,printf(“a=%d,b=%d,c=%dn”,a,b,c,d);4. 下面程序的运行结果是_。#include int fun(int x) static y=2;y+;x+=y;return x;main() int k;k=fun(3);printf(“%d,%dn”,k,fun(k);5. 下面程序的运行结果是_。#include main() int s=0,m;for(m=7;m=3;m-)switch(m)case 1:case 4:case 7:s+;break;case 2:case 3:case 6:s+=2;case 0:case 5:s+=3;break;printf(“s=%d n”,s);八、完善程序题(15 分,每题 3 分)1下面程序的功能是找出 100 到 200 之间不能被 3 整除但能被 5 整除的数。