《C语言程序设计》练习及答案
得分评卷人复查人
一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。
1、结构化程序设计的三种基本控制结构是(D )。
A、主程序、子程序、函数
B、输入、处理、输出
C、调用,返回,转移
D、顺序、选择、循环
2、下列关于C程序变量的叙述, ( D )是错误的。
A、变量名必须由字母或下划线开头。
B、程序中的变量必须在被使用之前定义。
C、不同的基本类型的变量之间可以混合运算。
D、变量的数据类型决定变量的"作用域"。
3、能将C语言编写的源程序转换为目标程序的软件是(C )。
A、编辑程序
B、汇编程序
C、编译程序
D、解释程序
4、以下符号中,合法的用户标识符是( D )。
A、-p
B、int
C、3ab
D、_xt_
5、以下选项中,与m=n++完全等价的表达式是( C )。
A、m=++n
B、m+=n+1
C、m=n, n=n+1
D、n=n+1,m=n
6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。
A、&aa[0]+1
B、&aa[1]
C、&aa[0]++
D、aa+1
7、表达式!5&(7+3)&&(4+5)的值是(A)。
A、0
B、1
C、5
D、9
8、以下选项中非法的C语言表达式是(A )。
A、x+1=x+1
B、0<=x<100
C、i=j==0
D、(char)(65+3)
9、在TURBO C中, int类型变量所占字节数是(B )。
A、1
B、2
C、4
D、8
10、C语言中基本的数据类型包括(B)。
A、整型,实型,逻辑型
B、整型,实型,字符型
C、整型,字符型,逻辑型
D、整型,实型,逻辑型,字符型
11、设有变量定义如下:
char ch; int i; float f;
表达式ch / i + i﹡f + 1.234 的结果的数据类型是(D)。
A、float
B、char
C、int
D、double
12、C语言中前后运算对象都必须是整型的运算符是(A)。
A、%
B、/
C、++
D、!
13、已定义c为字符型变量, 则下列语句中正确的是(A)。
A、c=98;
B、c=’98’;
C、c=”98”
D、c=”b”
14、以下实型常量中,符合C语言语法的是(A)。
A、.5E-3
B、1.2E0.5
C、E15
D、3.14.159E
15、以下4个选项中,不能看作一条语句的是(C )。
A、if (a>0);
B、{ ; }
C、if (b==0) m=1; n=2;
D、a=0, b=0, c=0;
16、要用C语言表示数学关系式a≥b≥c,正确的表达式是(D)。
A、a>=b>=c
B、(a>=b)& (b>=c)
C、(a>=b) || (b>=c)
D、(a>=b)&& (b>=c)
17、设i, j, k 均为整型变量, 则执行以下for 语句后, k 的值是(C )。
For (i=0, j=10; i<=j; i++, j--) k=i+j;
A、0
B、5
C、10
D、20
18、若表达式!x的值为1, 则下列表达式( A )的值为1。
A、x = = 0
B、x = = 1
C、x != 1
D、x != 0
19、已知整型变量a=13, b=16, 则a & b的值为(A )。
A、0
B、-3
C、1
D、3
20、在一个表达式中含下列运算符,优先级最高的是(B)。
A、赋值运算符
B、算术运算符
C、条件运算符
D、关系运算符
21、下列语句组中,正确的是(C)。
A、char *s; s={"Beijing"};
B、char s[8]; s={"Beijing"};
C、char *s; s="Beijing";
D、char s[8]; s="Beijing";
22、下述对C语言字符数组的描述中错误的是(C)。
A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输入、输出
C、可在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D、不可用关系运算符对字符数组中的字符串进行比较
23、凡在函数中未指定存储类别的变量,其隐含的存储类别为(A)。
A、auto
B、extern
C、register
D、static
24、在函数调用语句中的____的个数、类型和次序应与函数定义的____相一致。(D)
A、值,变量
B、变量,值
C、形参,实参
D、实参,形参
25、若有定义int (*p)[3]和int (*f)(),则p和f分别表示(D)。
A、指针数组,函数指针
B、数组指针,指针函数
C、指针数组,指针函数
D、数组指针,函数指针
26、在说明语句:int *f();中,标识符f代表的是(C)。
A、一个用于指向一维数组的指针变量
B、一个用于指向整型数据的指针变量
C、一个返回值为指针型的函数名
D、一个用于指向函数的指针变量
27、使用结构体struct的目的是(A)。
A、将一组相关的数据作为一个整体,以便程序使用
B、将一组相同数据类型的数据作为一个整体,以便程序使用
C、将一组数据作为一个整体,以便其中的成员共享同一存储空间
D、将一组数值一一列写出来,变量的值只限于列举的数值的范围内
28、设有说明语句
typedef struct
{ int n;
char ch[8];
}PER;
则下面叙述中正确的是(A)。
A、PER是结构体类型名
B、PER 是结构体变量名
C、struct 是结构体类型名
D、struct 是结构体变量名
29、设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(B)。
A、scanf(“%d”,a);
B、scanf(“%d”,pa);
C、scanf(“%d”,*pa);
D、scanf(“%d”,&pa);
30、若要打开D盘上user文件夹下名为abc.txt的文本文件进行读、写操作,符合此要求的函数调用是(C)
A、fopen("D:\\user\\abc.txt","r")
B、fopen("D:\user\abc.txt","w")
C、fopen("D:\\user\\abc.txt","r+")
D、fopen("D:\user\abc.txt","rb")
31、下列语句中,能正确进行字符串赋值或赋初值的是(AD )。
A、char a[5]={‘h’,‘e’,‘l’,‘l’,‘o’};
B、char s[5]=“hello”;
C、char s[5]; s=“hell”;
D、char *s; s=“hello”;
32、下列语句中,能正确定义一维数组的是(B)。
A、 int N=10;
int num[N]; B、# define N 10
int num[N];
C、int num[0..10];
D、int num[];
33、下列语句中,不能正确定义二维数组的是(A)。
A、int a[2][]={{1,2},{3,4}};
B、int a[2][2]={{1}, 2,3};
C、int a[][2]={1,2,3,4};
D、int a[2][2]={{1},{2}};
34、如有定义: int *p[3]; 则下列叙述中正确的是(C)。
A、定义了一个可指向一维数组的指针变量p, 所指一维数组应含有三个int类型元素
B、定义了一个名为*p的整型数组, 该数组含有三个int类型元素
C、定义了一个指针数组p, 该数组含有三个元素, 每个元素都是基类型为int的指针
D、定义了一个基类型为int的指针变量p, 该变量具有三个指针
35、有以下函数定义:
void fun(int n, double x) { …… }
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(A)。
A、fun(x,n);
B、void fun(n,x);
C、fun(int y, double m);
D、k=fun(10,12.5);
36、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)。
A、函数调用可以出现在表达式中
B、函数调用可以作为独立的语句存在
C、函数调用可以作为一个函数的实参
D、函数调用可以作为一个函数的形参
37、若有下面的说明和定义
struct test
{ int ml; char m2; float m3;
union uu {char ul[5]; int u2[2]; } ua;
} myaa;
则sizeof(struct test )的值是(B)。
A、9
B、12
C、14
D、16
38、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为(B)。
A、-1
B、0
C、1
D、3
39、下列程序的输出结果为(C)。
#include
main()
{ char a = ‘a’, b;
printf(”%c,”, ++a);
printf(”%c\n”, b=a++); }
A、a, b
B、a, c
C、b, b
D、b, c
40、下列程序的输出结果为(A)。
#include
#define F(X,Y) X﹡Y
main( )
{ int a=3, b=4;
printf("%d\n", F(a++, b++)); }
A、12
B、16
C、20
D、24
41、下列程序的输出结果为(D)。
#include
main( )
{ int a[ ][3]=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
printf("%d", a[2][1]); }
A、2
B、4
C、7
D、8
42、设有说明语句: int a=1,b=0; 则执行以下语句后, 输出结果为(A)。
switch(a)
{ case 1: switch(b)
{ case 0: printf("**0**"); break;
case 1: printf("**1**"); break; }
default: printf("**2**"); break; }
A、**0**
B、**2**
C、**0**
**1**
**2** D、**0**
**2**
43、下列程序的输出结果为(B)。
main()
{ char ch1,ch2;
ch1=’A’+’5’-‘3’;
ch2=’A’+’5’-‘3’;
printf(“%d,%c\n”,ch1,ch2); }
A、67,67
B、67,C
C、B, C
D、C, C
44、下列程序的输出结果为(D)。
main( )
{ int x=10, y=10;
printf("%d, %d", x++, ++y); } A、10, 10 B、11, 10
C、11, 11
D、10, 11
45、下列程序的输出结果为(A )。
#define SUM(x) x+x
main( )
{ int a=10,k=3, m=2;
a/=SUM(k*m)/SUM(m);
printf("%d", a);
}
A、0
B、3
C、4
D、6
46、下列程序的输出结果为(D)。
#include
main( )
{
int i;
for(i=100; i++)
if (i%5==0) continue;
printf("%d", i);
break;
}
A、100
B、101
C、无限循环
D、程序错误
47、下列程序的输出结果为(B)。
main()
{ int x=3, y=2, z=1;
printf("%d\n, x / y & ~z); }
A、0
B、1
C、2
D、3
48、下列程序的输出结果为(A)。
#include
main( )
{ static int a[ ]={1, 3, 5}, b[ ]={2, 6, 10};
int i, s=0;
for(i=0; i<3; i++) s+=a[i] / b[i];
printf("%d", s); }
A、0
B、1
C、1.5
D、2
49、下列程序段的输出结果为(A)。
int a=4,b=3,c=2,d=1;
printf(“%d”,(a
A、1
B、2
C、3
D、4
50、下列程序段的输出结果为(B)。
int x=3;
do
{ printf(“%d ”, x -= 2 );
}while( !(--x) );
A、1
B、1 -2
C、3 0
D、死循环
51、下列程序的输出结果为(D)。
main( )
{ int a[7] = {1, 2, 3, 4, 5, 6, 7}, *p=a;
printf(“%d\n”, *(p+3) );}
A、1
B、2
C、3
D、4
52、下列程序的输出结果为(B)。
void sub(int x, int y, int *z)
{ *z=y-x; }
main( )
{ int a,b,c;
sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c);
printf(“%d, %d, %d”, a, b, c); }
A、5,2,3
B、-5,-12,-7
C、-5,-12,-17
D、5, -2, -7
53、下列程序的输出结果为(C)。
main( )
{ int a[ ]={2, 4, 5, 7, 11, 12}, x, y=0, *p;
p=&a[1];
for(x=0; x<=3; x++) y+=*(p+x);
printf(“%d”, y);}
A、16
B、18
C、27
D、11
54、下列程序输入: 81635ac76201 显示结果为(B)#include
void main( )
{ int i; float x; char s[10];
scanf("%3d%f%4s", &i, &x, s);
printf("%d %6.3f %s\n", i, x, s); }
A、816 35.000 ac
B、816 35.000 ac76
C、816 35.0 ac
D、816 35.0 ac76
55、下列程序的输出结果为(C)。
main( )
{ union
{ long k;
int i[6];
char c[4];
}r;
printf("%d", sizeof(r));
}
A、4
B、6
C、12
D、20
56、下列程序的输出结果为(B)。
#include
main( )
{
void func( );
struct date
{ int a, b;
char s[5];
}arg;
arg.a=27;
arg.b=3;
strcpy(arg.s, "abcd");
func(arg.a, arg.b, arg.s);
printf("arg.a=%d, arg.b=%d, arg.s=%s, arg.a, arg.b, arg.s);
}
void func(int x, int y, char *s1)
{
x-=5;
y+=10;
s1="ABCD";
}
A、arg.a=22, arg.b=13, arg.s=ABCD
B、arg.a=27, arg.b=3, arg.s=abcd
C、arg.a=22, arg.b=13, arg.s=abcd
D、arg.a=27, arg.b=3, arg.s=ABCD
57、下列程序的运行结果为(B)。
main( )
{ float y=0.0, a[ ]={2.0, 4.0, 6.0, 8.0,10.0}, *p;
int i;
p=&a[1];
for(i=0; i<3; i++) y+=*(p+i);
printf("%f", y);
}
A、12.000000
B、18.000000
C、20.000000
D、24.000000
58、下列程序的运行结果为(B)。
#include
main( )
{
char b[ ]="ABCDEFG";
char *chp=&b[6];
while(chp>&b[0])
{ putchar(*chp);
--chp; }
putchar(''); }
A、GFEDCBA
B、GFEDCB
C、FEDCB
D、FEDCBA
59、下列程序输出结果为(B)。
f( )
{ static c=3;
return(c++);
}
main( )
{ int i, k;
for(i=0; i<2; i++) k=f( );
printf("%d", k);
}
A、3
B、4
C、5
D、6
60、下列程序运算结果为(A)。
main( )
{ long n, d;
int i=0;
n=657354;
while(n!=0)
{ d=n%10;
printf("%d", d);
n/=10;
}
}
A、453756
B、354657
C、657354
D、756453
61、下列程序的输出结果为(B)。#include
void main( )
{ int a=15, c=14;
printf("%d\n", (--a==c++)? --a: c++);
}
A、12
B、13
C、14
D、15
62、下列程序的输出结果为(A)。
int x, y;
change( )
{ x=x+y;
y=x-y;
x=x-y;
}
main( )
{ int x=7,y=5;
change( );
printf("%d, %d", x, y);
}
A、7, 5
B、5, 7
C、12, 2
D、2, 12
63、下列程序的输出结果为(C)。
#include
void main( )
{ int a[][4]={{2,3,4,10},{5,6,7,10},{8,9,10,-999}};
int *pa; pa=a[1];
while(*pa!=-999)
{ printf("%d ",*pa);
pa++;
} }
A、8 9 10
B、6 7 10 8 9 10
C、5 6 7 10 8 9 10
D、3 4 10 5 6 7 10 8 9 10
64、下列程序的输出结果为(D)。
#include
void main( )
{ int i=0;
do{ printf("%d ", i);
if (i==5) break;
else continue;
}while(++i<=9);
}
A、0 1 2 3 4 5 6 7 8 9
B、1 2 3 4 5
C、1 2 3 4 5 6 7 8 9
D、0 1 2 3 4 5
65、下列程序的输出结果为(B)。
#include
void main( )
{ char *strarr[3]={"abcdefg", "1234567", "pqrst"};
char newstr[10];
strcpy(newstr, strarr[1]+2);
printf("%s\n", newstr); }
A、bcdefg
B、34567
C、rst
D、234567
66、下列程序的输出结果为(C)。
#include
#define PI 3.14
#define AREA(x) PI*x*x
void main( )
{ float radius=1.0, area;
area=AREA(radius+1);
printf("%5.2f\n", area); }
A、12.56
B、6.28
C、5.14
D、4.14
67、设有如下函数定义:
int maxop(int m, int n)
{
if(m>n) return maxop(m-n, n);
if(m if(m==n) return m; } 如果执行printf("%d", maxop(85, 51)); 则输出结果为(A )。 A、17 B、34 C、51 D、85 68、在C语言中,合法的长整型常数是:( )。 A)0L B)4962710 C)0.054838743 D)2.1869e10 69、C语言中的函数( )。 A)嵌套调用和递归调用均可B)嵌套定义和嵌套调用均可 C)可以嵌套定义但不可以嵌套调用D)可以嵌套调用但不可以递归调用 70、计算平方数时最不可能引起二义性的宏定义是:( )。 A) #define SQR(x) x*x B) #define SQR(x) (x*x) C) #define SQR(x) (x)*(x) D) #define SQR(x) ((x)*(x)) 71、若有定义:enum weekday {mon,tue,wed,thu,fri} workday; 则( )是不正确的语句。 A)workday=(enum weekday)3;B)workday=(enum weekday)0; C)workday=4;D)workday=fri; 72、若C程序中含有如下定义: struct st{int x;int y;} struct st s1,s2; 则( )。 A)能编译、链接和运行B)编译时出错 C)能编译和链接,但不能运行D)能编译,但链接时出错 73、若有定义:float a=3.0,b=4.0,c=5.0;则表达式1/2*(a+b+c) 的值为:( )。 A)6.0 B)0.0 C)6 D)无答案 74、若有定义:int a,b;则表达式a=4,b=3,a+b+2,a=a+1,a+b+2的值为:( )。 A)10 B)11 C)12 D)无答案 75、若有定义和语句: char a=3,b=6,c; c=a^b<<2; 则c的二进制值是:( )。 A)00011000 B)00011100 C)00011011 D)00010100 76、若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、 b、c的语句是:( )。 A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d); C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d); 77、以下定义语句中正确的是(C) A)char a='A'b='B'; B)float a=b=10.0; C)int a=10,*b=&a; D)float *a,b=&a; 78、下列运算符中,优先级最高的是(A) 。 A)-> B)++ C)&& D) = 79、表达式!(x>0&&y>0)等价于(A) 。 A) ! (x>0) || ! (y>0) B) !x>0 || !y>0 C) !x>0 && !y>0 D) !(x>0) && ! (y>0) 80、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)。 A)abs(x-y)<10 B)x-y>-10&& x-y<10 C)!(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100 81、以下叙述正确的是:( )。 A)do_while语句构成的循环不能用其他语句构成的循环代替 B)do_while语句构成的循环只能用break语句退出 C)用do_while语句构成的循环,当while后的表达式值非零时结束循环 D)用do_while语句构成的循环,当while后的表达式值为零时结束循环 82、C语言源程序的基本单位是()。 A)过程B)函数 C)子程序D)标识符 83、设int x=1,*p=&x;则执行语句x=*p+x;后()。 A)语法错误B)x的值为2 C)x的值为1 D)x的值无法确定 84、下述程序的功能是:( )。 void main() { int i,j,pos,max,tmp,a[10]; printf("\ninput 10 numbers:\n"); for (i=0;i<10;i++) scanf("%d",&a[i]); for (i=0;i<10;i++) { pos=i;max=a[i]; for (j=i+1;j<10;j++)