1、福建省C语言二级考试模拟试卷之二窗体顶端一、选择题。 (本大题共40个选项,【1】【40】每个选择项1.5分,共60分)1属于整型常量的是【1】。【1】(A)12(B)12.0(C)-12.0(D)10E102char型常量在内存中存放的是【2】。【2】(A)ASCII代码值 (B)BCD代码值(C)内码值 (D)十进制代码值3设整型变量a为5,使b不为2的表达式是【3】。【3】(A)b=a/2(B)b=6-(-a)(C)b=a%2(D)b=a3?2:14执行语句“x=(a=3,b=a-);”后,x、a、b的值依次为【4】。【4】(A)3,3,2(B)3,2,2(C)3,2,3(D)2,3,2
2、5sizeof(double)的结果值是【5】。【5】(A)8(B)4(C)2(D)出错6设整型变量x的值为35,则表达式“(x&15)&(x|15)”的值是【6】。【6】(A)0(B)1(C)15(D)357设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是【7】。【7】(A)0(B)4(C)-4(D)28设f为实型变量,下列表达式中不是逗号表达式的是【8】。【8】(A)f=3,4,5(B)f=(3,2,1,0)(C)f=3,f3;”后,k的值是【9】。【9】(A)06(B)0177776(C)066(D)017776610指出下列语句中有实际意义的语句是【10】。【10】(
3、A)a|b;(B)a!=b;(C)a+=b;(D)getchar(a);11在16位PC机上执行下列语句后,a的16进制值是【11】,b的值是【12】,c的值是【13】,d的值是【14】。int a,b,c;long d;b=(a=32767,a+1);c=d=0xffff;【11】(A)0xffff(B)0x7fff(C)0xfffe(D)0x7ffe【12】(A)32767(B)32768(C)0(D)-32768【13】(A)65535(B)32768(C)0(D)-1【14】(A)65535(B)32768(C)0(D)-112指出下面正确的输入语句是 【15】 。【15】(A)sca
4、nf(a=b=%d,&a,&b);(B)scanf(a=%d,b=%f,&m,&f);(C)scanf(%3c,c);(D)scanf(%5.2f,&f);13C语言用 【16】 表达逻辑“真”值。【16】(A)true(B)t或y(C)非零整型值(D)整型值014下列循环结构中,【17】不是无限循环。【17】(A)for(i=1,s=0;i+)(B)i=10; s=s+i;while(1)i=i%10+1;if(i10)break;(C)i=0;(D)i=100;dowhile(i+%2+i%2)i+;+i;while(i=0);15执行下列程序段后,x的值是【18】,i的值是【19】。in
5、t i,x;for(i=1,x=1;i=10)break; if(x%2=1) x+=5;continue; x-=3;【18】(A)6(B)7(C)10(D)14【19】(A)4(B)5(C)6(D)716下列程序:#include #define N 6main() char sN; int i=0; for(;iN;si=getchar(),i+);for(i=0;iN;putchar(si),i+);运行时输入以下三行字符,每行输入都是在该行的首列开始:abcdef程序输出的结果是【20】。【20】(A)abcdef(B)a(C)a(D)abbbccdcdefdef17下列程序正确的运
6、行结果为【21】。struct s int n; int *m; *p;int d5=10,20,30,40,50;struct s arr5=100,&d0,200,&d1,300,&d2,400,&d3,500,&d4;#include main() p=arr; printf(%dn,+p-n); printf(%dn,(+p)-n); printf(%dn,+(*p-m);【21】(A)101(B)101200 20 21 30(C)200(D)100101101 21 1018设有以下一程序段:char s=Hello;char *p;p=s;执行完上面的程序段后,*(p+5)的值为
7、【22】。【22】(A)o(B)0(C)o的地址(D)不确定的值19以下程序输出两个整数中较大的数,两个整数由键盘输入。请根据需填空的项目顺序从对应的选择 项顺序组中选择正确内容填入程序的横线内,使其能完成这一操作。#include main() int a,b,*p1,*p2; p1=(int *)malloc(sizeof(int); p2=【23】malloc(sizeof(int); scanf(%d%d,【24】); if(*p2*p1) *p1=*p2; printf(max=%dn, 【25】); free(p1); free(p2);【23】(A)int(B)int*(C)(i
8、nt)(D)(int *)【24】(A)*p1,*p2(B)p1,p2(C)&p1,&p2(D)&a,&b【25】(A)*p1(B)*p2(C)p1(D)p220以下定义与 【26】 中的定义等价。int *p4;【26】(A)int p4(B)int *p(C)int *(p4)(D)int (*p)421若有以下定义和语句,则 【27】 是对a数组元素的错误引用。int a12=0,*p3,*pp,i;for (i=0;i3;i+) pi=&ai*4;pp=p;【27】(A)a12(B)p23(C)a10(D)pp0122以下函数调用语句中有 【28】 个实参。func(a1,a2,a3)
9、,(a4,a5);【28】(A)2(B)5(C)1(D)不合法23#include main() int a,b,c; a=165,b=65; c=mult(a,b); printf(%d*%d=%dn,a,b,c);mult(x,y)int x,y; return(x*y);程序运行结果是:【29】,函数调用采用【30】传递数据。【29】(A)0(B)165*65=10725(C)165*65=0(D)程序不正确【30】(A)地址传送方式 (B)数据复制方式(C)全局变量 (D)内部变量24#include main() int f(),(*i)(); int a=100,b=500; in
10、t c; i=f; c=(*i)(b,a); printf(%d-%d=%dn,b,a,c);f(a,b)int a,b; return (b-a);程序运行结果是:【31】。【31】(A)500-100=400(B)500-100=-400(C)500-100=0(D)程序有错误25#define PI 3.1415926#include main() printf(PI=%fn,PI);程序运行结果为【32】。【32】(A)3.141593=3.141593(B)PI=3.141593(C)3.131593=PI(D)程序有错误,无结果。26格式1#include 文件名格式2#inclu
11、de 下面4个结论,【33】是正确的。【33】(A)格式1中的文件名能带路径,而格式2不能(B)格式1中的文件名不能带路径,而格式2可以(C)如果被包含文件在当前目录下,两种格式都能用(D)如果文件名中不带路径,格式1能搜索当前目录和C编译环境指定的标准目录,而格式2不行。27使用分别编译方法时,在不同的编译单位之间能传递的变量和函数是【34】。【34】(A)内部变量,内部函数(B)外部static型变量,外部函数(C)外部缺省存储类型变量,外部函数(D)所有变量和函数28设有一结构体类型变量定义如下:struct date int year; int month; int day;struc
12、t worklist char name20; char sex; struct date birthday; person;若要对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是:【35】。【35】(A)year=1976(B)birthday.year=1976(C)person.birthday.year=1976(D)person.year=197629设有一联合体变量定义如下:union data long w; float x; int y; char z;union data beta;执行下面赋值语句后,正确的联合体变量beta的值是【36】。beta.w=12
13、3456;beta.y=888;beta.x=3.1416;beta.z=*;【36】(A)123456(B)888(C)3.1416(D)*30整数字输出函数putw(32767,fpoint)的功能是:【37】。【37】(A)读取fpoint指针所指文件中的整数字32767。(B)将两字节整数32767,输出到文件fpoint中。(C)将两字节整数32767输出到fpoint所指的文件中。(D)从文件fpoint中读取整数字32767。31以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式是:【38】。【38】(A)FILE *fp(B)FILE * fpfp=f
14、open(file1,r)fp=fopen(file1,r+)(C)FILE *fp(D)FILE * fpfp=fopen(file1,rb)fp=fopen(file1,rb+)32下列程序的运行结果为【39】。#include union p int i; char c2; x;main() x.c0=13; x.c1=0; printf(%dn,x.i);【39】(A)208(B)14(C)13(D)20933运行下面程序后的w值为【40】。main() int w=2,k; for(k=0;k3;k+) w=f(w);printf(%dn,w); f(x)int x; int y=0
15、; static z=3; y+; z+; return(x+y+z);【40】(A)20(B)7(C)28(D)13二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能: (本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)一、完成下面的程序,使它能够输出1011000之间的所有素数。#include main() int i; for(i=101;i=1000;i+) if(isprime(【1】 )printf(%d,i); printf(n);#include isprime(n)int n; int i; for(i=2;i=sqrt(n
16、);i+)if(【3】) return ( 0 ); return( 【4】 );#include #include double s(fun,a,b)double (*fun)(),a,b; double t,h; int i,n=100; t=0.5*( 【5】 (a)+ 【6】 (b); h=(b-a)/(double)(n); for(i=1;i=n-1;i+)t=t+ 【7】 ; t=t* 【8】 ; return ( 【9】 );double f(x)double x; return (x*x+sin(x)+2.0);main() double y,(*fx)(); fx= 【10
17、】 ; y=s(fx,0.0,4.0); printf(%fn,y);三、以下程序能从所读入的若干字符串中,找出最大的一个串并输出该串(用串*作为结束输入的标志)。#include #include main() char ss105,*ps; int n; readin(ss,&n); findmax(ss,n,&ps); printf(max=%sn,ps);readin(a,num)char (*a)5;int 【11】 ; int i=0; gets(ai); while(!strcmp(ai,*)=0) 【12】 ;gets(ai); 【13】 =i;findmax(a,num,ma
18、x)char (*a)5, 【14】 ;int num; int i; for(*max=a0,i=1;i0) 【15】 ;四、设有一描述零件加工的数据结构如下:零件名pname工序号wnum指针next下面程序完成建立10道工序的链表,请将程序补充完整。#include #include #define NULL 0#define LEN sizeof(struct parts)struct parts char pname10; int wnum; 【16】 ;main() struct parts *head,*p; int i; head=NULL; for(i=0;ipname,&p-wnum);p-next=head;head=p; 五、下面程序完成从磁盘文件stu.DAT中读取n个学生的姓名、学号、成绩后在屏幕上显示输出。#include #define N 100struct student char name20; int no; int score; studN;main() FILE *fp; int i; if ( 【18】 ) printf(Cannot open filen); for(i=0;iN;i+) 【19】 ;printf(name:%sNo:%d,studi.name,studi.No,studi.score); 【20】 ;窗体底端