答案:
B A B D B C A B D C A B A A D C D A B C B D C D D C C D A C A A A D C A C B B C C D D B A A B D B C A B D C A B A A D C D A B C B D C D D C C D A C A A A D C A C B B C C D D B A A B D B C A B D C A B
1.以下说法中正确的是( )
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
2. 下选项中不是C语句的是( )。
A) {int i; i++; printf(“%d\n”,i);}
B) ;
C) a=5,c=10
D) { ; }
3. 以下选项中不能作为C语言合法常量的是
( )
A) 'cd'
B) 0.1e+6
C) "\a"
D) '\011'
4. 若x,a,b和c均是int型变量,则执行表达式x=(a=1,b=2)后x的结果为( )。
A) 1
B) 2
C) 3
D) 不确定
5. 以下能正确定义整型变量a,b和c并为其赋初值1的语句是( )。
A) int a=b=c=1;
B) int a,b,c=1;
C) a=b=c=1;
D) int a=1,b=1,c=1;
6. 字符串"\t\065\xff\n"中的字符数(不算’\0’)为( )
A) 5
B) 14
C) 8
D) 4
7. 对两个静态函数A和B进行如下初始化:
char A[]="ABCDEF";
char B[]={'A','B','C','D','E','F'};
则下列叙述正确的是( )。
A) A和B完全相同
B) A和B只是长度相等
C) A和B不相同,A是指针数组
D) A数组长度比B数组长
8. 若有以下定义:
char a;int b;
float c;double d;
则表达式a*b+d-c值的类型为( )
A) float
B) int
C) char
D) double
9. 在C语言中,运算对象必须是整型数的运算符是( )
A) %
B) /
C) %和\
D) **
10. 有以下程序
main()
{ int x, y, z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
( )
A) 2,3,3
B) 2,3,2
C) 2,3,1
D) 2,2,1
11. 以下选项中,当x为大于1的奇数时,值为0的表达式是( )
A) x%2==1
B) x/2
C) x%2!=0
D) x%2==0
12. 以下程序的输出结果是( )。
main()
{
int x=10,y=3;
printf("%d\n",y=x/y);
}
A) 0
B) 1
C) 3
D) 不确定的值
13. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )
A) -3
B) 9
C) -12
D) 6
14. 有以下程序
main()
{
char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是
( )
A) b,b
B) b,c
C) a,b
D) a,c
15. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( )
A) 0
B) 1
C) 2
D) 3
16. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( )
A) 不定值
B) 4
C) 3
D) 1
17. 有以下程序段
int k=0;
while(k=1)k++;
while循环执行的次数是( )
A) 无限次
B) 有语法错,不能执行
C) 一次也不执行
D) 执行1次
18. 能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是( )
A) a>=10 or a=10
B) a>=0|a<=10
C) a>=10&&a<=0
D) a>=10||a<=0
19. 表示关系x≤y≤z的c语言表达式为( )
A) (x<=y)&&(y<=z)
B) (x<=y)AND(y<=z)
C) (x<=y<=z)
D) (x<=y)&(y<=z)
20. 设有:int a=1, b=2, c=3, d=4, m=3, n=3; 执行 (m=a>b)||(n=c>d)后n的值为( )。
A) 0
B) 1
C) 2
D) 3
21. 以下关于逻辑运算符两侧运算对象的叙述中正确的是
( )
A) 只能是整数0或1
B) 只能是整数0或非0整数
C) 可以是结构体类型的数据
D) 可以是任意合法的表达式
22. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y));
上面程序片段的输出结果是( )
A) 200
B) 100
C) 100 200
D) 输出格式符不够,输出不确定的值
23. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则( )
A) 称为函数的直接递归调用
B) 称为函数的间接递归调用
C) 称为函数的循环调用
D) C语言中不允许这样的递归调用
24. 以下程序的输出结果是( )
main()
{ int k=17;
printf("%d,%o,%x \n",k,k,k);
}
A) 17,021,0x11
B) 17,17,17
C) 17,0x11,021
D) 17,21,11
25. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( )。
A) INPUT x、y、z;
B) scanf("%d%d%d",&x,&y,&z);
C) scanf("%d%d%d",x,y,z);
D) read("%d%d%d",&x,&y;&z);
26. 有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0: prinft("%d",i);
case 2: prinft("%d",i);
default: prinft("%d",i);
}
}
程序运行后的输出结果是( )
A) 022111
B) 021021
C) 000122
D) 012
27. C语言中用于结构化程序设计的三种基本结构是( )
A) 顺序结构、选择结构、循环结构
B) if、switch、break
C) for、while、do-while
D) if、for、continue
28. 在嵌套使用if语句时,C语言规定else总是
( )
A) 和之前与其具有相同缩进位置的if配对
B) 和之前与其最近的if配对
C) 和之前与其最近的且不带else的if配对
D) 和之前的第一个if配对
29. 设有以下程序片段:
switch(X)
{
case 'A': printf("A");
case 'B': printf("B");
default: printf("error");
}
假设X='A',程序输出结果是( )
A) A
B) B
C) error
D) ABerror
30. 读程序:
main()
{ int num=0;
while (num<=2)
{ num++; printf("%d ",num);}
}
上面程序的输出结果是( )
A) 1
B) 2 2
C) 1 2 3
D) 1 2 3 4
31. 以下程序段的执行结果是( )。
int x=5;
do{printf("%2d\n",x--);}
while(!x);
A) 5
B) 无任何输出
C) 4
D) 陷入死循环
32. 设变量已正确定义,则以下能正确计算f=n!的程序段是
( )
A) f=0;
for(i=1;i<=n;i++) f*=i;
B) f=1;
for(i=1;i<n;i++) f*=i;
C) f=1;
for(i=n;i>1;i++) f*=i;
D) f=1;
for(i=n;i>=2;i--) f*=i;
33. 以下程序的输出结果是( )。
main()
{
int a, b;
for(a=1,b=1;a<=100;a++)
{
if(b>=10) break;
if(b%3==1)
{
b+=3;
continue;
}
}
printf("%d\n",a);
}
A) 101
B) 6
C) 5
D) 4
34. 下列合法的数组定义是( )。
A) int a[]="string";
B) int a[5]={0,1,2,3,4,5};
C) char a="string";
D) char a[]={0,1,2,3,4,5};
35. 以下定义语句中,错误的是( )
A) int a[]={1,2};
B) char *a[3];
C) char s[10]="test";
D) int n=5,a[n];
36. 以下正确的数组定义语句是( )。
A) int y[1][4]={1,2,3,4,5};
B) float x[3][]={{1},{2},{3}};
C) long s[2][3]={{1},{1,2},{1,2,3}};
D) int m[1][4]={4};
37. 以下程序的输出结果是( )。
main()
{
int i,a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258
B) 741
C) 852
D) 369
38. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )
A) a[0][4]
B) a[1][3]
C) a[0][3]
D) a[1][4]
39. 以下数组定义中不正确的是( )
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
40. 以下程序的输出结果是( )。
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650
B) 1470
C) 5430
D) 输出值不定
41. 以下程序的输出结果是
( )
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",cf[1]);;
}
A) "AAAA"
B) "BBB"
C) "BBBCC"
D) "CC"
42. 设有数组定义: char array [ ]="China"; 则数组 array所占的空间为( )
A) 4个字节
B) 5个字节
C) 6个字节
D) 7个字节
43. 以下选项中,不能正确赋值的是( )。
A) char s1[10];s1="Ctest";
B) char s2[]={'C','t','e','s','t'};
C) char s3[20]="Ctest";
D) char *s4="Ctest\n";
44. 给出以下定义:
char x[]="abcdfeg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为( )。
A) 数组x和数组y等价
B) 数组x和数组y长度相同
C) 数组x的长度大于数组y的长度
D) 数组x的长度小于数组y的长度
45. 若要求从键盘读入含有空格字符的字符串,应使用函数
( )
A) getc()
B) gets()
C) getchar()
D) scanf()
46. 有语句:
char str1[10],str2[10]={"books"};
则能将字符串books赋给数组str1的正确语句是( )。
A) str1={"Books"};
B) strcpy(str1,str2);
C) str1=str2;
D) strcpy(str2,str1);
47. 以下语句的输出结果是( )
printf("%d\n",strlen("\tc\065\xff\n"));
A) 5
B) 14
C) 8
D) 输出项不合法,无正常输出
48. 若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是( )。
A) a, point, *&a
B) &*a, &a, *point
C) *&point, *point, &a
D) &a, &*point, point
49. 设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )
A) float *p = 1024;
B) int *p = (float)x;
C) float p = &x;
D) float *p = &x;
50. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下可使指针p1指向变量b的赋值语句是( )。
A) p1=*p2
B) *p1=p2
C) p1=p2
D) *p1=*p2
51. 有以下程序
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10;p++)
printf("%d,",*p);
}
程序运行后的输出结果是( )
A) 1,2,3,4,5,6,7,8,9,0,
B) 2,3,4,5,6,7,8,9,10,1,
C) 0,1,2,3,4,5,6,7,8,9,
D) 1,1,1,1,1,1,1,1,1,1,
52. 若已定义char s[10]; 则在下面表达式中不能表示s[1]的地址的是( )。
A) s+1
B) s++
C) &s[0]+1
D) &s[1]
53. 在以下选项中,操作不合法的一组是( )。
A) int x[6], *p; p=&x[0];
B) int x[6], *p; *p=x;
C) int x[6], *p; p=x;
D) int x[6],p; p=x[0];
54. 以下叙述中正确的是( )
A) 全局变量的作用域一定比局部变量的作用域范围大
B) 静态(static)类别变量的生存期贯穿于整个程序的运行期间
C) 函数的形参都属于全局变量
D) 未在定义语句中赋初值的auto变量和static变量的初值都是随机值
55. 有以下程序
main()
{ char s[]="159",*p;
p=s;
printf("%c",*p++);
pritnf("%c",*p++);
}
程序运行后的输出结果是
( )
A) 15
B) 16
C) 12
D) 59
56. 以下语句或语句组中,能正确进行字符串赋值的是( )
A) char *sp; *sp="right!";
B) char s[10]; s="right!";
C) char s[10]; *s="right!";
D) char *sp="right!";
57. 下面程序段的运行结果是( )。
char *p= "abcdefgh";
p+=2;
printf("%d\n", strlen(strcpy(p, "ABCD")));
A) 6
B) 12
C) 4
D) 7
58. 下面程序段的运行结果是( )。
char str[ ]= "ABC", *p=str;
printf("%d\n", *(p+3));
A) 67
B) 0
C) 字符'C'的地址
D) 字符'C'
59. 以下程序运行后,输出结果是( )
main()
{ char *s="abcde";
s+=2;
printf("%d\n",s);}
A) cde
B) 字符c的ASCII码值
C) 字符c的地址
D) 出错
60. 有以下程序:
main()
{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n", strlen(p[4]));
}
执行后输出结果是( )
A) 2
B) 3
C) 4
D) 5
61. 若有语句:char *line[5];,以下叙述中正确的是( )
A) 定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C) 定义line是一个指针数组,语句中的*号称为间址运算符
D) 定义line是一个指向字符型函数的指针
62. 设有如下定义: char *aa[2]={"abcd","ABCD"};则以下说法中正确的是( )。
A) aa数组成元素的值分别是"abcd"和ABCD"
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D) aa数组的两个元素中各自存放了字符串"abcd"和"ABCD"的首地址
63. 以下函数调用语句中含有( )个实参。
fun((exp1,exp2),(exp3,exp4,exp5));
A) 1
B) 2
C) 4
D) 5
64. 以下所列的各函数首部中,正确的是( )
A) void play(var a :integer,var b:integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
65. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )
A) void
B) int
C) float
D) double
66. 下面的函数调用语句中func函数的实参个数是
( )
func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8)));
A) 3
B) 4
C) 5
D) 8
67. 有以下程序
fun(int x, int y)
{ static int m=0, i=2;
i+=m+1; m=i+x+y; return m;
}
main()
{ int j=1, m=1, k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
执行后的输出结果是
( )
A) 5, 5
B) 5, 11
C) 11, 11
D) 11, 5
68. 以下函数值的类型是
( )
fun ( float x )
{ float y;
y= 3*x-4;
return y;
}
A) int
B) 不确定
C) void
D) float
69. 以下程序的输出结果是
( )
fun(int x, int y, int z)
{ z=x*x+y*y; }
main()
{ int a=31;
fun(5,2,a);
printf("%d",a);
}
A) 0
B) 2
C) 31
D) 无定值
70. 有以下程序
void f(int x,int y)
{ int t;
if(x<y){ t=x; x=y; y=t; }
}
main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出的结果是( )
A) 3,4,5
B) 5,3,4
C) 5,4,3
D) 4,3,5
71. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
A) 地址传递
B) 单向值传递
C) 由实参传给形参,再由形参传回实参
D) 传递方式由用户指定
72. 有以下程序
void f(int b[])
{ int i;
for (i=2; i<6; i++)
b[i] *= 2;
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10}, i;
f(a);
for (i=0; i<10; i++)
printf("%d,", a[i]);
}
程序运行后的输出结果是( )
A) 1,2,3,4,5,6,7,8,9,10,
B) 1,2,6,8,10,12,7,8,9,10,
C) 1,2,3,4,10,12,14,16,9,10,
D) 1,2,6,8,10,12,14,16,9,10,
73. 在C语言中,函数返回值的类型最终取决于
( )
A) 函数定义时在函数首部所说明的函数类型
B) return语句中表达式值的类型
C) 调用函数时主调函数所传递的实参类型
D) 函数定义时形参的类型
74. 调用一个函数,此函数中没有return语句,下列说法正确的是:该函数( )。
A) 没有返回值
B) 返回若干个系统默认值
C) 能返回一个用户所希望的函数值
D) 返回一个不确定的值
75. 若有以下调用语句,则不正确的fun函数的首部是( )
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
A) void fun(int m, int x[])
B) void fun(int s, int h[41])
C) void fun(int p, int *s)
D) void fun(int n, int A)
76. 有以下程序
void swap(char *x, char *y)
{ char t;
t=*x; *x=*y; *y=t;
}
main()
{ char *s1="abc", *s2="123";
swap(s1,s2); printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是
( )
A) 123,abc
B) abc,123
C) 1bc,a23
D) 321,cba
77. 以下程序的输出结果( )
#include<stdio.h>
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\n", a,b,c);
}
A) 5,2,3
B) -5,-12,-7
C) -5,-12,-17
D) 5,-2,-7
78. 已定义以下函数
int fun( int *p)
{ return *p; }
fun函数返回值是
( )
A) 不确定的值
B) 一个整数
C) 形参p中存放的值
D) 形参p的地址值
79. 已定义以下函数:
fun (char* p2, char* p1)
{ while ((*p2=*p1) != '\0') {pl++;p2++;} }
函数的功能是
( )
A) 将p1所指字符串复制到p2所指内存空间
B) 将pl所指字符串的地址赋给指针p2
C) 对pl和p2两个指针所指字符串进行比较
D) 检查p1和p2两个指针所指字符串中是否有'\0'
80. 有以下程序
#include <stdio.h>
int fun(int a, int b)
{ if (b==0) return a;
else return (fun(--a, --b));
}
main()
{ printf("%d\n", fun(4, 2)); }
程序的运行结果是( )
A) 1
B) 2
C) 3
D) 4
81. 以下程序的输出结果是
( )
int a,b;
void fun()
{ a=100; b=200; }
main()
{ int a=5, b=7;
fun();
printf("%d%d \n", a,b);
}
A) 100200
B) 57
C) 200100
D) 75
82. 以下程序的输出结果是
( )
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
A) 20
B) 24
C) 25
D) 15
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. 若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( )
A) 1.4
B) 1
C) 2
D) 2.00000
85. 以下合法的C语言赋值语句是( )。
A) a=b=58
B) k=int(a+b);
C) a=58,b=59
D) --i;
86. 数字字符'0'的ASCII值为48,若有以下程序
main()
{
char a='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是( )
A) 3,2
B) 50,2
C) 2,2
D) 2,50
87. 有以下程序段
int a, b, c;
a=10; b=50; c=a;
if (a>b) a=b, b=c; c=a;
printf("a=%d b=%d c=%d\n", a, b, c);
程序的输出结果是( )
A) a=10 b=50 c=10
B) a=10 b=50 c=30
C) a=10 b=30 c=10
D) a=50 b=30 c=50
88. 下面程序段的运行结果是( )
char a[ ]= "language", *p;
p=a;
while (*p !='u') { printf("%c",*p-32); p++; }
A) LANGUAGE
B) language
C) LANG
D) langUAGE
89. 设有定义:int a; float b; 执行 scanf("%2d%f",&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是
( )
A) 876和543.000000
B) 87和6.000000
C) 87和543.000000
D) 76和543.000000
90. 设变量定义为int A=5,B=6,表达式(++A==B--)?++A:--B的值是( )。
A) 5
B) 6
C) 7
D) 8
91. 若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是( )
A) a[g-c]
B) a[4]
C) a['d'-'c']
D) a['d'-c]
92. 有以下程序
#include "stdio.h"
int abc(int u,int v);
main ()
{
int a=24,b=16,c;
c=abc(a,b);
printf("%d\n",c);
}
int abc(int u,int v)
{ int w;
while(v)
{ w=u%v; u=v; v=w }
return u;
}
输出结果是( )
A) 6
B) 7
C) 8
D) 9
93. 有以下程序
main()
{ char a,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:6,5,65,66<回车> ,则输出结果是( )(注:字符'A'的ASCII码为65)
A) 6,5,A,B
B) 6,5,65,66
C) 6,5,6,5
D) 6,5,6,6
94. 下列程序的输出结果是( )
main()
{ char *p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str); }
A) xyabcAB
B) abcABz
C) ABabcz
D) xycdBCD
95. 有以下程序
# include <stdio.h>
main()
{ int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d %d \n",*p,*q);
}
程序运行后的输出结果是( )
A) 运行后报错
B) 6 6
C) 6 11
D) 5 10
96. 有以下程序
#include <stdio.h>
main()
{ int i,j, m=55;
for(i=1;i<=3;i++)
for(j=3; j<=i; j++) m=m%j;
printf("%d\n ", m);
}
程序的运行结果是( )
A) 0
B) 1
C) 2
D) 3
97. 有以下程序
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
执行后输出的结果是( )
A) 2
B) 3
C) 4
D) 编译时有错,无结果
98. 若以下选项中的变量已正确定义,则正确的赋值语句是( )
A) x1=26.8%3;
B) 1+2=x2
C) x3=0x12;
D) x4=1+2=3;
99. 在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出是( )
#include<stdio,h>
main()
{ char ch;
while((ch=getchar())!='\n')
{ if(ch>='A' && ch<='Z') ch=ch+32;
else if(ch>='a' && ch<='z') ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
A) ABCdef
B) abcDEF
C) abc
D) DEF
100. 有以下程序
#include <string.h>
main()
{
char p[]={'a','b','c'}, q[10]={'a','b','c'};
printf("%d %d\n",strlen(p),strlen(q));
}
以下叙述中正确的是
( )
A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B) 由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C) 由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D) 由于p和q数组中都没有字符串结束符,故长度都不能确定