资源描述
福建省C语言二级考试模拟试卷之二
窗体顶端
一、选择题。 (本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)
1.属于整型常量的是【1】。
【1】 (A)12 (B)12.0
(C)-12.0 (D)10E10
2.char型常量在内存中存放的是【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=a>3?2:1
4.执行语句“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
5.sizeof(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)35
7.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是【7】。
【7】 (A)0 (B)4
(C)-4 (D)2
8.设f为实型变量,下列表达式中不是逗号表达式的是【8】。
【8】 (A)f=3,4,5 (B)f=(3,2,1,0)
(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 (B)0177776
(C)066 (D)0177766
10.指出下列语句中有实际意义的语句是【10】。
【10】 (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)-1
12.指出下面正确的输入语句是 【15】 。
【15】 (A)scanf("a=b=%d",&a,&b); (B)scanf("a=%d,b=%f",&m,&f);
(C)scanf("%3c",c); (D)scanf("%5.2f",&f);
13.C语言用 【16】 表达逻辑“真”值。
【16】 (A)true (B)t或y
(C)非零整型值 (D)整型值0
14.下列循环结构中,【17】不是无限循环。
【17】 (A)for(i=1,s=0;;i++) (B)i=10;
s=s+i; while(1)
{
i=i%10+1;
if(i>10)
break;
}
(C)i=0; (D)i=100;
do while(i++%2+i%2)
{ i++;
++i;
}while(i>=0);
15.执行下列程序段后,x的值是【18】,i的值是【19】。
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 (B)7
(C)10 (D)14
【19】 (A)4 (B)5
(C)6 (D)7
16.下列程序:
#include <stdio.h>
#define N 6
main()
{
char s[N];
int i=0;
for(;i<N;s[i]=getchar(),i++);
for(i=0;i<N;putchar(s[i]),i++);
}
运行时输入以下三行字符,每行输入都是在该行的首列开始:
a<CR>
b<CR>
cdef<CR>
程序输出的结果是【20】。
【20】 (A) abcdef (B) a (C) a (D) a
b b b
c cd cdef
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 <stdio.h>
main()
{
p=arr;
printf("%d\n",++p->n);
printf("%d\n",(++p)->n);
printf("%d\n",++(*p->m));
}
【21】 (A) 101 (B) 101
200 20
21 30
(C) 200 (D) 100
101 101
21 10
18.设有以下一程序段:
char s[]="Hello";
char *p;
p=s;
执行完上面的程序段后,*(p+5)的值为【22】。
【22】 (A)'o' (B)'\0'
(C)'o'的地址 (D)不确定的值
19.以下程序输出两个整数中较大的数,两个整数由键盘输入。请根据需填空的项目顺序从对应的选择
项顺序组中选择正确内容填入程序的横线内,使其能完成这一操作。
#include <stdio.h>
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=%d\n", 【25】);
free(p1);
free(p2);
}
【23】 (A)int (B)int*
(C)(int) (D)(int *)
【24】 (A)*p1,*p2 (B)p1,p2
(C)&p1,&p2 (D)&a,&b
【25】 (A)*p1 (B)*p2
(C)p1 (D)p2
20.以下定义与 【26】 中的定义等价。
int *p[4];
【26】 (A)int p[4] (B)int *p
(C)int *(p[4]) (D)int (*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] (B)p[2][3]
(C)a[10] (D)pp[0][1]
22.以下函数调用语句中有 【28】 个实参。
func((a1,a2,a3),(a4,a5));
【28】 (A)2 (B)5
(C)1 (D)不合法
23.#include <stdio.h>
main()
{
int a,b,c;
a=165,b=65;
c=mult(a,b);
printf("%d*%d=%d\n",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 <stdio.h>
main()
{
int f(),(*i)();
int a=100,b=500;
int c;
i=f;
c=(*i)(b,a);
printf("%d-%d=%d\n",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 <stdio.h>
main()
{
printf("PI=%f\n",PI);
}
程序运行结果为【32】。
【32】 (A)3.141593=3.141593 (B)PI=3.141593
(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.设有一联合体变量定义如下:
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 (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 * fp
fp=fopen("file1","r") fp=fopen("file1","r+")
(C)FILE *fp (D)FILE * fp
fp=fopen("file1","rb") fp=fopen("file1","rb+")
32.下列程序的运行结果为【39】。
#include <stdio.h>
union p
{
int i;
char c[2];
} x;
main()
{
x.c[0]=13;
x.c[1]=0;
printf("%d\n",x.i);
}
【39】 (A)208 (B)14
(C)13 (D)209
33.运行下面程序后的w值为【40】。
main()
{
int w=2,k;
for(k=0;k<3;k++)
{
w=f(w);
printf("%d\n",w);
}
}
f(x)
int x;
{
int y=0;
static z=3;
y++;
z++;
return(x+y+z);
}
【40】 (A)20 (B)7
(C)28 (D)13
二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能: (本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)
一、完成下面的程序,使它能够输出101~1000之间的所有素数。
#include <stdio.h>
main()
{
int i;
for(i=101;i<=1000;i++)
if(isprime(【1】 ))
printf("%d",i);
printf("\n");
}
#include <【2】 >
isprime(n)
int n;
{
int i;
for(i=2;i<=sqrt(n);i++)
if(【3】) return ( 0 );
return( 【4】 );
}
#include <stdio.h>
#include <math.h>
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】 ;
y=s(fx,0.0,4.0);
printf("%f\n",y);
}
三、以下程序能从所读入的若干字符串中,找出最大的一个串并输出该串(用串****作为结束输入的标志)。
#include <stdio.h>
#include <string.h>
main()
{
char ss[10][5],*ps;
int n;
readin(ss,&n);
findmax(ss,n,&ps);
printf("max=%s\n",ps);
}
readin(a,num)
char (*a)[5];
int 【11】 ;
{
int i=0;
gets(a[i]);
while(!strcmp(a[i],"****")==0){ 【12】 ;gets(a[i]);}
【13】 =i;
}
findmax(a,num,max)
char (*a)[5], 【14】 ;
int num;
{
int i;
for(*max=a[0],i=1;i<num;i++)
if(strcmp(a[i],*max)>0)
【15】 ;
}
四、设有一描述零件加工的数据结构如下:
零件名pname
工序号wnum
指针next
下面程序完成建立10道工序的链表,请将程序补充完整。
#include <stdlib.h>
#include <stdio.h>
#define NULL 0
#define LEN sizeof(struct parts)
struct parts
{
char pname[10];
int wnum;
【16】 ;
}
main()
{
struct parts *head,*p;
int i;
head=NULL;
for(i=0;i<10;i++)
{
p= 【17】 ;
scanf("%s,%d",&p->pname,&p->wnum);
p->next=head;
head=p;
}
}
五、下面程序完成从磁盘文件stu.DAT中读取n个学生的姓名、学号、成绩后在屏幕上显示输出。
#include <stdio.h>
#define N 100
struct student
{
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<N;i++)
{
【19】 ;
printf("name:%sNo:%d,stud[i].name,stud[i].No,stud[i].score);
}
【20】 ;
}
窗体底端
展开阅读全文