第一部分 选择题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.C语言程序编译时,程序中的注释部分
A.参加编译,并会出现在目标程序中
B.参加编译,但不会出现在目标程序中
C.不参加编译,但会出现在目标程序中
D.不参加编译,也不会出现在目标程序中
2.下列表达式的值为0的是( )
A.3%5 B.3/5.0 C.3/5 D.3<5
3.正确的C语言用户自定义标识符是( )
A.print B.float C.when? D.random%2
4.设int a=3;则表达式a<1&&--a>1的运算结果和a的值分别是( )
A.0和2 B.0和3 C.1和2 D.1和3
5.下列叙述中,正确的是( )
A.引用带参的宏时,实际参数的类型应与宏定义时的形式参数类型相一致
B.宏名必须用大写字母表示
C.宏替换不占用运行时间,只占编译时间
D.在程序的一行上可以出现多个有效的宏定义
6.下列保留字中用于构成循环结构的是( )
A.if B.while C.switch D.default
7.与语句if(a>b)if(c>d)x=1;else x=2;等价的是( )
A.if(a>b){if(c>d)x=1;else x=2;}
B.if(a>b){if(c>d)x=1;}else x=2;
C.if((a>b)&&(c>d))x=1;else x=2;
D.if(a<=b)x=2;else if(c>d) x=1;
8.设char x='a';则printf("x=%c,y=%c\n",x,97);的输出是
A.x=a,y=97 B.x=97,y=a C.x=97,y=97 D.x=a,y=a
9.设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是( )
A.2 B.3 C.4 D.无确定值
10.执行下列程序
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
main()
{printf("%d\n”,a[1][0]+b[0][0]);}
后输出的结果是
A.0 B.1 C.2 D.3
11.设char str[100];int i=5;则引用数组元素的错误形式是( )
A.str[i+10] B.*(str+i) C.*(str+i-1) D.*((str++)+i)
12.设int x[]={1,2,3,4,5,6},*p=x;则值为3的表达式是( )
A.p+=2,*++p B.p+=2,*p++ C.p+=3,*p D.p+=2,++*p
13.在函数内,定义变量时存储类型符可省略的是( )
A.auto B.static C.extern D.register
14.执行下列程序( )
int a=3,b=4;
void fun(int x1,int x2)
{printf("%d,%d\n",x1+x2,b);}
main()
{int a=5,b=6;fun(a,b);}
后输出的结果是
A.3,4 B.11,1 C.11,4 D.11,6
15.设有定义语句
struct
{int a;float b;} d[3]={{1,4},{2,5},{6,7}};
则printf("%3.1f\n",d[2].a*d[2].b/d[1].b);的输出是( )
A.2.5 B.2.0 C.8.0 D.8.4
16.设有定义语句:enum t1 {a1,a2=7,a3,a4=15}time; ( )
则枚举常量a2和a3的值分别为
A.1和2 B.2和3 C.7和2 D.7和8
17.将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是( )
A.2和2 B.2和5 C.5和2 D.5和5
18.在文件使用方式中,字符串"rb"表示( )
A.打开一个已存在的二进制文件,只能读取数据
B.打开一个文本文件,只能写入数据
C.打开一个已存在的文本文件,只能读取数据
D.打开一个二进制文件,只能写入数据
19.执行下列程序( )
# define F(y) 15>>y
#define PRINT(a) printf("%d",a)
main()
{
PRINT(F(2));
}
后输出的结果是
A.3 B.3.5 C.14 D.7.5
20.main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为( )
A.int argv B.char * argv[]; C.char argv[]; D.char **argv[];
第二部分 非选择题
二、填空题(本大题共10小题,每小题2分,共20分)
21.初始化值是0.618的双精度变量a的定义形式为____________。
22.表达式!10!=1的值是____________。
23.“20<x≤30”的C语言表达式是____________。
24.表达式a=1,a+=1,a+1,a++的值是____________。
25.设int i = 5;则循环语句while(i>=1)i--;执行后,i的值为____________。
26.被调函数在执行结束时,这个函数中定义的____________类型的变量不被释放。
27.设
struct student
{
int no;
char name[12];
float score[3];
}s1,*p=&s1;
用指针法给s1的成员no赋值1234的语句是____________。
28.C语言程序中对文本文件的存取是以____________为单位进行的。
29.设char string[]="This_is_a_book!";则数组的长度应是____________。
30.设int a[2][3]={{2},{3}};则数组元素____________的值为3。
三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处
31.int a=200;
main()
{int i;
for(i=1;i<=5;i++)
{a++;
printf("%d,",a);
s();
}
}
s()
{static int a=20;
a++;
printf(%d\n",a);
}
32.# include "stdio.h"
main()
{char c;
c=getchar();
if(c>='a'&&c<='w'||c>='A'&&c<='W')c=c+3;
else if(c>='x'&&c<='z')||c>='X'&&c<='Z')c=c-23;
printf("%\n",c);
}
设从键盘上输入Next ↙
33.# define N 7
main()
{int i,j,temp,a[N]={1,2,3,4,5,6,7};
for(i=0;i<N/2;i++)
{j=N-1-i;
temp=a[i];a[i]=a[j];a[j]=temp;
}
for(i=0;i<N;i++)printf("%5d",a[i]);
}
34.struct porb
{char *name;
int count;
}x[]={"Li ning",19,"Lang ping",21,"Zhu jian hua",20};
main()
{int i;
for(i=0;i<3;i++)
printf("%s:%d\n",x[i].name,x[i].count);
}
35.main()
{union
{short a;char ch;
}M;
M.a=100;M.ch='A';
printf("%d,%d,%c\n",sizeof(M),M.a,M.ch);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
void sort (int b[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(__;i<n;i++)
if(b[i]___b[j])
{t=b[i];_________;b[j]=t;}
}
main()
{ int a[]={5,8,6,2,7,4,1,3};
int i;
sort(a,8);
for(i=0;i<8;i++)
printf("%5d",a[i]);
printf("\n");
}
37.输入一字符串(换行为结束标志)统计其中数字(0,1,2,…,9不单独统计)、空白和其它字符出现的次数。
# include“stdio.h"
main()
{ char c;
int_____________;
while((c=getchar())!='\n')
{
if(________________)digit++;
else if(c==''||c=='\t')++blank;
else____________;
}
printf("digit=%d,blank=%d,other=%d\n",digit,blank,other);
}
38.先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Not found!”标志。
main()
{ int i,x,a[10];
for(i=0;i<10;i++)scanf("%d",___);
scanf("%d",&x);printf("%d",x);
for(i=0;i<10;i++)if(____________)break;
if(i___10) printf(“position:%d\n”,i);
else printf(" Not found! \n",x);
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)。
39.求出10至1000之内能同时被2、3、7整除的数,并输出。
40.求1到100之间的奇数之和及偶数之和,并将二者输出。
41.输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。