一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1.以下不正确的C语言标识符是()
A. AB1
B._ab3
C. char
D. a2_b
A. 4
B. 8
C. 16
D. 32
3,对于类型相同的两个指针变量之间,不能进行的运算是()
A. <
B.=
C.+
D.-
A. 最多执行 10 次
B. 最多执行 9 次
C. 是无限循环
D. 循环体一次也不执行
5,下列数组定义正确的是()
A. int a[5],b[2,3];
B. char no(30);
C. char x[];
D. int x[5]={1,2,3};
A. scanf(“%Pf”,&x,&a);
B. scanf(“%f%lf”,&x.&a);
C.scanf(“%lf%f”,&x,&a);
D. scanf(“%lf%lf”,&x,&a);
7.若变量已正确定义,执行语句scanf("%d,%d,%d ",&kl,&k2,&k3);时,()的输入。
A. 2030,40
B. 20 30 40
C. 20,30 40
D. 20,30,40
A. 10
B. 20
C. 30
D. 40
下面程序的输出结果是()
#include
void main
{ intx=10,y=10;
printf(“%d %dn”,x–,–y);
}
A. 10 9
B. 9 9
C. 9 10
D. 10 10
如果在一个函数的复合语句中定义了一个变量,则该变量()
A.只在该复合语句中有效,在该复合语句外无效
B. 在该函数中任何位置都有效
C.在本程序的源文伴范围内均有效
D.此定义方法错误,其变量为非法变量
A. 不确定
B. float
C. void
D. int
12,函数说明语句正确的是()
A. int Function(void A);
B. void Function(int);
C. int Function(A):
D.void Function(int)
13,函数调用语句: d=max(a,max(b.c.d),e):中实参的个数为
A.1
B. 2
C. 3
D. 4
14.以下能正确定义数组并正确赋初值的语句是()
A. intn=5,a[3][n];
B. int b[1][5]={{1},{3}};
C. int c[2]0={{1,2},{3,4}}:
D. int d[][2]={{1,2},{3,4)};
15,下列程序运行后的输出结果是()
#include
void sub(int x,int y,int *z)
{*z=y-x; }
void main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf(“%d,%d,%dln”,ab,c);
}
A.-5,-12,-7
B. 5,-2,-7
C.-5,-12,-17
D. 5,2,3
A. ‘x’
B. у
C. ‘z’
D. ‘\0’
A. (a[1]+1)
B. (&a[1][1])
C. ((a+1)[1])
D. *(a+5)
A.说明不合法
B. 19
C. 18
D. 15
19,已知有宏定义#define SQR(a) 2aa,则SQR(3+4)的值为()
A. 22
B. 32
C. 98
D. 18
A. struct
B. typedef
C. Enum
D. Union
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)
1_______
#include
int main() {
int x = 1, a = 1, b = 1;
switch (x) {
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
break;
}
printf("a=%d, b=%d\n", a, b);
return 0;
}
2________
#include
int main() {
int i = 0, s = 0;
do {
s += i * 2 + 1;
i++;
} while (s < 10);
printf("i=%d, s=%d\n", i, s);
return 0;
}
3______
#include
int main() {
int k = 2;
while (k < 7) {
if (k % 2) {
k = k + 3;
printf("k-%d\n", k);
continue;
}
k = k + 1;
printf("k=%d\n", k);
}
return 0;
}
4_______
#include
int LA(int *a, int n) {
int i, s = 0;
for (i = 0; i < n; i++) {
s += a[i];
}
return s;
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
int b = LA(a, 5) + LA(a + 1, 3);
printf("b=%d\n", b);
return 0;
}
5_______
#include
int WF(int x, int y) {
static int k;
x = x + y;
y += x;
k += x + y;
return k;
}
int main() {
int x = 3, y = 5;
printf("%d, %d\n", WF(x, y), WF(x, y));
return 0;
}
程序填空题(每空 5分,共 35分。请将答案填写在答题纸的相应位置上。).求满足下式的 x,y,z。
XYZ
+YZZ
532
#include
{ int maintintxyitesult=532
for (x=1;_____;x++)
for (y=1; y<=9 y+)
for (_z<=9;z++)
{
i=③+(100y+10z+2);
if (i=result) printf(“x=%d, y=%d, z=%dln”,x.y,z);
}
return 0;
}
2. 程序功能:输入一数字后,将输入的数字颠倒后输出。
#include “stdio.h”
int main()
{
int numb,rdigit;
scanf(“%d”,&numb);
while(①r)
{
digit-numb%10;
printf(“%d”,)
numb/=10;
printf(“\n”);
return 0;
}
3. 程序功能:下面的程序输入 10 个整数,按升序排序后输出。完善程序。
#include
void Swap(int *x,int *y)
int t = *x;
①
*y=t;
}
void Sort(int *array, int n)
{
int i, j;
for (i=n-1;i>0;–i)
{
for (j= 0; j if (array[i]>array[j+1])
② ;
}
}
int main()
{
int a[10],i;
for(i=0;i<10;i++)scanf(“%d”,&a[i)):
Sort(a,10);
for(i=0;i<10;i++)
printf(“%d”,a[i]);
returm 0;
}
四、编程题(本大题共3小题,每小题15分,共45分,请在答题纸的相应位置上作答。)