资源描述
《C语言程序设计》练习一
一、单项选择题
1.下面转义字符中,表示字符串结束的是( )
A.\ r B.\ n C.\ 0 D.\ f
2.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是( )
A.1个 B.2个 C.4个 D.8个
3.设有int x=2,y,z;执行z=y=x--;后,变量z的值是( )
A.0 B.1 C.2 D.3
4.以十六进制形式输出整数的格式说明符是( )
A.%u B.%ld C.%x D.%o
5.下面合法的if语句是( )
A.if(a=b) c++; B.if(a=<b) c++; C.ifi(a< >b) c++; D.if(a=>b) c++;
6.结束while(表达式)循环的条件是( )
A.当表达式的值为0时 B.当表达式的值不为0时
C.当表达式的值为1时 D.当表达式的值为非1时
7.若有定义int a[3][5];则数组a在内存中占用的字节数是( )
A.8 B.15 C.16 D.30
8.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是( )
A.char B.float C.long D.int
9.若有说明:int *p,m=5,n;以下正确的程序段是( )
A.p=&n; B.p=&n;
scanf(〃%d〃,n); scanf(〃%d〃,*p);
C.scanf(〃%d〃,&n); D.p=&n;
p=n; *p=m;
10.变量的指针,其含义是指该变量的( )
A.值 B.地址 C.名 D.一个标志
16.结构体是C提供的一种专门处理彼此相互有联系,数据类型( )
A.不一致的多个数据的数据结构 B.不一致的单个数据的数据结构
C.一致的多个数据的数据结构 D.一致的单个数据的数据结构
11.下面列出的位运算符中,表示按位与操作的是( )
A.~ B.& C.^ D.|
12.设有说明:int x=0x03,y=3;表达式x&~y的值是( )
A.0 B.1 C.2 D.3
19.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2)&w的值是( )
A.0 B.1 C.3 D.5
13.设有说明:FILE *fp;char *filename=〃paper〃;
对于fp=fopen(filename,〃rb+〃);语句,下面说法正确的是( )
A.打开名为filename的文件读写 B.打开名为paper的文件读写
C.打开名为filename的文件只读 D.打开名为paper的文件只读
14. 设有int a=3, b=-4, c=5;表达式(a<b)? a+b: (a-b,b+4,a-=b+4)的值是( )
A. –1 B. 0 C. 3 D. 7
15. 若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是( )
(其中<CR>表示换行)
int a, b;
scanf(″a=%d b=%d″,&a, &b);
A. 2<CR> B. a=2 b=3<CR> C. a=2, b=3<CR> D. 2,3<CR>
3<CR>
16. 下面程序段的输出结果是( )
main()
{ int s, p;
s=p=5;
p=++s;
p++; ++p;
printf(″%d\n″,p);
}
A. 5 B. 6 C. 7 D. 8
17. 下列if语句中,有语法错误的是( )
A. if(x>y);
B. if(x=y) x+y;
C. if(x!=y) scanf(″%d″, &x) else scanf(″%d″,&y)
D. if(x<y) {x++; y++;}
18. 下面程序段执行后的输出结果是( )
int i=-1;
if(i<=0) printf(″* * * * \n″);
else printf(″%%%%\n″);
A. **** B.%%%% C. %%%%c D. ****c
19. 下面程序段的循环次数是( )
int k=2;
while(k==0) printf(″%d″,k);
k--; printf(″\n″);
A. 0次 B. 1次 C. 2次 D. 无限次
20. 下面程序段的输出结果是( )
a=100;
while(a>120);
a=a+1;
printf(″%d″,a);
A. 100 B. 101 C. 120 D. 121
21. 下面程序执行后,i的值是( )
main( )
{ int a [5]={1,2,3,4,5},i=2
printf(″%d″,a[i++]);
}
A. 1 B. 2 C. 3 D. 4
22. 下面程序的输出结果是( )
main( )
{ int i, x[3][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);
}
A. 5 1 B. 5 2 C. 8 2 D. 9 3
23. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是( )
A. 由系统自动指定对应实参和形参是否共用存储单元
B. 对应实参和形参各占一个独立的存储单元
C. 对应实参和形参共用一个存储单元
D. 可以由用户指定对应实参和形参是否共用存储单元
24. 下面叙述中不正确的是( )
A. 不同函数中可以使用相同名字的变量
B. 形式参数是局部变量
C. 在一个函数内部定义的变量只能在本函数范围内有效
D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效
25. 设有语句int a[4][10],*p=*a;则下面表达式中属于地址表达式的是( )
A. a[1][2] B. a[1] C. *(p+1*10+2) D. *(a[1]+2)
26. 下面定义不正确的是( )
A. struct star B. struct star
{ {
int id int id;
char *name; char *name;
} star1={1001, ″Moon″}; }; star1={1001, ″Moon″};
C. struct D. struct star
{ {
int id; int id;
char *name; char *name;
} star1={123, ″Sun″}; } star1;
27. 下面各个位运算符的优先级从左到右依次升高的是( )
A. | ^ & >> B. ^ >> & ~ C. << | ^ ~ D. ~ | & >>
28. 设有说明:int u=1, v=14;表达式u+v>>2的值是( )
A. 0 B. 3 C. 5 D. 7
29. 如果将文件指针fp指向文件末尾,正确的语句是( )
A. feof(fp); B. rewind(fp); C. fseek(fp,0L,0); D. fseek(fp,0L,2);
30. 下面程序段中,不能完成的功能是( )
FILE *fp;
char ch =′v′;
fp=fopen(″boy″, ″rb+″);
fputc(ch,fp);
A. 建立文件指针fp与文件boy的联系 B. 从boy文件中读取一个字符
C. 向boy文件中写一个字符 D. 打开名为boy的二进制文件
31.设有 int a =3, b=-4, c=0;表达式((a>b)?a:b)&&c<0的值是( )
A.-4 B.0 C.1 D.3
32.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是( )
(其中<CR>表示换行)
int a, b;
scanf(″a=%d, b=%d″,&a,&b);
A.2<CR> B.a=2 b=3<CR> C.a=2, b=3<CR> D.2,3<CR>
3<CR>
33.下面程序段的输出结果是( )
main( )
{ int s, p;
s=p=5;
p=--s;
p++;++p;
printf(″%d\n″,p);
}
A.5 B.6 C.7 D.8
34.关于if语句下面叙述正确的是( )
A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句
B.只有当if语句中表达式的值为假时,才执行if的内嵌语句
C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句
D.只要if语句中表达式的值非0时,就执行if的内嵌语句
35.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是( )
main( )
{ int a,b,s;
scanf(″%d″, &a,&b);
s=a;
if(a<b) s=b
s=s*s;
printf(″%d″,s);
}
A.9 B.12 C.16 D.25
36.若int x=0; 则while(x==0); 的循环次数是( )
A.0 B.1 C.2 D.无限次
37.下面程序段的输出结果是( )
for (i=1; i<3;i++)
{for (j=1;j<3;j++)
printf(″%d ″, i+j);
printf(″\n″);}
A.2 3 3 4 B.2 3 4
C.2 3 D.2
3 4 3 4
38.下面程序的输出结果是( )
mian ( )
{ int a[5]={2,4,6,8,10},i;
i=2;
printf(″%d″,a[i++]);
}
A.2 B.4 C.6 D.8
39.下面程序的输出结果是( )
main( )
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int i,j,k=0;
for(i=0;i<3;i++)
k=k+a[i][0];
printf(″%d\n″,k);
}
A.27 B.33 C.39 D.45
40.以下正确的函数定义形式是( )
A. double fun(int x, int y) B. double fun(int x; int y)
C. double fun(int x, int y); D. double fun(int x, y);
41.关于变量以下不正确的说法是( )
A.在不同函数中可以使用相同名字的变量
B.形式参数是全局变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内的复合语句中定义的变量是局部变量
42.设有语句int a[4][10],*p=*a;则下列表达式中不是地址表达式的是( )
A.&a[1][2] B.a[3] C.*(p+1*10+2) D.p+1*10+2
43.下面关于结构体类型变量定义不正确的是( )
A. struct score B. struct
{ {
int math; int math;
int Chinese; int Chinese;
}Li, Wang; }Li, Wang;
C. struct score D. struct score
{ {
int math; int math;
int Chinese; int Chinese;
}; };Li, Wang;
struct score Li, Wang;
44.下面各个运算符的优先级从左到右依次降低的是( )
A.& >> | ^ B.~ & >> |
C.>> & ^ | D.~ >> & ^
45.设有说明:int u=1, v=2;表达式:u+v<<2的值是( )
A.-1 B.1 C.9 D.12
46.下面程序段中,不能完成的功能是( )
FILE *fp;
char ch;
fp=fopen(″file1″, ″rb+″);
ch=fgetc(fp);
A.建立文件指针fp与文件file1的联系 B.从file1文件中读一个字符
C.向file1文件中写一个字符 D.打开名为file1的二进制文件
47.在格式:fread(stu,size,n,fp);中,下面说法不正确的是( )
A.stu是内存中存放数据的首地址 B.n表示读n次
C.size是一个数据块的字节数 D.fp表示文件指针
48.字符串常数“CHINA”在内存中存储时占的字节数是( )
A.5个 B.6个 C.7个 D.8个
49.如果a=1,b=2,c=3,d=4,则表达式a>b?a:c<d?c:d的值是( )
A.1 B.2 C.3 D.4
50.输出字符串的格式说明符是( )
A.%c B.%s C.%u D.%g
51.设有说明int x=0,y=0;
则执行if(x++)y=1+x;
else y=2+x;
后,变量y的值是( )
A.0 B.1 C.2 D.3
52.以下程序段所表示的数学函数关系是( )
y=-1
if(x!=0) if(x>0) y=1;else y=0;
A. B.
C. D.
53.执行下面程序段后,输出字符A的个数是( )
for(i=0;i<=5;i+=2)
printf(″A″);
A.0个 B.3个 C.5个 D.6个
54.若有定义char a[ ]= ″computer″;则存储字符m的数组元素是( )
A.a[1] B.a[2] C.a[3] D.a[4]
55.若有定义int a [4]={1,2,3,4};则a[a[3]-a[1]*a[1]]的值是( )
A.1 B.2 C.3 D.4
12.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )
A.自动(auto) B.静态(static) C.外部(extern) D.寄存器(register)
56.如果一个C程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为( )
A.源文件的全部范围 B.本程序的全部范围
C.本函数的全部范围 D.从定义该变量的位置开始至本文件末尾
57.下列定义中,不是指针数组定义的是( )
A.int*p[5]; B.float*q[4]; C.int(*r)[6]; D.char*w[7];
58.若有语句int*point,a=4;和point=&a;下面代表地址的一组选项是( )
A.a,point,*&a B.&*a,&a,*point
C.*&point,*point,&a D.&a,&*point,point
59.下列程序的运行结果是( )
#difine N 9
fun (char s[ ])
{
char*p=s+4,*q=s;
int i;
for(i=0;i<4;i+ +,p+ +,q + +)
{
s[i]=*p;
s[i+4]=*q
}
}
main( )
{
char ss[N]= ″ABCDEFGH″;
fun(ss)
printf(″%s\n″,ss);
}
A.EFGHABCD B.EFGHEFGH C.ABCDEFGH D.ABCDABCD
60.设有结构体的定义如下:( )
struct cjd {long bh;int*q;char xm[9];};
则sizeof(struct cjd)的值是
A.14 B.15 C.16 D.17
61.设有说明:int x=0x15,y=0x0f;则x&y的结果是( )
A.0x5 B.0x15 C.0xf0 D.0xf5
62.如果在程序中要使用系统提供的函数strlen,则需要书写的编译预处理命令是( )
A.#include<stdio.h> B.#include<math.h>
C.#incLude<string.h> D. #incLude<malloc.h>
63.由FILE*fp;fp=fopen(″a:\\abc.txt″,″r+″);可以推知fopen 函数的原型是( )
A.char *fopen(char,char); B.FILE*fopen(char*,char*);
C.int fopen (char*,char*); D.FILF fopen(char* ,char*);
64.整数-2在机器内存中的表示是( )
A.1000000000000010 B.1111111111111110
C.11111111111111101 D.1111111111111111
65.下列运算符中优先级最低的是( )
A.> B.! C.% D.= =
66.设有int a=3,b=-4,c=5;表达式+ +a-c+b+ +的值是( )
A.-6 B.-5 C.-4 D.-3
67.以十进制无符号形式输出整数的格式说明符是( )
A.%u B.%x C.%o D.%d
69.下列程序段的输出结果是( )
void main(void)
{
iny y=1,x=5;
if(x<0)y=-1;
if(x>=0)y=0;
printf("%d\n",y);
}
A.-1 B.0 C.1 D.5
69.执行如下程序段后,x的值是( )
int x=1,y=-1;
if(y<0)x-=y;
else x+=y;
A.-1 B.0 C.1 D.2
70.执行while(表达式)循环的条件是( )
A.当表达式的值为0时 B.仅当表达式的值为1时
C.当表达式的值非0时 D.当表达式的值不为1时
71.下列程序段输出的结果是( )
for(i=1;i<3;i+ +)
for(j=1;j<3;j+ +)
printf("%d",i+j);
A.2 3 3 4 B.2 3 4
C.2 3 D.2
3 4 3 4
72.若有定义int s[4]={1,2,3,4};则a[a[2]-3*a[0]+1]的值是( )
A.1 B.2 C.3 D.4
73.下列关于C语言程序说法正确的是( )
A.C语言程序总是从有定义的函数起顺序执行
B.在C语言程序中,被调用函数必须在main函数中定义
C.C语言程序中的main函数必须放在程序的开始部分
D.C语言程序总是从main函数起开始执行
74.若有int a[ ]={1,2,3,4,5,6,7,8,9,10},且0≤i<10,则对数组元素地址正确表示的是
( )
A.&a+1 B.&a+ + C.&a D.&a[i]
75.下列关于结构体类型定义正确的是( )
A.struct ABC B.struct ABC
{ {
int a int a;
char b char b;
char*p char * p;
} }
C.struct ABC D.struct ABC
{ {
int a; int a,
char b; char b,
char * p; char *p,
}; };
76.下列位运算符中,表示按位异或操作的是( )
A.~ B.│ C.^ D.&
77.下列各个位运算符的优先级从左到右依次升高的是( )
A.>>│& ~ B.│>> & ~ C.│& >> ~ D.~│& >>
78.设有说明:int u=1,v=3;则表达式u<<= v的值是( )
A.0 B.1
C.3 D.8
79.如果文件存储的是数据在内存中存放的字节形式,则该文件是( )
A.ASCII文件 B.文本文件 C.二进制文件 D.设备文件
80.下列转义字符中,表示回车的是( )
A.\0 B.\n C.\r D.\f
81.若定义double d;则d在内存中分配的字节数是( )
A.1个 B.2个 C.4个 D.8个
82.下列表达式中运算结果为3的表达式是( )
A.(-7)%4 B.7/4+2 C.7/4*4-4 D.8/3+8/3
83.设有int a=3,b=-4,c=5;表达式a++-c+b++的值是( )
A.-6 B.-5 C.-4 D.-3
84.在printf语句中,格式说明符u表示( )
A.以十进制带符号形式输出整数
B.以十六进制带符号形式输出整数
C.以十进制无符号形式输出整数
D.以十六进制无符号形式输出整数
85.若有int a=3,b=4,c=5,d=6,x=4;执行下列程序段后x的值是( )
if(a<b)
{
if(c= =d)
x=c;
}
else
x=d++
A.4 B.5 C.6 D.7
86.关于switch中的表达式,正确的说法是( )
A.它必须是算术表达式 B.它必须是关系表达式
C.它必须是逻辑表达式 D.它可以是任意类型的表达式
87.对do语句while(表达式);结构的循环,下列说法正确的是( )
A.当表达式的值为非零时不执行循环体
B.循环体至少被执行一次
C.当表达式的值为零时循环体一次也不执行
D.循环体仅被执行一次
88.只能在循环语句中用于结束本轮循环的语句是( )
A.break; B.continue; C.goto D.if
89.若有定义int a[3][5];则数组a在内存中分配的字节数是( )
A.8 B.15 C.24 D.30
90.已知strl和str2是字符串数组,下列哪一个函数能正确的完成字符串的输入?( )
A.gets(strl) B.gets(strl,str2) C.getchar(strl) D.getchar(strl,str2)
91.下列关于函数的描述中正确的是( )
A.C程序中有调用关系的所有模块必须放在同一个源文件中
B.函数必须有返回值,否则不能使用函数
C.C程序必须由一个或一个以上函数构成
D.C函数既可以嵌套定义又可以嵌套调用
92.设有下列程序,则( )
int d=10;
main()
{
int a=3;printf(“%d,%d\n”,a,d);
}
A.a是全局变量,d是全局变量 B.a是局部变量,d是全局变量
C.a是全局变量,d是局部变量 D.a是局部变量,d是局部变量
93.若有说明:int*p1,*p2,m=5,n;以下进行赋值的语句中合理的是( )
A.p1=m; B.&p2=n; C.pl=&m;p2=p1; D.*p1=&m;
94.下列为指针数组定义的是( )
A.float(*)[6]; B.float p[6]; C.float(*)(); D.float *p[6];
95.设有说明:FILE*fp;对于fp=fopen(″c:\\abc.dat″, ″rb″);语句,下列说法中不正确的是( )
A.fp将指向abc.dat文件
B.以只读方式打开二进制文件
C.打开文件的文件名是abc.dat
D.以读写方式打开ASCII码文件
96.ASCII码文件的结束可以用符号常量EOF表示。EOF的值是( )
A.0 B.1 C.-1 D.不能确定的值
97.下列是合法C语言常量的是( )
A. e B. 7E4.0 C. E4 D. -9.13E-30
98.设有int a=3,b=-4,c=5;表达式(a<b)?a:b&&c<0的值是( )
A. 0 B. 1 C. 3 D. 4
99.以指数形式输出实型数的格式说明符是( )
A. %u B. %x C. %f D. %e
100.下列程序的输出结果是( )
main( )
{ int x=5,y;
if(x<0)y=-1;
if(x==0)y=0;
y=1;
printf(″%d″,y);
}
A. -5 B. -1 C. 0 D. 1
101.下列程序段的输出结果是( )
i=1;
while(i<3)
{j=1;
while(j<=i)
{ printf(″%d″,i+j);
j++;
}
i++;
printf(″\n″);
}
A. 2 3 3 4 B. 2 3 4
C. 2 3 D.2
3 4 3 4
102.已知str1和str2是字符数组名,下面函数中能正确地完成字符串输出的是( )
A. puts (str1,str2) B. puts (str2) C. putchar (strl) D. putchar (str1,str2)
103.下列关于函数的说明中不正确的是( )
A. 函数名后面可以不要一对圆括号
B. 函数参数类型必须作说明
C. 函数形参个数可以是一个、多个或没有
D. 空函数被调用时不做任何工作
104.若有定义:int a[5];则a数组中首元素的地址可以表示为( )
A. &a B. a+1 C. a D. &a[1]
105.设有char s=″\ta\017bc″;则指针变量s指向的字符串在内存中所占的字节数是( )
A. 5 B. 6 C. 7 D. 9
106.下列各个位运算符的优先级从左到右依次降低的是( )
A. | & ˆ > > B. ˆ & > > | C. ~ > > ˆ | D. ~ > > | ˆ
107.设有说明:int u=1,v=3,w=5;表达式:v &~~u|w的值是( )
A. 3 B. 5 C. 6 D. 8
108.设有下列程序:( )
#include″stdio.h″
main( )
{
unsigned x=8,y=2;
printf(″%d\n″,y|~(x&y));
}
该程序的运行结果是
A. -1 B. 0xff C.127 D. 65535
109.若有定义∶# define P(x) x x x+1和说明语句:
int a=2;则表达式P(2)的值是( )
A. 6 B. 8 C. 9 D. 10
110.在语句fgets(str,n,p);中,下列说法不正确的是( )
A. str是字符指针 B. 一次可以读n个字符
C. str是字符数组名 D. 一次可以读n-1个字符
111.在Turbo C 2.0中,若定义char ch;则变量ch在内存中分配的字节数是( )
A.1个 B.2个 C.4个 D.8个
6<CR>
112.下面程序段的输出结果是( )
main()
{int a=2,b=5;
printf(″a=%d%%,b=%d%%″,a,b);}
A.a=2,b=5 B.a=2%,b=5% C.a=%2,b=%5 D.a=%d,b=%d
113.设有条件表达式(exp)? a++:b--,则下列表达式中能够与该表达式完全等价的表达式是( )
A.(exp!=0)? a++∶b-- B.(exp==0)? a++∶b--
C.(exp==1)? a++∶b-- D.(exp!=1)? a++:b--
114.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是( )
A.表达式1 B.表达式2 C.表达式3 D.表达式l和表达式3
115.设有下列程序:( )
void main(void)
{
int x[4]={1,3,5,7},i;
i=0:
printf("%d",x[i++]);
}
其输出结果是
A.1 B.3 C.5 D.7
116.下列关于函数的说法中,不正确的是( )
A.函数名后面一定要一对圆括号
B.空函数被调用时不做任何工作
C.函数形参个数可以是一个、多个或没有
D.函数参数类型可不作说明
117.指向与文件参数有关的结构体类型的指针变量称为( )
A.函数指针 B.整型指针 C.字符型指针 D.文件指针
118.设有int x=2,y,z;执行z=y=x——;后变量y的值是( )
A.0 B.1 C.2 D.3
119.两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是( )
void main(void)
{
int x;
scanf("%d",&x);
if(x + + >5)printf("%d",x);
else printf("%d\n",x——);
}
A.7和5 B.6和3 C.7和4 D.6和4
120.在下列选项中,没有构成死循环的程序段是( )
A.int i=100; B.for(;;);
while(1)
{ i=i%100+1;
if(i>100) break;}
C.int k=1000; D.int s=36;
do{++k;}while(k>10000); while(s);一一s;
121.定义如下变量和数组
int k;
int x[3][3]={9,8,7,6,5,4,3,2,l};
则执行下面语句
for(k=0;k<3;k++)
if(k%2)printf("%5d",x[k][k]);
后输出结果是( )
A.3 B.5 C.7 D.9
122.设有下列程序:
ff( )
{int c=9;
static int a=1,b=4;
if(b==4){a+=c;b++;}
else {a+=c;b——;}
printf("a=%d,b=%d\n",a,b);}
main( )
{ff( );ff( );}
则该程序执行后,显示的结果为( )
A.a=10,b=5 B.a=10,b=4
a=19,b=5 a=l9,b=5
C.a=10,b=4 D.a=10,b=5
a=19,b=4 a=19,b=4
123.下面能正确进行字符串赋值操作的是( )
A.char s[5]={"ABCDE"}; B.char s[5]={′A′,′B′,′C′,′D′,′E′};
C.char *s;s="ABCDE"; D.char *s;scanf("%s",s);
124.下面程序段的运行结果是( )
chars *s="abcde";
s+=2 printf
展开阅读全文