f(int b[],int n) { int i,r; r=1;
for(i=0;i<=n;i++) r=r*b[i]; return r; }
void main()
{ int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3);
printf(\}
[B]
A. 720 B. 120 C. 24 D. 6 3.执行下列程序后的输出结果是____。 #include
{ char a[]=\
printf(\}
[A]
A. D B. C C. B D. A 4.执行下列程序后的输出结果是____。 #include
{ if(n==0) return a[0];
else return f(a,n-1)+a[n]; } main()
{ int x[]={1,3,5,7,9}; printf(\}
[D]
A. 1 B. 4 C. 9 D. 16 5.以下程序执行后的输出结果是______。 int f(int b[][4]) { int i,j,s=0;
for(j=0;j<4;j++) { i=j;
if(i>2) i=3-j; s+=b[i][j]; }
return s;
2分2分2分
}
void main( )
{ int a[4][4]={{1,2,3,4},{0,2,4,6}, {3,6,9,12},{3,2,1,0}}; printf(\}
[D]
A. 12 B. 11 C. 18 D. 16 6.以下程序的运行结果是____。 #include \
#define FUDGE(y) 2.84+y
#define PR(a) printf(\#define PRINT1(a) PR(a); putchar('\\n') main()
{ int x=2;
PRINT1(FUDGE(5)*x); }
[B]
A. 11 B. 12 C. 13 D. 15 7.设有以下宏定义: #define N 3
#define Y(n) ((N+1)*n)
执行语句z=2*(N+Y(5+1));后,z的值为_____________。 [C]
A. 出错 B. 42 C. 48 D. 54 8.有如下程序 #define N 2 #define M N+1 #define NUM 2*M+1 main()
{ int i;
for(i=1;i<=NUM;i++)printf(\}
该程序中的for循环执行的次数是______。 [B]
A. 5 B. 6 C. 7 D. 8 9.以下程序的输出结果是______。 #define SQR(X) X*X main()
{ int a=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m); printf(\ } [B]
A. 16 B. 2 C. 9 D. 1
2分2分2分2分2分
10.下列宏定义命令中,____格式是正确的。 [D]
A. #define pi=3.14159; B. define pi=3.14159 C. #define pi=\11.宏定义为“#define div(x,y) x/y;”,若语句
“printf(\\\n\-3));”作宏替换后为____。 [C]
A. printf(\-3)); B. printf(\-3);
C. printf(\-3;); D. printf(\-3;); 12.下列程序的输出结果____。 #define PT 5.5
#define S(x) PT*x*x #include
{ int a = 1,b = 2;
printf(\}
[A]
A. 9.5 B. 18.5 C. 27.5 D. 49.5 13.下列程序的输出结果为____。 #include
void sort(int a[],int n); for(i=0;i<10;i++){ m=-m; x[i]=m*i; }
sort(x,10);
for(i=0;i<10;i++)
printf(\}
void sort(int a[],int n) { int i,j,t;
for(i=1;i<10;i++){ t=a[i];
for(j=i-1; j>=0; j--) if(t>a[j]) break; else a[j+1]=a[j]; a[j+1]=t; }
2分2分2分
}
[B] 2分
A. -9 -7 -5 -3 -1 0 2 4 6 8 B. -8 -6 -4 -2 0 1 3 5 7 9 C. 0 -1 2 -3 4 -5 6 -7 8 -9 D. 0 1 -2 3 -4 5 -6 7 -8 9
二、程序填空题 (10分)
1. 输入一个整数,输出它的二进制序列。#include
{ int a[32],x,i,m;
int change(int x,int a[]); scanf(\ m=change(x,a); for(i=0;i printf(\} int change( __(1)__ ) { int n=0,t,k; do { a[n]=x%2; __(2)__; n++; }while(x!=0); for(k=0;k return n; } (1)答案 2分 int x,int a[] (2)答案 2分 x=x/2 (3)答案 1分 a[k]=a[n-1-k] 5分 2. 输入一个6行、6列的数组,将每一行的所有元素都除以该行的主对角线元素,然后以行列对齐格式输出该数组。 #include { int a[6][6],i,j; void f(int a[][6],int m,int n); for(i=0; i<6;i++) for(j=0;j<6;j++) scanf(\ __(2)__; for(i=0; i<6;i++){ for(j=0;j<6;j++) printf(\ __(3)__ ; } } void f(int a[][6],int m,int n) { int i,j,t; for(i=0;i a[i][j]= __(5)__ ; } } 5分 (1)答案 1分 &a[i][j] (2)答案 1分 f(a,6,6) (3)答案 1分 printf(\ (4)答案 1分 a[i][i] (5)答案 1分 a[i][j]/t 三、程序设计题 (10分)