福建省C语言二级考试模拟试卷之二
一、选择题。 (本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)
1.属于整型常量的是【1】。 【1】
(A)12
(B)12.0 (D)10E10
(C)-12.0
2.char型常量在内存中存放的是【2】。 【2】
(A)ASCII代码值 (C)内码值
(B)BCD代码值 (D)十进制代码值
3.设整型变量a为5,使b不为2的表达式是【3】。 【3】
(A)b=a/2 (C)b=a%2
(B)b=6-(--a) (D)b=a>3?2:1
4.执行语句“x=(a=3,b=a--);”后,x、a、b的值依次为【4】。 【4】
(A)3,3,2 (C)3,2,3
(B)3,2,2 (D)2,3,2
5.sizeof(double)的结果值是【5】。 【5】
(A)8 (C)2
(B)4 (D)出错
6.设整型变量x的值为35,则表达式“(x&15)&&(x|15)”的值是【6】。 【6】
(A)0 (C)15
(B)1
(D)35
7.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是【7】。 【7】
(A)0 (C)-4
(D)2
(B)4
8.设f为实型变量,下列表达式中不是逗号表达式的是【8】。 【8】
(A)f=3,4,5
(B)f=(3,2,1,0)
专业知识分享
WORD格式整理
(C)f>=3,f<2,0 (D)f=2,f=1
9.设有无符号短整型变量i、j、k,i值为013,j值为0x13。执行语句“k=~i|j>>3;”
后,k的值是【9】。 【9】
(A)06 (C)066
(B)0177776 (D)0177766
10.指出下列语句中有实际意义的语句是【10】。 【10】
(A)a||b; (C)a+=b;
(B)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】 【12】 【13】 【14】
(A)0xffff (C)0xfffe (A)32767 (C)0
(B)0x7fff (D)0x7ffe (B)32768
(D)-32768
(B)32768
(D)-1
(B)32768
(D)-1
(A)65535 (C)0
(A)65535 (C)0
12.指出下面正确的输入语句是 【15】 。 【15】
(A)scanf(\"a=b=%d\
(B)
scanf(\"a=%d,b=%f\
(C)scanf(\"%3c\
(D)
scanf(\"%5.2f\
13.C语言用 【16】 表达逻辑“真”值。
专业知识分享
WORD格式整理
【16】
(A)true (C)非零整型值
(B)t或y
(D)整型值0
14.下列循环结构中,【17】不是无限循环。 【17】 (A)for(i=1,s=0;;i++)
s=s+i;
(C)i=0;
do { ++i; }while(i>=0);
15.执行下列程序段后,x的值是【18】, int i,x; for(i=1,x=1;i<=20;i++) { if(x>=10) break; if(x%2==1) { x+=5; continue; } x-=3; } 【18】 (A)6 (C)10 【19】 (A)4
(C)6
16.下列程序: #include 专业知识分享 (B)i=10; while(1) { i=i%10+1; if(i>10) break; } (D)i=100; while(i++%2+i%2) i++; 的值是【19】。 (B)7 (D)14 (B)5 (D)7 i WORD格式整理 { char s[N]; int i=0; for(;i 程序输出的结果是【20】。 【20】 (A) abcdef (B) a (D) a b c d e f 17.下列程序正确的运行结果为【21】。 struct s { int n; int *m; } *p; int d[5]={10,20,30,40,50}; struct s arr[5]= { 100,&d[0], 200,&d[1], 300,&d[2], 400,&d[3], 500,&d[4] }; #include 专业知识分享 a b cd (C) b cdef WORD格式整理 【21】 20 30 (A) (B) 200 21 (C) (D) 101 101 200 100 101 101 21 10 18.设有以下一程序段: char s[]=\"Hello\"; char *p; p=s; 执行完上面的程序段后,*(p+5)的值为【22】。 【22】 (A)'o' (B)'\\0' (D) (C)'o'的地址 不确定的值 19.以下程序输出两个整数中较大的数,两个整数由键盘输入。请根据需填空的项目顺序从对应的选择 项顺序组中选择正确内容填入程序的横线内,使其能完成这一操作。 #include (A)int (B)int* (D)(int *) (C)(int) 专业知识分享 WORD格式整理 【24】 p1,p2 &a,&b 【25】 (A)*p1,*p2 (B) (C)&p1,&p2 (D) (A)*p1 (C)p1 (B)*p2 (D)p2 20.以下定义与 【26】 中的定义等价。 int *p[4]; 【26】 int *p (C)int *(p[4]) (D)int (A)int p[4] (B) (*p)[4] 21.若有以下定义和语句,则 【27】 是对a数组元素的错误引用。 int a[12]={0},*p[3],**pp,i; for (i=0;i<3;i++) p[i]=&a[i*4]; pp=p; 【27】 (A)a[12] (C)a[10] (B)p[2][3] (D)pp[0][1] 22.以下函数调用语句中有 【28】 个实参。 func((a1,a2,a3),(a4,a5)); 【28】 5 (C)1 (D) (A)2 (B) 不合法 23.#include 专业知识分享 WORD格式整理 { return(x*y); } 程序运行结果是:【29】,函数调用采用【30】传递数据。 【29】 (A)0 165*65=10725 (C)165*65=0 确 【30】 (A)地址传送方式 (C)全局变量 24.#include main() { int f(),(*i)(); int a=100,b=500; int c; i=f; c=(*i)(b,a); printf(\"%d-%d=%d\\n\ } f(a,b) int a,b; { return (b-a); } 程序运行结果是:【31】。 【31】 (A)500-100=400 (C)500-100=0 误 25.#define PI 3.1415926 #include 程序运行结果为【32】。 【32】 (A)3.141593=3.141593 专业知识分享 (B) (D)程序不正 (B)数据复制方式 (D)内部变量 (B)500-100=-400 (D)程序有错 (B)PI=3.141593 WORD格式整理 (C)3.131593=PI (D)程序有错误,无结果。 26.格式1 #include \"文件名\" 格式2 #include <文件名> 下面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; } struct worklist { char name[20]; char sex; struct date birthday; } person; 若要对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是:【35】。 【35】 (A)year=1976 (B) birthday.year=1976 (C)person.birthday.year=1976 (D)person.year=1976 29.设有一联合体变量定义如下: 专业知识分享 WORD格式整理 union data { long w; float x; int y; char z; }; union data beta; 执行下面赋值语句后,正确的联合体变量beta的值是【36】。 beta.w=123456; beta.y=888; beta.x=3.1416; beta.z='*'; 【36】 (A)123456 (C)3.1416 (B)888 (D)'*' 30.整数字输出函数putw(32767,fpoint)的功能是:【37】。 【37】 (A)读取fpoint指针所指文件中的整数字32767。 (B)将两字节整数32767,输出到文件fpoint中。 (C)将两字节整数32767输出到fpoint所指的文件中。 (D)从文件fpoint中读取整数字32767。 31.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式是:【38】。 【38】 fp (A)FILE *fp (D)FILE * (B)FILE * fp=fopen(\"file1\ fp=fopen(\"file1\ (C)FILE *fp fp fp=fopen(\"file1\ fp=fopen(\"file1\32.下列程序的运行结果为【39】。 #include int i; char c[2]; 专业知识分享 WORD格式整理 } x; main() { x.c[0]=13; x.c[1]=0; printf(\"%d\\n\} 【39】 (A)208 (C)13 (B)14 (D)209 33.运行下面程序后的w值为【40】。 main() { int w=2,k; for(k=0;k<3;k++) { w=f(w); printf(\"%d\\n\ } } f(x) int x; { int y=0; static z=3; y++; z++; return(x+y+z); } 【40】 (A)20 (C)28 (B)7 (D)13 二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能: (本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分) 一、完成下面的程序,使它能够输出101~1000之间的所有素数。 #include 专业知识分享 WORD格式整理 for(i=101;i<=1000;i++) if(isprime(【1】 printf(\"%d\ printf(\"\\n\"); } #include <【2】 isprime(n) int n; { int i; for(i=2;i<=sqrt(n);i++) if(【3】) return ( 0 ); ); > )) return( 【4】} #include double t,h; int i,n=100; t=0.5*( 【5】 (b)); h=(b-a)/(double)(n); for(i=1;i<=n-1;i++) t=t+ 【7】 ; ; (a)+ 【6】 t=t* 【8】 专业知识分享 WORD格式整理 return ( 【9】} double f(x) double x; { return (x*x+sin(x)+2.0); } main() { double y,(*fx)(); fx= 【10】 ); ; y=s(fx,0.0,4.0); printf(\"%f\\n\} 三、以下程序能从所读入的若干字符串中,找出最大的一个串并输出该串(用串****作为结束输入的标志)。 #include int 【11】 ; { int i=0; gets(a[i]); while(!strcmp(a[i],\"****\")==0){ 【12】 ;gets(a[i]);} 【13】} findmax(a,num,max) char (*a)[5], 【14】 =i; ; 专业知识分享 WORD格式整理 int num; { int i; for(*max=a[0],i=1;i 【15】 ; } 四、设有一描述零件加工的数据结构如下: 零件名pname 工序号wnum 指针next 下面程序完成建立10道工序的链表,请将程序补充完整。 #include 【16】} main() { struct parts *head,*p; int i; head=NULL; for(i=0;i<10;i++) { p= 【17】 ; ; scanf(\"%s,%d\ p->next=head; head=p; } } 五、下面程序完成从磁盘文件stu.DAT中读取n个学生的姓名、学号、成绩后在屏幕上显示输出。 #include 专业知识分享 WORD格式整理 { char name[20]; int no; int score; } stud[N]; main() { FILE *fp; int i; if ( 【18】 printf(\"Cannot open file\\n\"); for(i=0;i 【20】} 提交试卷重新作答 ; 专业知识分享 因篇幅问题不能全部显示,请点此查看更多更全内容