高级语言程序设计
一、C语言基础知识
1.在C语言中,合法的字符常量是()。
(A) '字'
(B) "A"
(C) "ABC"
(D) '\x41'
2.复合语句的定界符是()。
(A) [ ]
(B) { }
(C) ( )
(D) /* */
3.下列叙述错误的是()。
(A) C源程序必须先编译链接成可执行程序才能执行
(B) main()函数不能有返回值
(C) 结构化程序设计的三种基本控制结构是:顺序、选择、循环
(D) 函数是C源程序的基本单位
4.下列叙述错误的是()。
(A) 注释行可单独占用一行,也可跟在语句的后面
(B) 注释部分可增加程序的可读性
(C) 注释部分的定界符是\* *\
(D) 注释部分在可执行程序中不存在
5.下列叙述正确的是()。
(A) 所有语句都必须以分号";"结束
(B) 构成C源程序的基本单位是语句
(C) main()函数只能位于源程序开头
(D) 所有函数名都可以由用户命名
6.下列叙述错误的是()。
(A) 一个C源程序可由一个或多个函数组成
(B) 一条语句可分多行书写
(C) C源程序必须包含一个且只能有一个main()函数
(D) 多条语句不能书写在同一行
二、C语言基本数据类型和运算符
7.C语言的下列运算符中,优先级最高的运算符是()。
(A) ++
(B) +=
(C) ||
(D) !=
8.C语言的基本数据类型包括()。
(A) 整型、浮点型、数组型
(B) 整型、浮点型、字符型
(C) 整型、字符型、结构体类型
(D) 整型、浮点型、指针型
9.下列不合法的实型常量是()。
(A) 2.3f
(B) 1e-2
(C) 10e0.3
(D) 3.14e2
10.下列不合法的字符常量是()。
(A) 'A'
(B) 'a'
(C) '3'
(D) "n"
11.下列不合法的自定义标识符是()。
(A) int
(B) a
(C) a3
(D) b_1
12.下列不合法的整型常量是()。
(A) 0xA3
(B) 082
(C) 1000L
(D) 46
A'的ASCII码的十进制值为65, ’0’的ASCII码的十进制值为48,则以下程序运行结果是()。main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
(A) 67,D
(B) C,D
(C) C,68
(D) 67,68
13.下列语句错误的是()。
(A) int a,b;
(B) char c=65;
(C) int m=n=1;
(D) char s[]="hello!";
14.若已定义:float a,b;下列表达式错误的是()。
(A) a+=b+5
(B) a+b=5
(C) a=b=1
(D) a= 'P'+2.0
15.若已定义int a=3,b=4,c=5; 表达式a>b?a+c:b+c的值是()。
(A) 3
(B) 4
(C) 8
(D) 9
16.若已定义:int a=1,b=2,c=3;表达式(a+=2,a+b,a-c)的值是()。
(A) -2
(B) 0
(C) 1
(D) 2
17.若已定义int a=-2,b=4;表达式a*=b+1的值是()。
(A) -11
(B) -10
(C) -7
(D) -6
18.下列语句中,符合C语言语法的赋值语句是()。
(A) a=7+b+c=a+7;
(B) a=7+b++=a+7;
(C) a=7+b,b++,a+7;
(D) a=7=b,c=a+7;
19.若已定义:int a=10,b=20,c=30; 表达式(++a)+b%c的值是()。
(A) 10
(B) 11
(C) 30
(D) 31
20.若已定义int a=10,b=20,c=3; 表达式a/b*c的值是()。
(A) 0
(B) 0.5
(C) 1
(D) 1.5
21.若已定义int x=45; 表达式x%10/2的值为()。
(A) 0
(B) 1
(C) 2
(D) 3
22.能正确表示变量x不属于区间[-3,5]的是()。
(A) 5<=x<=-3
(B) x>=-3 && x<=5
(C) x>=-3||x<=5
(D) x<-3||x>5
23.若已定义:int m=15; 能正确表示m既能3整除也能5整除的是()。
(A) (m/3==0) && (m/5==0)
(B) (m/3==0)||(m/5==0)
(C) (m%3)==0 && (m%5)==0
(D) (m%3==0)||(m%5==0)
24.以下程序运行时,若从键盘输入5,则输出结果是()。
main()
{ int a;
scanf("%3d”,&a);
if(a++>5) printf("%d\n",a);
else printf("%d\n",a--);
}
(A) 7
(B) 4
(C) 5
(D) 6
25.若已定义float x; 要从键盘输入6.58给变量x,应选用()语句。
(A) scanf("%3.2f",&x) ;
(B) scanf("%1.2f",&x) ;
(C) scanf("%4.3f",&x) ;
(D) scanf("%f",&x) ;
26.以下程序的运行结果是()。
#include
#include
int main()
{
char a=97,c='A';
printf("%c-%c=%d\n",a,c,a-c);
getch( );
return 0;
}
(A) A-A=0
(B) 97-A=97
(C) a-A=32
(D) 97-A=32
27.若已定义int a=2,b=3; 要实现输出内容为: 2+3=5,应使用语句()。
(A) printf("a+b=%d\n",a+b);
(B) printf("a+b=a+b\n");
(C) printf("%d+%d=a*b\n",a,b);
(D) printf("%d+%d=%d",a,b,a+b);
28.要使用以下程序段给变量a,b,c分别赋值’a’, ’b’, ’c’,正确的输入格式是()。char a,b,c;
scanf("%c%c%c",&a,&b,&c);
(A) a b c
(B) a,b,c
(C) abc
(D) 'a' 'b' 'c'
29.要使用以下程序段给变量a,b分别赋值1,2,正确的输入格式是()。
scanf("%d,%d”,&a,&b);
(A) 1-2
(B) 1:2
(C) 1,2
(D) 1 2
30.有以下程序:
main()
{ int c;
while((c=getchar())!= '\n')
{ switch(c-'2')
{ case 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4); break;
case 3 : putchar(c+3);
default: putchar(c+2); break;
}
}
printf("\n");
}
31.当输入:247↙回车,程序的输出结果是()。
(A) 689
(B) 6689
(C) 66778
(D) 66887
32.若已定义int m=2,t=0;执行t=m+'0';语句后,变量t的值为()。(注:’0’的ASCII码值为48)
(A) 2
(B) 0
(C) 48
(D) 50
33.若已定义int a=-1,b=1;执行b=(!a)+b;语句后,变量b的值为()。
(A) 1
(B) 2
(C) 0
(D) 3
34.若已定义: int a=3,b=2,c=1; 表达式(int)5.8%a+b/4+(c++)的值为()。
(A) 4
(B) 3
(C) 3.5
(D) 4.5
35.若已定义:int m=-1,n=0,t=1; 下列表达式值为0的是()。
(A) m||n
(C) !m
(D) (m++)&&(++n)
36.算术运算符"/"按运算对象的个数属于()。
(A) 单目运算符
(B) 双目运算符
(C) 三目运算符
(D) 四目运算符
37.以下程序段的运行结果是()。
int a=15,b=6,c;
c=a^b;
printf("a=%d,b=%d,c=%d\n",a,b,c);
(A) a=15,b=6,c=9
(B) a=15,b=6,c=21
(C) a=6,b=15,c=9
(D) a=6,b=15,c=21
38.以下程序段的运行结果是()·
int a=6,b=5,c;
c=(a>>1)|(b<<1);
printf("a=%d,b=%d,c=%d\n",a,b,c);
(A) a=6,b=5,c=11
(B) a=3,b=5,c=11
(C) a=3,b=10,c=13
(D) a=3,b=5,c=5
39.以下程序段的运行结果是()。
int a,b=3;
a=b<<2;
printf("a=%d,b=%d\n",a,b);
(A) a=12,b=3
(B) a=12,b=12
(C) a=3,b=3
(D) a=3,b=12
40.以下程序段运行后,变量a,b,c的值分别是()。int a,b=4,c=5;
a=b&c;
(A) 4,4,5
(B) 5,4,5
(C) 5,4,4
(D) 5,5,5
三、控制结构
41.以下程序运行后a的值是().
main()
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1) { b+=3; continue; }
b-=5;
}
}
(A) 101
(B) 100
(C) 8
(D) 7
42.若已定义:int a,b,c;下列程序段编译时不会出现语法错误的是:
(A) if(a==b) then
c=0;
(B) if a==b then
c=0;
(C) if(a==b)
c=0;
else
c=1;
(D) if(a==b);
c=0;
else
c=1;
43.在嵌套的if…else语句中,有关else描述正确的是()·
(A) 不能出现在循环语句中
(B) 可以单独出现,不需要与if配对
(C) 与缩进位置相同的if配对
44.在循环体中,continue语句的作用是()。
(A) 结束本次循环,继续下一次循环
(B) 跳出本层循环,接着执行该循环后续的语句
(C) 暂停本次循环,等待击键继续
(D) 结束函数调用
45.下列关于do…while语句与while语句描述正确的是()。
(A) while语句中的循环体至少无条件执行一次,do…while语句中的循环体可能都不执行
(B) do…while语句中的循环体至少无条件执行一次, while语句中的循环体可能都不执行
(C) do…while语句中的循环体可使用break语句, while语句中的循环体不允许出现break语句
(D) do…while语句适用于循环次数已知的场合,而while语句适用于循环次数未知的场合
46.下列程序段不会出现无限循环的是()。
(A) int i=-1;
while(1)
i++;
for(i=1;;i++)
a+=2;
(C) int i=2;
while(i==4)
i+=2;
(D) int i=2
while(i=4)
i+=2;
47.以下程序段的运行结果是()。
int x=3;
do{
printf("%3d", x-=2 );
}while(!(--x));
(A) 1
(B) 30
(C) 死循环
(D) 1, -2
48.若已定义:int m=-1,n=2; 以下程序段的运行结果是()·if(m)
m+=2;
else
m++;
n++;
printf("%d,%d\n",m,n);
(A) 0,3
(B) 1,3
(C) 0,2
(D) 1,2
49.以下程序的运行结果是()·
#include
#include
int main( )
{
int a=1,b=1,c=2;
if(a=2)
b=(++c);
else
b=(c--);
printf("%d,%d\n",b,c);
getch( );
return 0;
}
(A) 2,1
(C) 3,3
(D) 1,1
50.以下程序的运行结果是()。#include
#include
int main( )
{
int a=1,b=2;
switch(a)
{
case 0:
a++;
b++;
case 1:
a+=1;
b+=2;
case 2:
a+=2;
b+=3;
}
printf("%d,%d\n",a,b);
getch( );
return 0;
}
(A) 1,2
(B) 2,3
(C) 2,4;
(D) 4,7
51.以下程序的运行结果是()。#include
#include
int main( )
{
int a=1,b=2;
switch(a++)
{
case 0:
b=b+1;
break;
case 1:
b+=2;
break;
case 2:
b+=3;
break;
}
printf("%d,%d\n",a,b);
getch( );
return 0;
}
(A) 1,5
(B) 1,4
(C) 2,4
(D) 2,5
52.以下程序的运行结果是()。
#include
#include
int main( )
{
int a=-1,b=1,c=2;
if(!a)
b=++c;
else
b=c--;
printf("%d,%d\n",b,c);
getch( );
return 0;
}
(A) 2,1
(B) 1,1
(C) 3,2
(D) 3,3
53.下列程序段中,非死循环的是()。
(A) int i=100;
while(1)
{ i=i%100+1;
if(i>=100) break;
}
(B) int k=0;
do{
++k;
}while(k>=0);
(C) int s=10;
while(++s%2+s%2) s++;
(D) for(;;)
54.以下程序段运行后,x的值为()·int i=1,x=0;
while( (++i)<=5)
{
x+=2;
}
(A) 14
(B) 12
(C) 10
(D) 8
55.以下程序段运行后,x的值为()·
int i,x=0;
for(i=4;i>=0;i--)
x=(x+1)*3;
(A) 54
(B) 66
(C) 120
(D) 363
56.以下程序段运行后i的值为()·
int i=3;
while(i<10)
{
if(i==5)
break;
i=i+2;
}
(A) 3
(B) 5
(C) 12
(D) 11
57.以下程序段运行后i的值为()。
int i=1;
while(i<10)
{
if(i==9)
{
i++;
continue;
}
i=i+2;
}
(A) 9
(B) 10
(C) 11
(D) 12
58.以下程序段运行时,语句k+=2; 的执行次数是()。
for(i=7;i>1;i-=2)
k+=2;
(A) 3
(B) 2
(C) 1
(D) 4
四、数组
59.设已定义char s[ ]="\"Name\\Address\023\n";,则字符串所占的字节数是()。
(A) 19
(B) 16
(C) 18
(D) 14
60.若已定义int a[10]; 对数组a中元素引用不正确的是()。
(A) a[2*2]
(B) a[5/2]
(C) a[3-4]
(D) a[8+1]
61.下列对一维数组a的定义中,正确的是()。
(A) int a[4]={0,1,2,3,4};
(B) int a[]={0,1,2,3,4};
(C) int n=5;int a[n]={0,1,2,3,4};
(D) int a[];
62.若已定义:int a[]={10,12,23,24,35}; 则a[2-1]元素的值为()
(A) 10
(B) 12
(C) 23
(D) 24
63.以下程序的运行结果是()。
#include
#include
int main( )
{
int a[]={10,12,23,24,35},i,sum=0;
for(i=1;i<5;i+=2)
sum+=a[i];
printf("%d\n",sum);
getch( );
return 0;
}
(A) 12
(B) 35
(C) 36
64.以下程序的运行结果是()。
#include
#include
int main( )
{
int a[5]={1,3,5,8,10},i=1,s=0;
while(i<5)
{
if(a[i]%2!=0)
s+=a[i];
i++;
}
printf("%d\n",s);
getch( );
return 0;
}
(A) 6
(B) 8
(C) 9
(D) 18
65.若已定义int a[][4]={1,-2,3,-4,5,-6,7,-8};,则表达式a[0][2]+a[1][1]的值为()。
(A) 3
(B) -3
(C) 10
(D) -8
66.若已定义int a[5][3]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};,无法正确引用数组a元素的是()。
(A) a[0][0]
(B) a[4][1]
(C) a[5][1]
67.正确定义二维数组a的语句是()。
(A) int a[5]8;
(B) int a(5,8);
(C) int a[5][8];
(D) int a{5},{8};
68.以下程序段的运行结果是()·
int a[2][4]={1,2,3,4,5,6,7,8};
printf("%d\n",a[1][3]-a[0][2]);
(A) 2
(B) 5
(C) 4
(D) 3
69.以下程序段的运行结果是()·
int a[3][3]={1,2,3,4,5,6,7,8,9},i;
for(i=2;i>=0;i--)
printf("%2d”,a*i+*2-i]);
(A) 7 5 3
(B) 1 5 9
(C) 9 5 1
(D) 3 5 7
70.设有下列语句,则()是对a数组元素的不正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
(A) a[p-a]
(B) *(&a[i])
(C) p[i]
(D) *(*(a+i))
71.无法输出字符串”her"的程序段是()。
(A) char a[ ]={'h','e','r','\0'};
puts(a);
(B) char a[4]={'h','e',0,'r'};
puts(a);
(C) char a[ ]={'h','e','r',0};
puts(a);
(D) char a[4]={'h','e','r','0'-48};
puts(a);
72.以下程序段的运行结果是()。
char a[]="abcefg",b[]="bmn";
int i;
for(i=0;i<3;i++)
a[i]=b[i];
puts(a);
(A) bmnabc
(B) mn
(C) bmnefg
(D) abcbmn
73.若已定义char a[10],b[10]="Health!"; 使数组a存储Health!"的语句是()。
(A) strcpy(b,a);
(B) strcpy(a,b);
(C) strcat(b,a);
(D) strcat(a,b);
74.若已定义char a[30]="Health!",b[10]="Happy!"; 使数组a存储”Health!Happy!"的语句是()。
(A) strcpy(b,a);
(B) strcat(a,b);
(C) strcpy(a,b);
(D) strcat(b,a);
75.若已定义char s[20]="HAPPY!"; 则函数strlen(s)的值是()。
(A) 20
(B) 5
(C) 8
(D) 6
76.设有下列语句:
char str1[]="string",str2[8],*str3,*str4="string";
则()是对库函数strcpy的不正确调用。此函数用来复制字符串。
(A) strcpy(str3,"HELLO3");
(B) strcpy(str2,"HELLO2");
(C) strcpy(str1,"HELLO1");
(D) strcpy(str4,"HELLO4");
注:该题所有选项在TC4.0下全部调试通过,连warning都没有。
五、函数
77.下列叙述错误的是()。
(A) 定义函数时函数名前省略类型符,则默认为int型
(B) 若函数无返回值,在定义函数时类型符为void
(C) 定义函数时函数名前省略类型符,则默认为float型
(D) 定义函数时必须指明函数名
78.下列叙述错误的是()。
(A) 若要定义静态类变量,在定义变量的类型名前应使用关键字static
(B) 函数体内定义的变量,若无明确其存储类型,则默认为auto类变量
(C) 全局变量的作用域是从其定义处起至本程序结束处
(D) 局部变量的作用域是从其定义处起至本程序结束处
79.以下程序的运行结果是()。
#include
#include
int fun(int x)
{
if(x==1)
return 0;
else
return 2*x;
}
int main( )
{
int i;
for(i=1;i<=3;i++)
printf("%3d”,fun(i));
getch( );
return 0;
}
(A) 2 4 6
(B) 0 2 3
(C) 0 4 6
(D) 2 3 6
80.函数定义时使用()类型符,则表示该函数无返回值。
(A) void
(B) float
(C) empty
(D) double
81.以下程序段的运行结果是()。
main()
{ int i=4,j;
j=i;
pic(i+2*j-2,'*');
putchar('\n');
for(j-=2;j>=0;j--)
{ pic(3-j, ' ');
pic(i+2*j, '*');
putchar('\n');
}
}
pic(int len,char c)
{ int k;
for(k=1;k<=len;k++) putchar(c);
}
(A) Triangle
(B) Rectangle
(C) Trapezoid
(D) Inverted Trape
*****注:该题不可能有这种结果出现。实际结果是4排星号,分别是10个,8个,6个和4个,整个图形轴对称
82.以下程序的运行结果是()。
#include
#include
int larger(int x,int y)
{
return x>y?x:y;
}
int main( )
{
int a=3,b=9,c=5,m,n,k;
m=larger(a,b);
n=larger(a,c);
k=larger(larger(a,b),c);
printf("%d,%d,%d\n",m,n,k);
getch( );
return 0;
}
(A) 9,5,9
(B) 5,9,9
(C) 9,9,5
(D) 5,9,5
83.以下程序的运行结果是()·
fun3(int x)
{static int a=3;
a+=x;
return a;
}
main()
{int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
(A) 3
(B) 4
(C) 6
(D) 9
六、指针
84.以下程序的运行结果是()·
voi ast (int x,int y,int *cp,int *dp)
{
*cp=x+y; *dp=x-y;
}
main()
{ int a=4,b=3,c,d;
ast(a,b,&c,&d);
printf("%d,%d\n",c,d);
}
(A) 7,1
(B) 1,7
(C) 7,-1
(D) c、d未赋值,编译出错
85.若已定义:int a=9,*pa=&a; float b=0.6,*pb=&b; 下列语句错误的是()。
(A) *pa=a*5;
(B) pa+pb;
(C) b=*pa+*pb;
(D) *pb=*pb+0.78;
86.若已定义int a=9,*p=&a; 下列描述错误的是()。
(A) &(*p)等价于p
(B) *p等价于a
(C) &a等价于p
(D) &p等价于a
87.若已定义:int a=9; int *p=&a; 对int *p=&a;语句应解释为()。
(A) 将变量a的值赋予指针变量p
(B) 定义p为整型变量
(C) 变量a的值赋予指针变量p所指向的变量
(D) 对p进行说明的同时进行初始化,使p指向a
88.若已定义:int a,*p; 使指针变量p指向a,应使用语句()。
(A) p=&a;
(B) p=a;
(C) p=*a;
(D) a=&p;
89.若已定义:int a=5,b,*pa=&a; 与b=a;语句等价的是()。
(A) b=*a;
(B) b=*pa;
(C) b=&pa;
(D) b=pa;
90.以下程序段的运行结果是().
enum week { aa,bb=2,cc,dd,ee }week=ee;
printf("%d\n",week);
(A) ee
(B) 5
(C) 2
(D) 4
91.以下程序的运行结果是()。
#include
#include
int main( )
{
int a[5]={3,5,7,9,11},*p,i;