0505 年年 C C 语言语言六、单项选择(10 分,每题 1 分)1.下列变量定义正确的是_A. int 2ab;B. float ab;C. char $123D. int *per;2.若有说明 int a=1,x=2,y=3;下列不是 C 语言合法表达式的是A. +9B. (float)(x)C. a+D. (float)x+y3.若有说明 int i=1,j=2,k=3;表达式 i&j&k 的值为A. 1B. 2C. 3D. 44.若有说明 int a,b; 下面输入函数调用语句正确的是A. scanf(“%d%d”,a,b);B. scanf(“%d%d”,&a,&b);C. scanf(%d%d,a,b);D. scanf(%d%d,&a,&b);5.下列不是关系表达式的是A. 35B. 13C. !35D.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=&j;B.p=&aj;C.p=a;D.p=0 x1000;9.若有说明 int a=4;执行语句 a1 后,变量 a 的值A.1B.2C.3D.410.以只读的方式打开文本文件“test.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”的长度为_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,&y);printf(“result:%.0f,%.0fn”,x,y);void fun(x,y)float x,*y;*y=x*x;九、编写程序(20 分)1.编写程序求某 1 三位数的平方和(8 分) 2.编写程序求数列 1,1,2,3,5,8,13,.的前 100 项的和及平均值(12 分) 。
0606 年年 C C 语言语言六、单项选择(15 分,每题 1 分)1、C 语言程序的基本单位是() A. 程序行 B. 语句 C. 函数 D. 字符2、可用作 C 语言用户标识符的一组字符串是() A. void define WORDB.a3_b3 _123 IFC. For abc Case D.2a DO sizeof3、设 int a=12,则执行完语句 a+=a-=a*a;后 a 的值是() A. 552 B. 264 C. 144D. 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 个指针元素的一维指针数组,每个元素都只能指向整型量6、有以下程序段 typedef struct NODE int 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)/3 C.pow(sin(0.5),2)/3 D.1/3.0*pow(sin(1.0/2),2)8、C 语言规定,程序中各函数之间() A.既允许直接递归调用也允许间接递归调用 B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用9、在宏定义define PI 3.14159中,用宏名 PI 代替一个() A.单精度数 B.双精度数 C.常量D.字符串10、在 C 语言中,要求运算数必须是整型的运算符是() A.B. / C. =y)&(y=z) B.(x=y) AND (y=z) C.(x=y=z) D.(x=y)&(y=z)12、有以下程序段 int k=0,a=3,b=4,c=5; k=ac?c:k;执行该程序段后,k 的值是()A.3 B.2 C.1 D.013、若有定义 char *s=”NameAddressn”,则指针 s 所指字符串长度为( A.19 B.15 C.18D.说明不合法14、下述对 C 语言字符数组的描述中错误的是() A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入输出 C.可以在赋值语句中通过赋值运算符对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较15、设有如下的函数 exam(float x)printf(“n%f”,x*x);则函数的类型为() A.与参数 x 的类型相同 B.是 void C.是 int D.无法确定七、阅读下列程序,写出其运行结果(每小题 5 分,共 25 分)1.程序:main() int i,j,x; for(i=0;i=4;i+) for(j=1;j=4-i;j+) printf(“ ”);for(j=0;j0) switch(k) case 1:n+=k; case 2: case 3:n+=k; default:break;k-; 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;i3;i+) for(j=0;j3;j+) if(arrayijm) m=arrayij; row=i;column=j; printf(“%d,%d,%dn”,m,row,column);4.程序: #include int p(int k,int a) int m,i,c=0; for(m=2;m=k;m+)for(i=2;im;i+) if(!(m%i) break; if(i=m) ac+=m; return c;#define MAXN 20main()int i,m,sMAXN; m=p(13,s); for(i=0;ib 的关系运算结果是_。
10.若有定义 a10;则允许数组 a 的下标最小可以是_五、请写出下列程序的运行结果(本题10 分,每小题 2 分) 1.main() int n=100; if(n100) printf(“*”); else printf(“#”); 2.main() int a=2,b= -1,c=2; if(ab) if(b0) c=0; else c+=1; printf(“c=%dn”,c); 3.main() char s=”student0teacher”; printf(“%sn”,s);4.main() int a=3,b=4; printf(“a=%d,b=%dn”,+a,b+); 5.main() static int a5,i;for(i=0;i5;i+) ai=ai+i;for(i=0;i5;i+) printf(“%d,”,ai);六、单选题(本题 10 分,每小题 2 分) 1.main() int k=11; printf(“k=%d, k=%o, k=%xn”,k,k,k);A.k=11,k=12,k=11 B. k=11,k=13,k=13C. k=11,k=013,k=0 xb D. k=11,k=13,k=b 2.main() int y=10; while(y-); printf(“y=%dn”,y);A.y=10 B.y=1 C.y=随机值 D.y= -13.main() int a,b,*p1,*p2; p1=&a;p2=&b; *p1=100;*p2=200;c=*p1+*p2; printf(“%dn”,c);A.300 B.100+200 C.100 D.200 4.在下列程序中,当执行到gets(ss);语句时,若输入字符为”ABC”时,则该程序的输出结果是: main() char ss10=12345; strcat(ss,”6789”); gets(ss);printf(%sn,ss);A.ABC B.ABC9 C.123456ABC D.ABC4567895.main() char a=morning,t; int i,j=0; for(i=1;i7;i+) if(aj、*=、&中,其优先级最低的是_。
6.定义共用体类型使用关键字_ 7.C 语言中,break 语句通常用在_语句和循环语句中 8.表达式 7*2/5+3.5+b值的类型是_ 9.设有语句 int a=5;执行语句 printf(%d,+a);后,输出结果为_ 10.执行下面程序段后,输出的结果为_ for(i=1;i5;i+) printf(*);七、判断题(10 分,每题 1 分) 1.C 语言程序总是从源程序文件中的第一个函数开始执行 ) 2.数组名代表数组所占存储区的首地址,其值不可以改变 ) 3.elseif 不属于 C 语言关键字(保留字)( ) 4.指针变量可以加减一个整数 ) 5.宏替换不占用运行时间 ) 6.C 语言中转义字符以开头 ) 7.C 语言规定,函数返回值的类型是由return 语句中的表达式类型决定的 ) 8.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效 ) 9.C 语言中的函数既可以递归定义,又可以嵌套定义 ) 10.main 函数可以有参数 )八、程序分析题(12 分,每题 3 分) 1.指出程序的错误并改正 #include void main() int a,b,max;scanf(%d,%d,&a,&b);if(ab) max=a max=b;printf(max=%d,max);2.写出下面程序的运行结果:#include void main()int x=0,1,2,3,4,5,6,7,8,9; int i,sum=0; for(i=0;i10;i=i+2) sum=sum+xi; printf(%d,sum);3.写出程序的运行结果 #include void main()char s=”ABC”,*p; for(p=s;ps+3;p+。